约束

本文汇总 MySQL 六大常用约束完整教程,包含非空、唯一、主键、默认、检查、外键约束,每个约束配套建表演示 SQL,专门拆解外键 5 种删除更新联动规则

概述

  1. 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  2. 目的:保证数据库中数据的正确、有效性和完整性。
  3. 分类
约束 描述 关键字
非空约束 限制该字段的数据不能为 null NOT NULL
唯一约束 保证该字段的所有数据都是唯一、不重复的 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
默认约束 保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT
检查约束 (8.0.16 版本之后) 保证字段值满足某一个条件 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'主键',

		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 '性别'

)



insert into user (name,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男'); 

效果:

在这里插入图片描述

如果插入了任何一个字段不满足约束,则会报错无法插入。

外键约束

  1. 定义

    外键是一张表的字段,引用另一张表的

    主键 / 唯一键,用来维护表与表之间的参照完整性

  • 被引用的表:主表(父表)

  • 持有外键的表:从表(子表)

在这里插入图片描述

核心作用

防止脏数据:

子表不能插入主表不存在的关联 ID。

主表不能随便删除 / 更新被子表引用的数据。

基本语法:

添加外键:

  1. 在创建表时添加

    create table 表名(

    字段名 数据类型

    foreign key (外键字段名) reference 主表 主表字段名;

    )

  2. 在创建表后添加外键

    alter table 表名 add constraint 外键名称 foreign key (外键字段名) reference 主表 主表字段名;

  3. 删除外键

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

外键的删除和更新行为

行为 说明
NO ACTION 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除 / 更新。(与 RESTRICT 一致)
RESTRICT 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除 / 更新。(与 NO ACTION 一致)
CASCADE 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除 / 更新外键在子表中的记录。
SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为 null(这就要求该外键允许取 null)。
SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值 (Innodb 不支持)

CASCADE:当我将外键更新时,子表里的数据也会更新,当我把外键删除的时候,和外键相关的所有数据都会被删除

基本语法:

alter table 表名 add constraint 外键名称 foreign key(外键字段名) reference 主表 主表字段名 on update 行为 on delete 行为

总结

非空约束:NOT NULL

唯一约束:UNIQUE

主键约束:PRIMARY KEY (自增: AUTO_INCREMENT)

默认约束:DEFAULT

检查约束:CHECK

外键约束:FOREIGN KEY


本篇 MySQL 约束知识点到此结束,六大约束关键字、建表语法、外键联动规则全部整理完毕。合理运用约束可以大幅提升数据表的数据规范性
如果喜欢我的内容,觉得我的内容有帮助到你的,可以动动小手点赞收藏,我们下期再见!
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐