Module 03 · MySQL and PostgreSQL
Using Keys and Constraints in MySQL在 MySQL 中使用键与约束
欢迎学习本节课程。通过本指南,您将掌握如何在 MySQL 表中创建键(Keys)以及如何应用各种约束(Constraints)。
概述:MySQL 键与约束
与大多数关系型数据库一样,MySQL 支持多种核心约束,用于保障数据的完整性:
- 主键 (Primary Keys)
- 外键 (Foreign Keys)
- 唯一约束 (Unique Constraints)
- 空值约束 (Null Constraints)
提示
操作时机:您可以在创建表时定义这些约束,也可以在表创建后通过修改结构来添加。
本指南将重点介绍如何在 phpMyAdmin 这一流行的可视化 Web 界面中执行这些操作。
一、主键 (Primary Keys)
主键用于唯一标识表中的每一行。
1. 核心特性
- 唯一性:强制列或列组合的值必须唯一。
- 非空性:主键列不能包含 NULL 值。
- 自动索引:创建主键时,MySQL 会自动在相应列上创建名为
PRIMARY的索引。 - 复合主键:主键可以定义在单个列上,也可以定义在多个列的组合上。
2. 在 phpMyAdmin 中创建
- 在创建表界面,找到目标列。
- 在“索引”选项中选择 PRIMARY 类型。
- 点击 "执行" (Go) 进行确认。
- 若需创建复合主键,只需对另一列重复上述操作。
- 识别标记:创建成功后,列名旁会出现一个钥匙图标,且在表索引列表中会显示名为
PRIMARY的项。
- 识别标记:创建成功后,列名旁会出现一个钥匙图标,且在表索引列表中会显示名为
二、自动递增 (Auto-increment)
在没有天然唯一属性(如员工 ID)的情况下,您可能需要系统自动生成 ID。
- 功能:当新行添加到表中时,数据库引擎会自动为该列生成递增的数字。
- 设置方法:在“创建表”或“结构”选项卡中,勾选对应主键行的 A_I (Auto-increment) 复选框,然后点击 "保存" (Save)。
三、外键 (Foreign Keys)
外键用于建立跨表的数据关联。
- 应用场景:例如,将
employee_details表中的empid列与employee_contact_info表中的empid列进行链接。 - 操作步骤:
- 进入“结构”选项卡的**“关联视图” (Relation view)**。
- 输入外键名称。
- 选择定义外键的列。
- 级联操作:指定当关联行被删除 (ON DELETE) 或 更新 (ON UPDATE) 时应采取的行动。
- 提示:创建后,底层的索引也会显示在“结构”选项卡中。
四、空值与唯一约束
1. 空值约束 (Null Constraints)
在 phpMyAdmin 中,默认定义列为 NOT NULL(不允许为空)。
- 允许为空:勾选 NULL 复选框(例如:
start_date或salary列)。 - 强制必填:取消勾选 NULL 复选框(例如:
empid、first_name和last_name),确保这些列必须包含数据。
2. 唯一约束 (Unique Constraints)
用于确保特定列(如 email_address)中的每个值在全表范围内是唯一的。
- 操作步骤:
- 进入“结构”选项卡。
- 在目标列的操作栏中点击 “更多” (More) 链接。
- 选择 “唯一” (Unique)。
总结回顾
| 约束类型 | 功能说明 | 关键点 |
|---|---|---|
| 主键 | 定义唯一标识 | 自动创建索引,不允许 NULL。 |
| 自动递增 | 自动生成序列号 | 常配合主键使用 (A_I)。 |
| 外键 | 跨表关联数据 | 可定义 ON DELETE / UPDATE 行为。 |
| 空值约束 | 控制是否允许空值 | phpMyAdmin 默认不接受 NULL。 |
| 唯一约束 | 确保数据不重复 | 适用于邮箱、身份证号等非主键列。 |