57. 定义非空约束
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));
58. 唯一约束(但是可以插入多个空值)
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));
59. 外键约束
1). 行级定义
①. 不指定约束名
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). 表级定义: 必须指定约束名
①. 指定约束名
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))
60. 约束需要注意的地方
1). ** 非空约束只能定义在列级
2). ** 唯一约束的列值可以为空
3). ** 外键引用的列起码要有一个唯一约束
61. 建立外键约束时的级联删除问题:
1). 级联删除:
create table emp2( id number(3) primary key, name varchar2(25) unique, dept_id references dept2(dept_id) on delete cascade)
2).级联置空
create table emp3( id number(3) primary key, name varchar2(25) unique, dept_id references dept2(dept_id) on delete set null)