Coursera 笔记

Module 03 · MySQL and PostgreSQL

Using Keys and Constraints in MySQL在 MySQL 中使用键与约束

Coursera ↗

欢迎学习本节课程。通过本指南,您将掌握如何在 MySQL 表中创建键(Keys)以及如何应用各种约束(Constraints)。


概述:MySQL 键与约束

与大多数关系型数据库一样,MySQL 支持多种核心约束,用于保障数据的完整性:

  • 主键 (Primary Keys)
  • 外键 (Foreign Keys)
  • 唯一约束 (Unique Constraints)
  • 空值约束 (Null Constraints)

提示

操作时机:您可以在创建表时定义这些约束,也可以在表创建后通过修改结构来添加。

本指南将重点介绍如何在 phpMyAdmin 这一流行的可视化 Web 界面中执行这些操作。


一、主键 (Primary Keys)

主键用于唯一标识表中的每一行。

1. 核心特性

  • 唯一性:强制列或列组合的值必须唯一。
  • 非空性:主键列不能包含 NULL 值。
  • 自动索引:创建主键时,MySQL 会自动在相应列上创建名为 PRIMARY 的索引。
  • 复合主键:主键可以定义在单个列上,也可以定义在多个列的组合上。

2. 在 phpMyAdmin 中创建

  1. 在创建表界面,找到目标列。
  2. 在“索引”选项中选择 PRIMARY 类型。
  3. 点击 "执行" (Go) 进行确认。
  4. 若需创建复合主键,只需对另一列重复上述操作。
    • 识别标记:创建成功后,列名旁会出现一个钥匙图标,且在表索引列表中会显示名为 PRIMARY的项。

二、自动递增 (Auto-increment)

在没有天然唯一属性(如员工 ID)的情况下,您可能需要系统自动生成 ID。

  • 功能:当新行添加到表中时,数据库引擎会自动为该列生成递增的数字。
  • 设置方法:在“创建表”或“结构”选项卡中,勾选对应主键行的 A_I (Auto-increment) 复选框,然后点击 "保存" (Save)。

三、外键 (Foreign Keys)

外键用于建立跨表的数据关联。

  • 应用场景:例如,将 employee_details 表中的 empid 列与 employee_contact_info 表中的 empid 列进行链接。
  • 操作步骤:
    1. 进入“结构”选项卡的**“关联视图” (Relation view)**。
    2. 输入外键名称。
    3. 选择定义外键的列。
    4. 级联操作:指定当关联行被删除 (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)中的每个值在全表范围内是唯一的。

  • 操作步骤:
    1. 进入“结构”选项卡。
    2. 在目标列的操作栏中点击 “更多” (More) 链接。
    3. 选择 “唯一” (Unique)。

总结回顾

约束类型 功能说明 关键点
主键 定义唯一标识 自动创建索引,不允许 NULL。
自动递增 自动生成序列号 常配合主键使用 (A_I)。
外键 跨表关联数据 可定义 ON DELETE / UPDATE 行为。
空值约束 控制是否允许空值 phpMyAdmin 默认不接受 NULL。
唯一约束 确保数据不重复 适用于邮箱、身份证号等非主键列。