[mysql] mysql数据库的完整性约束

1. primary key

注:

一张表最多有一个主键约束,否则会报错。故若修改主键应先删除在添加
删除主键约束前,如果主键有自增长需先删除自增长,否则无法删除主键

添加:

alter table 表名
add primary key(字段名1,...);

删除

alter table 表名
drop primary key;

2. foreign key

注:

外键参考的字段只能是primary key或not null,外键参考的字段必须和外键所在字段可以类型转换
若删除外键约束时不知道约束名可以通过show create table 表名来查看约束名
外键中的级联关系有以下几种情况:
---on delete cascade :删除主表数据时,从表数据随之删除
---on update cascade :更新主表数据时,从表数据随之更新
---on delete set null :删除主表数据时,从表数据置空
---默认 :删除主表数据时,应先删除从表数据,否则无法操作

添加:

alter table 表名
add [constraint 约束名] foreign key(字段名) references 表名(字段名) [级联关系];

删除

alter table 表名
drop foreign key 约束名;

3. unique(key)

注:

唯一可以为空,两个均为空的元组符合unique约束

添加:

alter table 表名
modify 字段名 字段类型 unique;
change 字段名 字段名 字段类型 unique;
add [constraint 约束名] unique [key] (字段名);

删除

alter table 表名
drop index 字段名;

4. not null

修改:

alter table 表名
add check(字段名 is not null);
modify 字段名 字段类型 [not null];
change 字段名 字段名 字段类型 [not null];

5. default

修改:

alter table 表名
modify 字段名 字段类型 default 默认值;
change 字段名 字段名 字段类型 默认值;

6. check(mysql不支持check约束,但不会报错)

alter table 表名
add check(约束语句 -字段名和约束条件);

注:

modify和change为修改建表语句,会影响not null限制、default限制;可以用来增加key,但不会删除key(不写的情况下)
modify和change的区别在于change可以指定字段名,修改字段类型;而modify不可以
add/drop等为添加或删除约束(key)

你可能感兴趣的:(old)