约束:
定义规则,确保数据完整性、规范性
1、非空约束
注意:非空约束尽可以列级添加,不可表级添加
在创建表时添加非空约束
create table table_name
(column1 datatype not null,
... ...);
在修改表时添加非空约束
alter table table_name
modify column1 datatype not null;
注意:在添加非空约束前要保证该字段当前无空值
去除非空约束
alter table table_name
modify column1 datatype null;
2、主键约束
注意:每张表只能存在一个主键约束,但可以由多个字段构成
在创建表时添加主键约束(列级)
create table table_name
(column1 datatype PRIMARY KEY,
... ...
);
在创建表时添加主键约束(表级)
create table table_name
(column1 datatype,
... ...
CONSTRAINT constraint_name
PRIMARY KEY(column1,column2,...)
);
在修改表时添加主键约束
alter table table_name
add constraint constraint_name
primary key(column1,column2,...);
注意:在添加主键约束前需保证被设为主键的字段不为空且值唯一
查看约束
desc user_constrains
select constraint_name
from user_constraints
where table_name='XXXX';
更改约束名称
alter table table_name
rename constraint name_old to name_new;
禁用/启用主键约束
alter table table_name
disable/enable constraintconstraint_name;
查看约束状态
select constraint_name,status
from user_constraints
where table_name='XXXX';
删除主键约束
alter table table_name
drop constraint constraint_name;
或
alter table table_name
drop primary key [cascade(如存在外键约束,则可将其他表中依赖于该约束的外键约束一并去除)]
3、外键约束
说明:外键约束时唯一涉及到两个表的约束
创建表时添加外键约束(列级)
create table table_name(从表)
(column1 datatype references
table2_name(主表) (column1_name),
... ...
)
注意:
(1)添加外键时,主表的字段必须是主键;
(2)主从表的相应字段数据类型要一致(字段名可不同);
(3)向设置了外键约束的表中插入值时,必须来自于主表中相应字段的值,或者null。
创建表时添加外键约束(表级)
create table table_name
(column1 datatype,
column2 datatype,
... ...
constraint constraint_name
foreign key(column_name) perefences
table_name(主表) (column_name)[on delete cascade](级联删除:主表中一条数据被删除,从表中引用该数据的行也会被删除)
)
修改表时添加外键约束
alter table table_name
constraint constraint_name
foreign key (column1_name) perefences
table_name(主表) (column2_name)[on delete cascade]
禁用/启用外键约束
alter table table_name
disable/enable constraintconstraint_name;
删除外键约束
alter table table_name
drop constraint constraint_name;
4、唯一约束
说明:保证表中值的唯一性
与主键约束的区别:主键约束每张表中只能有一个,唯一约束可以有多个,且允许有一个空值
在创建表时添加唯一约束(列级)
create table table_name
(column1_namedatatype unique,
... ...
)
在创建表时添加唯一约束(表级)
create table table_name
(column1_name datatype,
... ...
constraint constraint_name
unique(column1_name)
)
在修改表时添加外键约束
alter table table_name
add constraint constraint_name
unique(column1_name);
禁用/启用唯一约束
alter table table_name
disable/enable constraintconstraint_name;
删除唯一约束
alter table table_name
drop constraint constraint_name;
5、检查约束
说明:使表中的数据更具有实际意义
在创建表时添加检查约束(列级)
create table table_name
(column1_namedatatype check(expressions);
... ...
)
在创建表时添加检查约束(表级)
create table table_name
(column1_namedatatype,
... ...
add constraint constraint_name
check(expressions)
)
在修改表时添加检查约束
alter table table_name
add constraint constraint_name
check(expressions);
禁用/启用检查约束
alter table table_name
disable/enable constraintconstraint_name;
删除检查约束
alter table table_name
drop constraint constraint_name;