SQL 数据完整性约束详解
1. 约束知识问答
在开始具体的操作之前,先了解一些关于约束的基础知识问答:
|问题|答案|
| ---- | ---- |
|PRIMARY KEY 约束有哪两个 UNIQUE 约束没有的限制?|1. 定义为主键约束的列不能包含空值;2. 每列只能定义一个主键约束。|
|引用约束与唯一约束有何不同?|唯一约束确保列或列集内值的唯一性。引用约束关注一个表中的数据如何与另一个表中的数据相关联,表之间的关联形成一种关系,提供表之间的引用完整性,防止一个表中的数据操作对另一个表中的数据产生不利影响。|
|FOREIGN KEY 约束中的引用列与候选键中的被引用列如何比较?|引用表中的外键必须包含与被引用列相同数量的列,并且引用列的每个数据类型必须与其对应的被引用列配置相同。|
|MATCH 子句可以使用哪三个选项?|FULL、PARTIAL 和 SIMPLE|
2. 添加 NOT NULL、唯一和引用约束项目
2.1 项目概述
此项目将向表中添加一些约束并创建新表,同时为这些表定义约束。这里不是使用 ALTER TABLE 语句修改已创建的表,而是重新创建这些表,这样可以看到与更新后的数据模型相关的完整表定义。
2.2 数据模型介绍
数据模型包含表、列、数据类型、约束和表之间的关系等元素:
- 主键包含的列位于表的顶部,其他列位于底部。例如,在 CompactDiscs 表中,CompactDiscID 列是主键;在 CompactDiscTypes 表中,所有列都包含在主键中。
- 每个外键用 [FK] 表