~本特利~ |
表的约束
含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
什么是约束
- 为了保证数据的一致性和完整性,SQL规范以约束的方式对表数据进行额外的条件限制。
- 约束是表级的强制规定
- 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)
常见的约束
- 默认约束 ~ DEFAULT
比如性别 - 非空约束 ~ NOT NULL ~ 规定某个字段不能为空 ;
比如姓名、学号等 - 主键约束 ~ PRIMARY KEY ~ ( 非空且唯一)
比如学号、员工编号等 - 唯一约束 ~ UNIQUE ~ 规定某个字段在整个表中是唯一的
比如座位号 - 外键约束 ~ FOREIGN KEY ~ 用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值在从表添加外键约束,用于引用主表中某列的值
比如学生表的专业编号,员工表的部门编号,员工表的工种编号 - CHECK ~ 检查约束【mysql中不支持】
比如年龄、性别
注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;
约束的添加分类
列级约束:
六大约束语法上都支持,但外键约束没有效果
表级约束:
除了非空、默认,其他的都支持
- 根据约束数据列的限制,约束可分为:
- 单列约束:每个约束只约束一列
- 多列约束:每个约束可约束多列数据
- 根据约束的作用范围,约束可分为:
- 列级约束只能作用在一个列上,跟在列的定义后面
- 表级约束可以作用在多个列上,不与列一起,而是单独定义
添加约束的时机
1.创建表时
2.修改表时
主键和唯一的对比
保证唯一性 是否允许为空 一个表中可以有多少个 是否允许组合
主键 √ × 至多有1个 √,但不推荐
唯一 √ √ 可以有多个 √,但不推荐
外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表删除数据时,先删除从表,再删除主表
详解(链接)
mysql-表的约束-默认约束【初学版“链式“笔记-2】(案例结合-第1版)
mysql-表的约束-非空约束【初学版“链式“笔记-3】(案例结合-第1版)
mysql-表的约束-唯一约束【初学版“链式“笔记-4】(案例结合-第1版)
mysql-表的约束-主键约束【初学版“链式“笔记-5】(案例结合-第1版)