面试题答案
一键面试常见的数据完整性约束类型
- 主键约束(Primary Key Constraint):
- 定义:用于唯一标识表中的每一行记录。一个表只能有一个主键,且主键列的值不能为空。
- 作用:确保表中每行数据的唯一性,方便对数据进行快速定位和引用。
- 外键约束(Foreign Key Constraint):
- 定义:用于建立两个表之间的关联关系。外键是一个表中的一列或多列,它的值必须匹配另一个表(父表)中主键或唯一键的值。
- 作用:保证数据的参照完整性,即确保相关联的表之间数据的一致性。
- 唯一约束(Unique Constraint):
- 定义:确保表中某列或列组合的值具有唯一性,但可以为空值(不过只能有一个空值)。
- 作用:防止在特定列上出现重复值,补充主键约束不能有多个唯一标识列的不足。
- 检查约束(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
列设置检查约束,确保工资为正数。