约束(Constraint)

NOT NULL约束(只能定义在列级上):

确保被约束的列所有记录都不能为空值。

指定约束的名字:

(ename varchar2(20)constraint emp_ename nn NOT NULL)

UNIQUE约束:

确保表中的某一列或者某几列组合的行数据必须唯一,每个表可以有多个unique约束,unique约束允许输入空值

指定约束的名字:

列级:(dname varchar2(20) contraint dept_d_uk unique)
表级:(dname varchar2(20) contraint dept_d_uk unique(dname))

PRIMARY KEY约束

主键约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,并且确保作为主键的一部分的列不能为空,每个表只有一个主键

指定约束的名字:

列级:
(dname varchar2(20) contraint dept_dname_pk primary key)     
表级:(dname varchar2(20) contraint dept_d_pk primary key(dname))  

FOREIGN KEY约束:

1.确保相关联的两个字段的关系:

————外键列的值必须在引用列值的范围内,或者为空;
————外键参照的列必须是主键或者唯一键;

2.主键表主键值被外键参照时,主键记录不允许被删除
列级:(`constaint emp_deptno_fk references dept(deptno)`)      
 表级:(`constraint emp_deptno_fk foreign key (deptno) references dept(deptno) `)  

CHECK约束:

检查性约束,确保某个列的所有行数据都必须满足的条件
 列级:(`constaint emp_deptno_ck check(deptno between 10 and 99)`)   
 表级:(`constraint emp_deptno_ck check(deptno between 10 and 99)

追加约束
1.在emp表中的mgr上添加一个外键约束指示该列的值必须引用emp表中的empno值。

alter table emp add constraint  emp_mgr_fk
foreign key (mgr)
references emp (empno)

2.追加NOT NULL约束

alter table emp modify 
(column {contraint 约束名} not null)

删除约束
1.从emp表中删除emp_mgr_fk约束

alter table emp drop constraint emp_mgr_fk

2.删除dept表上的primary key约束,并且删除相关联的在emp表deptno上的foreign key约束

ALTER TABLE DEPT DROP PRIMARY KEY CASCADE(级联删除)

禁用约束

alter table 表名 disable constraint 约束名{cascade}

启用约束

alter table 表名 enable constraint 约束名

相关的数据字典
不行GGle

你可能感兴趣的:(约束(Constraint))