论坛首页 入门技术论坛

oracle辅导(3--2)

浏览 1337 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-03  

数据字典

 

数据字典是由系统维护的,包含的数据库的信息

 

数据字典示图

user_XXXXX 用户示图

all_XXXXX  所有示图

dba_XXXXX  数据库中所有示图

v$_XXXXX   动态性能示图

 

dist distionary 表示数据字典的数据字典。

 

user_constraints 用户的表中约束的表

其中有constraints_name字段存放的是约束名,r_constraints_name字段表示外键引用子何处

这两个字段之间有自连接的关系,也就是约束名和外键约束名之间的自连接。

 

user_cons_column表,是用户的列级约束表

 

DML操作

 

insert操作,插入记录

 

insert into 表名 values(1,值2......);

注意这种方法插入记录时,要对所有字段进行插入,没有非空约束时,又不想插入值时,要用空值替代,并且要按照字段的顺序插值(要清楚表结构),且要注意数据类型一致。

 

insert into 表名(字段名1,字段名2.....) values(1,值2......);

这种方法可以对指定的字段进行插入,不想插值的就可以不写,前提是该字段没有非空约束。

 

例:insert into student value(1,'xxx','xxx');

    insert into student(id,name,address) value(1,'xxx','xxx');

 

update修改操作

 

update table 表名 set  字段名1=数据1或表达式1 字段名2=数据2或表达式2

[where ....=....];

 

例:

update shenfenzhen set num=99 where sid=2;

delete删除操作

 

delete from 表名 [where ...=...];

 

例:update shenfenzhen set num=99 where sid=2;

 

delete操作删除的记录可以通过 rollback命令回滚操作,会恢复delete操作删除的数据。

delete操作不会释放表所占用的空间,delete不是和删除记录多的大表。delete操作会占用大量的系统资源。

 

事务transaction

 

OLTP(联机事务处理 OnLine Transaction Process

 

原子操作,也就是不可分割的操作,必须一起成功一起失败。

 

要是实现一个原子操作,就要把这个原子操作(操作数据库数据(DML操作))放在事务中。

 

事务的结束动作 就是commit;语句 rollback;语句,DDLDCL语句执行会自动提交commit;

sqlplus正常退出是会做提交动作的commit;,当系统异常推出是,会执行回滚操作rollback;

 

事务的开始,一个事务的开始就是上一个事务的结束。

 

一个没有结束的事务,叫做活动的事务 (active transaction),活动的事务中修改的数据,只有本会话才能看见。

 

readcommited,只可以读取已经作提交操作的数据,本会话可以看到自己的所作的没有提交的操作。

 

在活动事务中,当多个用户同时对同一张表进行操作时,会对表加上表级共享锁,当用户对操作该表某一条记录进行操作时会对该条记录加上行级排它锁,只允许一个用户对该条记录进行DML操作,只有提交操作commit;或回滚操作rollback;时,才可让其他用户操作对该记录进行DML操作,也就是释放了该条记录的行级排它锁。如果没有提交操作或回滚操作,那么该用户就不能对该条记录加锁,该用户的DML操作就会进入等待状态,但是在对表作drop操作(DDL操作)时,如果还有用户在操作该表,也就是没有释放表级共享锁,就会直接报错。

 

事务越大,就会消耗更多的资源,并长时间持有事务会造成无法进行其他的操作,事物提交太频繁的话,会对I/O造成很大的负担,所以要合理确定事务的大小。

 

commit;提交操作,事物的结束

 

rollback;回滚操作,会将先前的活动事务中的操作(DML操作)的结果进行回滚,撤销全部操作,恢复成事务开始时的数据,也就是恢复成事务开始时的状态。

 

alter table命令

 

alter table 命令用于修改表的结构(这些命令不会经常用)

 

增加字段:

alter  table 表名 add(字段字,字段类型)

 

删除字段:

alter tbale 表名 drop column 字段; (8i 以后才支持)

 

给列改名:9.2.0才支持

alter table 表名 rename column 旧字段名 to 新字段名;

 

修改字段

alter table 表名 modify( 字段,类型)

(此时应注意的问题,更改时要看具体值情况之间的转达换, 改为字符类型时,必须要为空)

not null约束是使用alter table .. modify (..,not null),来加上的。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics