1. 约束的作用
定义规则,设置字段的规则(默认值,符合的条件等),以此确保数据的精确性和完整性,避免无效数据。
2. 非空约束
-创建表时设置非空约束
CREATE TABLE table_name (column_name datatype not null,...);
-修改表时添加非空约束
alter table table_name modify column_name datatype not null;(最好在表中添加数据之前修改)
-修改表时删除非空约束
alter table table_name modify column_name datatype null;
3. 主键约束
作用:确保表中每一行数据的唯一性
每一张表只能设计一个主键约束,但是一个主键约束可以由多个字段构成(联合主键或复合主键)
-创建表时设置主键约束
create table table_name(column_name datatype PRIMARY KEY,...);
constraint constraint_name primary key(column_name1,...);(用来设置联合主键,在字段写完之后添加)
-在修改表时添加主键约束
add constraint constraint_name primary key (column_name1,...);(在修改表的语句后面添加,修改时表中最好无数据)
-更改约束的名称
rename constraint old_name to new_name;(在修改表的语句后面添加)
-删除主键约束(修改表的语句后添加)
disable/enable constraint constraint_name;(禁用/启用约束)
drop constraint constraint_name;(删除约束)
drop primary key [cascade];(cascade表示级联删除,在有外键时使用)
4. 外键约束
作用:两个表之间的约束,有列级和表级
-创建表时设置外键约束
create table table1 (column_name datatype REFERENCES table2(column_name),...)
(table1是从表,table2是主表,主表的字段必须是主键,相应的字段必须是同一个数据类型从表中外键字段的值必须来自主表中的相应字段的值,或者为null值)
constraint constraint_name foreign key (column_name) references table_name (column_name) [on delete cascade];(在创建表语句之后,中括号里是级联删除的意思,主表中一条数据被删除后,从表中使用了该数据的记录也会被删除)
-在修改表时添加外键约束(放在修改表的语句后面)
add constraint constraint_name foreign key(column_name)references table_name(column_name)[on delete cascade]
-弃用外键约束(在修改表语句之后添加)
disable/enable constraint_name;(禁用/启用外键约束)
-删除外键约束(在修改表语句之后添加)
drop constraint_name;(删除外键约束)
5. 唯一约束
作用:保证字段值的唯一性
主键约束的字段值为非空的,且每张表中只能有一个
唯一约束允许有一个控制,唯一约束在一个表中能有多个
-在创建表时设置唯一约束
create table table_name (column_name datatype UNIQUE , ...);(列级设置唯一约束)
constraint constraint_name UNIQUE (column_name );(表级设置唯一约束,在定义字段语句后添加,每个字段都有自己唯一的约束名)
-修改表时添加唯一约束(在修改表语句后添加)
add constraint constraint_name UNIQUE(column_name);
-禁用唯一约束
disable/enable constraint constraint_name;
-删除唯一约束
drop constraint constraint_name;
6. 检查约束
作用:使得表中的值更有实际意义(例如年龄等是否符合实际)
-在创建表的时候设置检查约束
create table table_name(column_name datatype check(expressions),...);(列级检查约束)
constraint constraint_name check(expressions);(表级约束,在创建字段后面添加)
-在修改表时添加检查约束
add constraint constraint_name check(expressions);(在修改表时添加)
-删除检查约束
禁用检查约束
disable/enable constraint_name;(修改表时添加,约束名可以通过数据字典查看)
删除检查约束
drop constraint constraint_name;(与其他约束通用,在修改表后添加)