MySQL讲义第9讲——完整性约束概述
文章目录
- MySQL讲义第9讲——完整性约束概述
- 一、主键约束
- 二、唯一约束
- 三、外键约束
- 四、非空约束
- 五、默认值
- 六、自增列
数据完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据。在MySQL中提供了多种完整性约束。完整性约束根据约束的规则不同可分为三类:
(1)实体完整性:可以保证数据的唯一性。可以使用主键约束与唯一性约束来定义。
(2)参照完整性:一个表中某个字段的取值要参照另一个表的主键。使用外键约束来定义。
(3)域完整性:又称为用户自定义完整性。可以针对某个列的取值由用户定义约束的规则。
MySQL中的完整性约束如下表所示:
完整性约束 | 说明 |
PRIMARY KEY | 主键约束(实体完整性) |
UNIQUE | 唯一性约束(实体完整性) |
FOREIGN KEY | 外键约束(参照完整性) |
NOT NULL | 非空约束(域完整性) |
AUTO_INCREMENT | 自增字段 |
DEFAULT | 默认值 |
一、主键约束
主键是表中的某一个或多个列,由多个列组合而成的主键也称为复合主键。主键的取值能够唯一标识表中的记录。主键的定义必须遵守以下规则:
(1)一个表只能定义一个主键。
(2)主键的值必须能够唯一标识表中的每一条记录,且不能为空(NULL)。
二、唯一约束
唯一约束使用 UNIQUE 关键字来定义。唯一约束的要求某一列的取值必须是唯一的,不能取重复值。主键约束同时也是唯一约束,唯一约束与主键之间存在以下区别:
(1)一个表只能创建一个主键,但可以定义多个唯一约束。
(2)定义主键约束时,系统会自动创建 PRIMARY KEY 索引,定义 UNIQUE 约束时,系统会自动创建 UNIQUE 索引。
三、外键约束
外键用于定义多个表之间的参照完整性。参照完整性指多个表之间的对应关系,在一张表中执行数据的插入、更新、删除等操作时,会和另一张表进行对照,以确保数据存储的完整性。
外键约束必须遵守以下规则:
(1)某一个表中的某个字段的取值依赖于另一张表中某个字段的值。
(2)主键所在的表为主表,外键所在的表为从表,每一个外键值必须与另一个表中的主键值相对应。
四、非空约束
非空约束就是限制必须为某个列提供值。空值(NULL)既不是数字0,也不是空字符串。空值用 NULL 表示,使用空值参与的运算结果仍然为空值。
五、默认值
可通过关键字 DEFAULT 为某个字段设置默认值。如果为某个字段设置了默认值,当在数据表中插入一条新记录时,如果没有为某个字段赋值,则自动为这个字段插入默认值。
六、自增列
可以使用关键字 AUTO_INCREMENT 把某个字段设置为自增列,当向数据表中插入新记录时,该字段上的值会自动生成唯一的ID。
一个表只能把一个字段设置为自增字段,并且字段的数据类型必须是整型。由于设置 AUTO_INCREMENT 约束后的字段会生成唯一的 ID,因此该字段也经常会同时设置成主键。