顾名思义,用来限制表结构中存储的数据~
一.概述
作用于表中字段上的规则,用于限制存储在表中的数据,目的在于使数据库中的数据正确、有效性和完整性。
大致可以分为如下的几类:
(重点关注主键和外键约束~)
- 此外,约束作用于表的字段,可以在建立、修改表的时候加上相应的约束~
- 一个字段可以添加多个约束
- 主键是核心的字段,最多只能有一个~
二.详解
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.外键约束
让两张表的数据之间建立连接,从而保证数据的一致性和完整性~
如上,外键往往传递的是一种联系,部门表中可以唯一标识部门的主键,在员工表中是一个外键
在本例中,部门表被称为父表,而员工表则被称为子表——有外键的表称为子表,外键所关联的称为父表~(也被称为主表和从表)
需要注意的是,仅仅有逻辑上关联而没有物理外键的情况下,是无法保证数据的一致性和完整性的~
alter table 表名 add constraint 外键名称 foreign key(外键字段名) reference 主表(主表列名);
两种添加外键的方式是:
- 创建表时直接添加外键
[constraint][外键名] foreign key (外键字段名) reference 主表(主表列名)
- 选择表以后修改外键
(注意只能关联别的表的主键~)
此时被关联的父表,不能直接删除任何一条字段(被子表关联)——保证数据的完整性~
删除外键的语法是:
alter table 表名 drop foreign key 外键名称;
7.外键删除更新行为
其中,cascade也称为级联~
alter table 表名 add constraint 外键名称 foreign key (外键字段) reference 主表名(主表字段名)
on update cascade on delete cascade;
分别规定了在更新父表时咱们操作,在删除父表时怎么操作)——此处则均设置为了级联~