📜  mysql 唯一两列 - SQL (1)

📅  最后修改于: 2023-12-03 15:33:03.081000             🧑  作者: Mango

MySQL 唯一两列

在 MySQL 中,唯一两列是指在表格中定义两个列为唯一的列,确保每个组合都必须是唯一的,这对于许多应用程序非常有用。

创建唯一两列

在创建 MySQL 表时,可以将两个或多个列定义为唯一两列。

语法
CREATE TABLE table_name (
    column1 datatype UNIQUE,
    column2 datatype UNIQUE
);
示例

以下示例创建了一个名为 employees 的表,其中 employee_idemail 列组合成唯一两列:

CREATE TABLE employees (
    employee_id INT(11) NOT NULL,
    email VARCHAR(255) NOT NULL,
    ...
    UNIQUE (employee_id, email)
);
插入数据

向唯一两列中插入数据时,将检查组合是否已存在。如果唯一两列的值组合已存在,则插入操作将失败。

示例

以下示例尝试将两个员工数据插入到 employees 表中,第二个员工的 employee_idemail 值与第一个员工相同,因此将失败:

INSERT INTO employees (employee_id, email, ...) VALUES (1, 'john@example.com', ...);

INSERT INTO employees (employee_id, email, ...) VALUES (1, 'john@example.com', ...);
查询唯一两列

可以通过唯一两列进行查询,这将检索与指定值组合匹配的所有行。

示例

以下示例查询了所有具有 employee_id 值 1 和 email 值为 john@example.com 的员工:

SELECT * FROM employees WHERE employee_id = 1 AND email = 'john@example.com';
修改唯一两列

如果需要更改唯一两列的值,请确保不会更改为已存在的组合。这可以通过先删除旧记录,然后插入新记录来完成。

示例

以下示例更新了 employee_id 为 1 的员工的 email 值为 new_email@example.com

DELETE FROM employees WHERE employee_id = 1 AND email = 'john@example.com';

INSERT INTO employees (employee_id, email, ...) VALUES (1, 'new_email@example.com', ...);
删除唯一两列

如果需要从表中删除记录,请使用 DELETE 语句。删除操作将一次删除多个行。

示例

以下示例删除了 employee_id 值为 1 和 email 值为 john@example.com 的员工记录:

DELETE FROM employees WHERE employee_id = 1 AND email = 'john@example.com';
结论

通过在 MySQL 表中定义唯一两列,可以确保每个组合都必须是唯一的。这对于确保数据的完整性非常有用,并且可以避免出现重复记录。