??在MySQL中,各种完整性约束是作为数据库关系模式定义的一部分。一旦定义了完整性约束,MySQL服务器会随时检测处于更新状态的数据库内容是否符合相关的完整性约束,从而保证数据的一致性与正确性。如此,既能有效地防止对数据库的意外破坏,又能提高完整性检测的效率,还能减轻数据库编程人员的工作负担。
constraint 完整性约束条件名 [primary key | foreign key | check] 短语
??用于保证数据库表中记录的唯一性。
-- 定义表属性后
primary key (col_name)
-- 定义表属性时
col_name type [other options] primary key
-- 定义表属性后
primary key (col_name1, col_name2 ...)
alter table table_name drop primary key, add primary key(col_name1, col_name2...)
--定义表时
col_name type [other options] references super_table(super_state)
-- 定义表后
foreign key [foreign_name] (state) references super_table(super_state)
-- 创建表后
alter table table_name add [constraint foreign_name] foreign key (state) references super_table(super_state) [ on delete {cascade | restrict | set null | no action} ] [ on update {cascade | restrict | set null | no action} ]
参数 | 说明 |
---|---|
foreign_name | 外键名 |
cascade | 删除或修改父表记录时,会自动删除或修改子表对应的记录 |
restrict | 与no action功能一致,为默认值 |
set null | 删除或修改父表记录时,会将子表中对应的外键值设置为NULL |
no action | 删除或修改父表记录时,若子表中存在与之对应的记录,则操作失败 |
-- 定义表时:直接在数据类型后添加"not null"
create table table_name (
col_name type [other_options] not null;
);
-- 创建表后
alter table table_name modify col_name type not null;
??非空约束限制该字段的内容不能为空,但可以是空白。
-- 定义表时:直接在数据类型后添加"unique"
create table table_name (
col_name type [other_options] unique;
);
-- 创建表后
alter table table_name modify col_name type [other_options] unique;
4.4 例子
-- 定义表时
create table table_name (
col_name type [other_options] default 默认值;
);
-- 定义表时
create table table_name (
col_name type [other_options] auto_increment;
);
??检查约束可以检查数据表字段的有效性,如数值的限制。
??前面的默认值约束和非空约束可看作是特殊的检查约束。
alter table table_name drop [ primary key | foreign key 外键名];
参数说明:外键名可以通过显示表格详情查看(show create table table_name
)。
注:删除外键约束后,在desc之后会发现在key一列还会留下MUL
的字样,这个其实就是索引的意思。可以通过alter table table_name drop index 列名;
来进行删除,也可以通过alter table table_name add index(列名);
进行添加。
原文:https://www.cnblogs.com/bpf-1024/p/14058902.html