MySQL基础笔记(7)约束

顾名思义,用来限制表结构中存储的数据~


一.概述

        作用于表中字段上的规则,用于限制存储在表中的数据,目的在于使数据库中的数据正确、有效性和完整性。

        大致可以分为如下的几类:

MySQL基础笔记(7)约束_第1张图片

(重点关注主键和外键约束~)

  • 此外,约束作用于表的字段,可以在建立、修改表的时候加上相应的约束~
  • 一个字段可以添加多个约束
  • 主键是核心的字段,最多只能有一个~

二.详解

1.非空约束

name varchar(10) not null unique comment '姓名';

值得一提的是,多个约束之间用空格分开即可~ 

2.唯一约束

(同上,不再赘述)

3.主键约束

id int primary key auto_increment comment '主键'

此处实现了id为主键,且可以自动增长的功能~ 

拓展:主键自增的关键字是auto_increment)~

4.默认约束

gender char(1) default '男' comment '性别'

5.检查约束

age int check (age>0 && age<=120)

 check 后面的括号中是对当前字段的要求。


如果违反了任何一个约束,则会发生报错~ 

6.外键约束

让两张表的数据之间建立连接,从而保证数据的一致性和完整性~
MySQL基础笔记(7)约束_第2张图片

如上,外键往往传递的是一种联系,部门表中可以唯一标识部门的主键,在员工表中是一个外键

在本例中,部门表被称为父表,而员工表则被称为子表——有外键的表称为子表,外键所关联的称为父表~(也被称为主表和从表)

需要注意的是,仅仅有逻辑上关联而没有物理外键的情况下,是无法保证数据的一致性和完整性的~

 

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

  两种添加外键的方式是:

  • 创建表时直接添加外键
[constraint][外键名] foreign key (外键字段名) reference 主表(主表列名)
  • 选择表以后修改外键

 (注意只能关联别的表的主键~)

此时被关联的父表,不能直接删除任何一条字段(被子表关联)——保证数据的完整性~

删除外键的语法是:

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

 7.外键删除更新行为

MySQL基础笔记(7)约束_第3张图片

其中,cascade也称为级联

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

on update cascade on delete cascade;

分别规定了在更新父表时咱们操作,在删除父表时怎么操作)——此处则均设置为了级联~ 

你可能感兴趣的:(MySQL,mysql,笔记,数据库)