MySQL-约束

约束-概述

  1. 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据
  2. 目的:保证数据库中的数据正确、有效性和完整性
  3. 分类
约束 描述 关键字
非空约束 限制该字段的数据不能为null not null
唯一约束 保证该字段的所有数据都是唯一,不重复的 unique
主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key
默认约束 保存数据时,如果未指定该字段的值,则采用默认值 default
检查约束 保证字段值满足某一个条件 check
外键约束 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 foreign key

注意

  • 约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束

约束演示

字段名 字段含义 字段类型 约束条件 约束关键字
id ID唯一标识 int 主键,并且自动增长 primary key,auto_increment
name 姓名 varchar(10) 不为空,并且唯一 not null,unique
age 年龄 int 大于0,并且小于等于120 check
status 状态 char(1) 如果没有指定该值,默认为1 default
gender 性别 char(1)
create table user (
    id int primary key auto_increment comment 'ID-主键',
    name varchar(10) not null unique comment '姓名',
    age int check(age > 0 && age <=120) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
)comment '用户表';

外键约束

  1. 概念:外键让两张表的数据之间建立连接,从而保证数据的一致性和完整性
  2. 语法
  • 添加外键
create table 表名(
    字段名 数据类型,
    字段名 数据类型,
    ...
    [constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);

或者

alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名);
  • 删除外键
alter table 表名 drop foreign key 外键名称;

外键约束-删除更新行为

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

本文章使用limfx的vscode插件快速发布