一、开发中使用完整性约束
1.非空约束
2.唯一约束
3.主键约束
4.检查约束
5.主外键约束
6.潜在约束(数据类型的检查)
形式:
CONSTRAINT pk_mid_name PRIMARY KEY (mid,name) ,
CONSTRAINT uk_email UNIQUE (email) ,
CONSTRAINT ck_sex CHECK (sex IN ('男','女'))
注意:
oracle中的约束也属于数据库中的一种对象。
在oracle中为了方便的进行约束维护,把所有的约束都作为一个一个独立的数据库对象进行保存,这些信息都存放在数据库字典中,每个约束都有一个自己的名字,这样便于维护。方式为系统分配和用户自定义(constraint关键字,约定为约束简写_字段)两种。
二、级联删除
下面介绍难懂的主外键约束(父子表关系)
如果父表没有,子表数据插入不进去。删除父表数据,得把子表响应的数据全部删除掉。
1.也可以使用强制删除表(不能再直接使用purge选项了)
DROP TABLE member CASCADE CONSTRAINT ;
2.级联删除
创建表时候,增加级联删除 on delete cascade;
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE CASCADE
3.级联更新,创建表的时候,设置级联更新
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE SET NULL
三、查看约束
1.查看全部的约束名称、类型、约束设置对应的表名称
SELECT constraint_name,constraint_type,table_name FROM user_constraints ;
2.查询emp表上的全部约束
SELECT constraint_name,constraint_type,table_name FROM user_constraints WHERE table_name='EMP' ;
3.查询user_cons_columns数据字典
SELECT * FROM user_cons_columns ;
四、修改约束
1.为member表的mid字段增加主键约束
ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid) ;
2.为member表的age增加检查约束
ALTER TABLE member ADD CONSTRAINT ck_age CHECK(age BETWEEN 0 AND 200) ;
2.非空约束
ALTER TABLE member MODIFY (name VARCHAR2(30) NOT NULL) ;
3.禁用约束
ALTER TABLE advice DISABLE CONSTRAINT pk_adid ;
4.重启约束
ALTER TABLE member ENABLE CONSTRAINT pk_mid ;
5.删除约束(无关联外键)
ALTER TABLE advice DROP CONSTRAINT pk_adid ;
6.删除member表之中的“pk_mid”约束 (有关联外键)
ALTER TABLE member DROP CONSTRAINT pk_mid CASCADE ;
五、总结
自律才能自由!