死锁
如上节讲的,如果A用户给一个表加了共享锁,而B用户也给同一个表加了
共享锁,那么A如果进行插入,删除,更新操作时,必须等待B来解锁,
而如果B又进行同样性质的操作,又在等A来解锁,这样就产生了死锁;
其实既然有锁,那就一定会有死锁;
Oralce数据库的表结构
通过图形化的界面可以直接创建表,而不一定是用SQL语句;
表的创建和维护:
create table tablename
(
...
...
);
number类型是int类型的父类型;
//凡是对表中数据操作的sql语句不需要带一个table关键字;
//而对表进行操作的sql,如create,drop,alter都需要带着
//table以表明是对表操作而不是表中的数据;
//对应着我们有insert,delete,update;
更改表:
添加列:alter table tablename add(新列名定义);
删除列:alter table tablename drop column 列名;
更改列:alter table tablename modify(列的重新定义);
增加约束:alter table tablename add constraint pk_stuno primary key(stuno);
删除约束:alter table tablename drop constraint pk_stuno;
rollback没什么用;确实没用;发现在数据库定义语言执行的过程中,没有事务的控制,做就直接做了,
这就引发了一个问题:有人在使用某个表的时候,我如果改变这个表的结构??
解决的办法是:alter table tablename set unused column 列名;
数据字典:desc user_constraints;
表分区:
范围分区法:按照逻辑上的分段在物理存储上也相应分区;
散列分区法:
符合分区:范围与散列的总结,先进行大的范围分区,然后在
小范围中进行散列分区;
列表分区:当要参考分区的列的值没有边界,并且只有少数几个
数据的不断重复时,无论是范围分区还是散列分区都不再
适用,此时用列表分区;
把不想用的列置为无用状态;
在闲暇的时间:alter table tablename drop unused columns;
把无用状态的列删除;