MySQL Unique Key

17 Mar 2025 | 4 分钟阅读

MySQL 中的唯一键是一个单独的字段或字段组合,它确保存储到列中的所有值都是唯一的。这意味着一个列不能存储**重复值**。例如,“student_info”表中的学生电子邮件地址和学号,或者“Employee”表中的员工联系电话都应该是唯一的。

MySQL 允许我们在一个表中对多个列使用 UNIQUE 约束。它可以接受一个**空**值,但 MySQL 仅允许每列一个空值。它确保了列或列组的**完整性**,以便将不同的值存储到表中。

唯一键的需求

  • 它有助于防止两条记录将相同的值存储到列中。
  • 它只存储不同的值,从而维护数据库的完整性和可靠性,以有组织的方式访问信息。
  • 它还与外键一起使用,以保持表的唯一性。
  • 它可以包含表中的空值。

语法

以下语法用于在 MySQL 中创建唯一键。

如果我们只想在表中创建一个唯一键列,请使用以下语法:

如果我们想在表中创建多个唯一键列,请使用以下语法:

如果我们没有为唯一约束指定名称,MySQL 会自动为该列生成一个名称。因此,建议在创建表时使用约束名称。

参数解释

下表详细解释了这些参数。

参数名称描述
table_name这是我们要创建的表的名称。
col1, col2这是表中包含的列名。
constraint_name这是唯一键的名称。
column_name(s)这是将成为唯一键的列名。

唯一键示例

以下示例解释了唯一键在 MySQL 中的使用方式。

此语句创建一个带有 UNIQUE 约束的表 "Student2"

接下来,执行下面列出的插入查询以了解它是如何工作的

输出

在下面的输出中,我们可以看到第一个 INSERT 查询执行正确,但第二个语句失败并报错:Duplicate entry '1' for key Stud_ID。

MySQL Unique Key

如果你想在**多列**上定义唯一键,请使用以下查询:

在输出中,我们可以看到唯一键值包含两列,分别是 **Roll_No** 和 **Email**。

MySQL Unique Key

要验证这一点,请执行以下语句:

这里,我们可以看到唯一约束已成功添加到表中。

MySQL Unique Key

删除唯一键

ALTER TABLE 语句还允许我们从表中删除唯一键。以下语法用于删除唯一键:

在上述语法中,**table_name** 是我们要修改的表的名称,**constraint_name** 是我们要删除的唯一键的名称。

示例

此语句将永久删除表中的 **uc_rollno_email** 约束。

我们可以执行 SHOW INDEX 语句来验证。

使用 ALTER TABLE 语句添加唯一键

此语句允许我们对现有表进行修改。有时我们想为现有表的列添加唯一键;然后,此语句用于为该列添加唯一键。

语法

以下是 ALTER TABLE 语句添加唯一键的语法:

示例

此语句创建一个表 "Students3",该表在表定义中没有唯一键列。

创建表后,如果我们要为此表添加唯一键,我们需要执行以下 ALTER TABLE 语句:

我们可以看到输出,其中两个语句都成功执行。

MySQL Unique Key

要验证这一点,请执行以下语句:

这里,我们可以看到唯一约束已成功添加到表中。

MySQL Unique Key
下一主题MySQL 主键