mysql数据库中对字段的约束里存在主键约束,也存在唯一键约束,这两种约束很容易出现混淆的情况,这里讲一下两个的区别:
主键和唯一键的对比:
约束 | 保证唯一性 | 是否为空 | 一个表中有多少个 | 是否允许组合 |
主键 | 是 | 否 | 至多一个 | 是(但不推荐) |
唯一键 | 是 | 是 | 可以为多个 | 是(但不推荐) |
这里顺便说一下外键几点注意:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表中的关联列必须是一个key(一般是主键,或者是唯一键)
4、插入数据时先插入主表,再插入从表,删除数据时,先删除从表,再删除主表
修改表时添加约束
1、添加列级约束
alter table 表名 modify column 字段名 字段类型 新约束;
2、添加表级约束
alter table 表名 add 【constarint 约束名】约束类型(字段名)【外键的引用 references table (要关联的主表字段)】
修改表时删除约束
1、删除列级约束
alter table 表名 modify column 字段名 (去掉要删除的约束,剩下的保留即可)
2、删除表级约束
alter table 表名 drop 约束名
总结:列级约束和表级约束的不同
约束名 | 位置 | 支持的约束类型 | 是否可以起约束名 |
列级约束: | 列的后面 | 语法都支持,但是外键没有效果 | 不可以 |
表级约束: | 所有列的下面 | 默认和非空不支持,其他直持 | 可以,主键没有效果 |