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,因此该字段也经常会同时设置成主键。