注:
一张表最多有一个主键约束,否则会报错。故若修改主键应先删除在添加
删除主键约束前,如果主键有自增长需先删除自增长,否则无法删除主键
添加:
alter table 表名
add primary key(字段名1,...);
删除
alter table 表名
drop primary 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 约束名;
注:
唯一可以为空,两个均为空的元组符合unique约束
添加:
alter table 表名
modify 字段名 字段类型 unique;
change 字段名 字段名 字段类型 unique;
add [constraint 约束名] unique [key] (字段名);
删除
alter table 表名
drop index 字段名;
修改:
alter table 表名
add check(字段名 is not null);
modify 字段名 字段类型 [not null];
change 字段名 字段名 字段类型 [not null];
修改:
alter table 表名
modify 字段名 字段类型 default 默认值;
change 字段名 字段名 字段类型 默认值;
alter table 表名
add check(约束语句 -字段名和约束条件);
注:
modify和change为修改建表语句,会影响not null限制、default限制;可以用来增加key,但不会删除key(不写的情况下)
modify和change的区别在于change可以指定字段名,修改字段类型;而modify不可以
add/drop等为添加或删除约束(key)