用于限制字段规则。
约束 | 说明 |
---|---|
not null | 非空 |
unique | 唯一,不能重复 |
primary key | 主键,非空且唯一 |
default | 默认值 |
check | 保证字段值都满足某个条件 |
foreign key | 连接两张表之间的数据,保证数据的一致性和完整性 |
# 创建表时:
create table(
id int primary key comment 'id';
age int check (age>=0 && age<=100) comment '年龄',
gender char(1) default 'm' comment '性别'
);
# 修改表时:主键,unique,外键用 add,其他用 modify
alter table add primary key(列名);
alter table table_name modify 列名 数据类型 not null;# 如果是 null,就是取消非空约束
# 外键需要先创建一个字段,然后给这个字段添加外键。原外键的字段和新的要添加外键的字段数据类型要一样。
alter table 子表名 add constraint 外键名 foreign key (要添加外键的字段) references 父表名(父表字段);
alter table 表名 drop foreign key 外键名;
之后子表引用了父表,父表被引用的记录就不能随便删除了。子表也不能随便写外键的值,必须要在父表中存在才可以引用。
外键删除更新行为 | 说明 |
---|---|
no action/restrict | 父表要删除/更新的记录如果在子表中存在关联记录,则不删除/更新 |
cascade | 父表要删除/更新的记录如果在子表中存在关联记录,则子表中的记录也删除/更新 |
set null | 父表要删除/更新的记录如果在子表中存在关联记录,则子表中的记录对应字段设为空值(前提:该字段可以为 null) |
set default | 父表要删除/更新的记录如果在子表中存在关联记录,则子表中的记录也删除/更新对应字段设为默认值 |
alter table 子表名 add constraint 外键名 foreign key (要添加外键的字段) references 父表名(父表字段) on update cascade on delete cascade;