一、常见的约束
1.NOT NULL:非空约束,该字段的值必填
2.UNIQUE:唯一,该字段的值不可重复
3.DEFAULT:默认,该字段的值不用手动插入默认值
4.CHECK:检查,mysql不支持
5.PRIMARY KEY:主键,该字段的之不能为空且不能重复
6.POREING KEY:外键,该字段的值引用了另外的表的字段
主键和唯一的区别和联系:
1.区别
- 一个表至多有一个主键,但是可以有多个唯一
- 主键不允许为空,唯一可以为空
2.相同点
- 都具备唯一性
- 都支持组合键,但不推荐
外键:
- 用于限制两个表的关系,从表的字段值引用了主表的某字段值
- 外键列和主表的被引用列要求类型一致,意义一样,名称无要求
- 主表的被引用列要求是一个key(一般是主键)
- 插入数据,先插入主表;删除数据,先删除从表
- 可以通过以下两种方式来删除主表的记录
方式一:级联删除
语法: alter table 使用外键表名 add constraint 外键名称 foreign key(主表中的字段名 ) references 从表名(字段名) on delete cascade;
方式二:级联置空
语法: alter table 使用外键表名 add constraint 外键名称 foreign key(主表中的字段名 ) references 从表名(字段名) on delete set null;
二、创建表时添加约束
语法:create table 表名(
字段名 字段类型 not null, 非空约束
字段名 字段类型 primary key, 主键约束
字段名 字段类型 unique, 唯一约束
字段名 字段类型 default, 默认
constraint 约束名 foregin key(字段名) references 主表(被引用字段名)
)
列级约束可以在一个字段上加多个,中间用空格隔开,没有顺序要求
三、修改表时添加或删除约束
1.非空
添加语法:alter table 表名 modify column 字段名 字段类型 not null;
删除语法:alter table 表名 modify column 字段名 字段类型;
2.默认
添加语法:alter table 表名 modify column 字段名 字段类型 default 值;
删除语法:alter table 表名 modify column 字段名 字段类型;