MySQL学习笔记-约束

  • Post category:MySQL

约束

约束是作用于表中字段上的规则,用于限制存储在表中的数据,保证数据库中数据的正确、有效和完整。

一. 常用的约束

image-20230228152002543

  • 约束作用于表中的字段,可以在创建表或修改表的时候添加约束。
  • AUTO_INCREMENT 约束关键字 自动增长:用于比如每次新添加一行数据,id就+1。
  • 如果自增和主键一起使用时,插入了一行未按约束的数据(会显示插入失败),数据库会申请一次主键,那么下一次插入正确的数据时,获得的自增主键就会是数据库中前一个自增主键+2的值。
  • 一个字段可以有多个约束。
  • 创建表时添加约束:
create table {表名}(
	字段1 类型 [{约束}] [comment 注释],
	字段2 类型 [{约束}] [comment 注释],
	...
	字段n 类型 [{约束}] [comment 注释]
)[comment 表注释];
  • CHECK 检查约束语法:
# 下面是创建表语法中的其中一行
# 如我们的目的是:创建一个age字段,限制取值范围为0-120
age int check ( age > 0 and age <= 120) comment '年龄',
  • DEFAULT 默认约束语法:
# 下面是创建表语法中的其中一行
# 如我们的目的是:创建一个status字段,默认取值为1
status char(1) default '1' comment '状态',

二. 外键约束

外键约束用于两张表之间建立连接,从而保证数据的一致性和完整性。

image-20230228154324945

  • 如上图所示,箭头的起点称为“子表”,终点称为“父表”
  • 主表与从表:主表存的是从北京到上海的高铁信息,从表则存的是:北京-天津;天津-河北….这种存在一定的主从关系,在数据库中称为主从表。
  • 父表与子表:你定义了一个导航菜单表(父表),然后每一个菜单下的子菜单定义了一张表(子表),这类数据称为父表与子表。

1. 添加外键:

# 创建表时建立外键
create table {表名}(
	{字段名} {数据类型},
	...
  [constraint] [{外键名称}] foreign key({外键字段名}) references {主表}({主表列名})
);

# 修改表时建立外键
alter table {表名} add constraint {外键名称} foreign key({外键字段名}) references {主表}({主表列名});

2. 删除外键:

alter table {表名} drop foreign key {外键名};

3. 外键的删除/更新行为

image-20230228160325629

# 添加外键时指定行为
alter table {表名} add constraint {外键名称} foreign key({外键字段名}) references {主表}({主表列名}) on update {在更新时的行为} on delete {在删除时的行为};