SQL-约束

作用于表上字段的规则,用于限制存储在表中的数据

分类

  • 约束分类

    约束 描述 关键字
    非空约束 该字段数据不能为null not null
    唯一约束 该字段所有数据唯一,不重复 unique
    主键约束 主键为一行数据的唯一标识,非空且唯一 primary key
    默认约束 若未指定该字段值,则采用默认值 default
    检查约束(版本8.0.16以后) 保证字段满足某一条件 check
    外键约束 使两张表的数据建立连接,保证数据一致性和完整性 foreign key

添加外键约束

1
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);
  • constraint 约束
  • references后面的是要关联表的主键
  • 关联外键后,父表的主键就不能直接删除,因为子表的外键中有关联的信息

删除外键

1
alter table 表名 drop foreign key 外键名称;

外键删除/更新行为

行为 说明
NO ACTION/RESTRICT 在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。
CASCADE 级联cascade 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null (这就要求该外键允许取null)。
SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)
例子
1
alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名(主表字段名) on update cascade on delete cascade;