Primary Key 约束
特点
+被约束字段不可重复,也不包含Null
+一个表只有一个Primary Key
+Oracle会自动为具有Primary Key的字段建立索引,并加Not NULL约束
建立
可以由多个字段组成,那么必须在表级定义
1 2 3 4 5 6
| create table Test( emp_id int,[^1] dep_id int, name varchar(20), constraint PK_ID PRIMARY KEY (emp_id,dep_id); )
|
更改
1 2 3 4 5
| alter table Test drop constraint PK_ID; alter table Test add constraint PK_ID PRIMARY KEY (emp_id);
|
Not Null 约束
特点
+被约束的列不能有null
+只能列级定义
+可以有多个not null约束
建立
1 2 3 4 5
| create table Test( emp_id int primary key, dep_id int, name varchar(20) constraint emp_name not null, )
|
更改
1 2 3 4 5
| alter table Test modify emp_name null alter table Test modify name not null
|
Unique 约束
特点
+被约束的列不能重复
+可以为多个字段定义约束,列级定义和表级定义都可以
+Oracle会自动给该列建立唯一索引
+该列可以有多个null值
建立
1 2 3 4 5
| create table Test( emp_id int primary key, dep_id int, phone varchar(11) constraint emp_phone unique, )
|
更改
1 2 3 4 5
| alter table Test drop constraint emp_phone; alter table Test add constraint emp_phone unique(phone);
|
Foreign Key 约束
特点
+只能为其它表的列值或者null值
+可以多列组合定义,可以在列级或者表级定义
+可以自我参考,即参考本表中的一列
+与not null 不冲突
+CASCADE关键字,联级删除
+SET NULL关键字,引用列必须支持null值,这样主表数据删除后,子表显示null
+NO ACTION在某些操作过程中可能会违反,不报错,但是结果违反一定报错
建立
1 2 3 4 5
| create table Test( emp_id int primary key, dep_id int references department, name varchar(20) , )
|
更改
1 2 3 4 5 6
| alter table Test drop constraint dep_id; alter table Test add constraint FK_depid foreign key(dep_id) references department(id);
|
Check 约束
特点
+引用一个或多个字段,运算结果必须是布尔值
+可以列级定义,也可以表级定义
+与not null不冲突,可以定义多个Check约束
建立
1 2 3 4 5 6
| create table Test( emp_id int primary key, dep_id int, name varchar(20) not null, emp_age int check (emp_age < 60 and emp_age>20) )
|
更改
1 2 3
| alter table Test add constraint chek_age check(age<100 and age>10)
|