MST

星途 面试题库

面试题:MySQL中如何通过约束保证数据完整性

在MySQL Schema设计中,常常需要利用各种约束来保证数据完整性。请阐述常见的数据完整性约束类型(如主键约束、外键约束、唯一约束、检查约束等),并举例说明如何在创建表时使用这些约束来确保数据的准确性和一致性。
47.9万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

常见的数据完整性约束类型

  1. 主键约束(Primary Key Constraint)
    • 定义:用于唯一标识表中的每一行记录。一个表只能有一个主键,且主键列的值不能为空。
    • 作用:确保表中每行数据的唯一性,方便对数据进行快速定位和引用。
  2. 外键约束(Foreign Key Constraint)
    • 定义:用于建立两个表之间的关联关系。外键是一个表中的一列或多列,它的值必须匹配另一个表(父表)中主键或唯一键的值。
    • 作用:保证数据的参照完整性,即确保相关联的表之间数据的一致性。
  3. 唯一约束(Unique Constraint)
    • 定义:确保表中某列或列组合的值具有唯一性,但可以为空值(不过只能有一个空值)。
    • 作用:防止在特定列上出现重复值,补充主键约束不能有多个唯一标识列的不足。
  4. 检查约束(Check Constraint)
    • 定义:用于限制列的取值范围,确保插入或更新到表中的数据满足特定的条件。
    • 作用:保证数据在语义上的正确性。

创建表时使用这些约束的示例

-- 创建父表(示例:部门表)
CREATE TABLE departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(50) NOT NULL UNIQUE
);

-- 创建子表(示例:员工表),使用外键关联 departments 表
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50) NOT NULL,
    department_id INT,
    salary DECIMAL(10, 2),
    -- 外键约束
    FOREIGN KEY (department_id) REFERENCES departments(department_id),
    -- 检查约束,确保 salary 为正数
    CHECK (salary > 0)
);

在上述示例中:

  • departments 表的 department_id 列设置为主键,保证每个部门有唯一标识;department_name 列设置为唯一约束,确保部门名称不重复。
  • employees 表的 employee_id 列为主键;department_id 列设置为外键,引用 departments 表的 department_id,保证员工所属部门在 departments 表中存在;salary 列设置检查约束,确保工资为正数。