1. 什么是约束
2. 注意事项
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001558160-1821030090.png)
3. 表级约束和列级约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001618300-1060408661.png)
4. 定义约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001631238-694427406.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001650472-1721167126.png)
5. Not Null约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001801238-1873783939.png)
6. Unique约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001827644-413162224.png)
7. Primary Key约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001847363-1183762600.png)
8.Foreign Key约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001901128-217399993.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404001944847-877698241.png)
9. Check约束
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002013535-496637960.png)
10. 添加约束的语法
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002025582-1091141050.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002056691-1108395433.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002239660-1164359249.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002258707-266611625.png)
![](https://images2015.cnblogs.com/blog/326197/201704/326197-20170404002307097-946044202.png)
总结
1. 定义非空约束
1). 非空约束只能定义在列级.
2). 不指定约束名
create table emp2 (
name varchar2(30) not null,
age number(3)
);
3). 指定约束名
create table emp3(
name varchar2(30) constraint name_not_null not null,
age number(3));
2. 唯一约束
1). 列级定义
①. 不指定约束名
create table emp2 (
name varchar2(30) unique,
age number(3)
);
②. 指定约束名
create table emp3 (
name varchar2(30) constraint name_uq unique,
age number(3)
);
2). 表级定义: 必须指定约束名
①. 指定约束名
create table emp3 (
name varchar2(30),
age number(3),
constraint name_uq unique(name)
);
3 主键约束:唯一确定一行记录。表明此属性:非空,唯一
4. 外键约束
1). 列级定义,可以不用加foreign key关键字
①. 不指定约束名
create table emp2(
emp_id number(6),
name varchar2(25),
dept_id number(4) references dept2(dept_id))
②. 指定约束名
create table emp3(
emp_id number(6),
name varchar2(25),
dept_id number(4) constraint dept_fk3 references dept2(dept_id))
2). 表级定义: 必须指定约束名,而且必须加上foreign key这个关键字
①. 指定约束名
create table emp4(
emp_id number(6),
name varchar2(25),
dept_id number(4),
constraint dept_fk2 foreign key(dept_id) references dept2(dept_id))
5. 约束需要注意的地方
1). ** 非空约束(not null)只能定义在列级
2). ** 唯一约束(unique)的列值可以为空
3). ** 外键(foreign key)引用的列起码要有一个唯一约束
6. 建立外键约束时的级联删除问题:
1). 级联删除:
create table emp2(
id number(3) primary key,
name varchar2(25) unique,
dept_id number(3) references dept2(dept_id) on delete cascade)
2). 级联置空
create table emp3(
id number(3) primary key,
name varchar2(25) unique,
dept_id number(3) references dept2(dept_id) on delete set null)