MySQL – 唯一外键

MySQL – 唯一外键

在本文中,我们将介绍MySQL中唯一外键的概念与用法。唯一外键是指具有唯一值的外键约束。它在数据库中用于确保外键表中的每个记录具有唯一的值。

阅读更多:MySQL 教程

唯一外键的语法

在MySQL中创建唯一外键的语法如下:

ALTER TABLE child_table
ADD CONSTRAINT unique_constraint_name UNIQUE (fk_column)

例如,如果我们想要确保子表employees中的employee_code列具有唯一的值,我们可以这样写:

ALTER TABLE employees
ADD CONSTRAINT employees_employee_code_uq UNIQUE (employee_code)

唯一外键的示例

假设我们有两个表,employees和departments。每个部门有一个编号(department_code),每个员工都隶属于某个部门(department_code作为外键)。我们希望每个部门的编号只能出现一次,并且每个员工的隶属部门是存在的。

CREATE TABLE departments (
  department_code INT PRIMARY KEY,
  department_name VARCHAR(50)
);

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  department_code INT,
  FOREIGN KEY (department_code)
    REFERENCES departments(department_code),
  CONSTRAINT employee_department_code_uq UNIQUE (department_code)
);

我们可以在employees表上创建一个唯一外键约束,确保department_code列中的值不重复。如果我们试图向表中添加一行重复值,MySQL会返回一个错误。

INSERT INTO departments (department_code, department_name) VALUES (1, 'Sales');
INSERT INTO departments (department_code, department_name) VALUES (2, 'Marketing');
INSERT INTO departments (department_code, department_name) VALUES (3, 'Finance');

INSERT INTO employees (id, name, department_code) VALUES (1, 'John Doe', 1);
INSERT INTO employees (id, name, department_code) VALUES (2, 'Jane Smith', 2);
INSERT INTO employees (id, name, department_code) VALUES (3, 'Bob Johnson', 3);

INSERT INTO employees (id, name, department_code) VALUES (4, 'Sue Wong', 1); -- 返回错误

总结

在MySQL中,唯一外键是用于确保外键表中的每个记录具有唯一值的外键约束。它对于维护数据完整性非常有用,可以确保在子表中引用父表中的一个特定值时,该值在父表中确实存在,并且只存在一次。通过使用唯一外键,我们可以更好地管理我们的数据库,并确保数据的准确性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程