MySQL 唯一键

MySQL 唯一键

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

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

唯一键的需求

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

语法

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

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

CREATE TABLE table_name(
    col1 datatype,
    col2 datatype UNIQUE,
    ...
);

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

CREATE TABLE table_name(
  col1 col_definition,
  col2 col_definition,
  ...
  [CONSTRAINT constraint_name]
  UNIQUE(column_name(s))
);

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

参数说明

以下表格详细解释了参数。

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

唯一键示例

以下示例解释了在MySQL中如何使用唯一键。

这个语句创建了一个带有唯一约束的表” Student2 “:

CREATE TABLE Student2 (
    Stud_ID int NOT NULL UNIQUE, 
    Name varchar(45), 
    Email varchar(45),
    Age int, 
    City varchar(25)
);

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

mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City)
VALUES (1, 'Peter', 'peter@javatpoint.com', 22, 'Texas'),
(2, 'Suzi', 'suzi@javatpoint.com', 24, 'California'),
(3, 'Joseph', 'joseph@javatpoint.com', 23, 'Alaska');

mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City)
VALUES (1, 'Stephen', 'stephen@javatpoint.com', 22, 'Texas');

输出

在下面的输出中,我们可以看到第一个 INSERT 查询 正确执行,但第二个语句失败并给出了一个错误,错误信息是:键值 Stud_ID 存在重复条目 ‘1’。

MySQL 唯一键

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

CREATE TABLE Student3 (
    Stud_ID int, 
    Roll_No int,
    Name varchar(45) NOT NULL, 
    Email varchar(45),
    Age int, 
    City varchar(25),
    CONSTRAINT uc_rollno_email Unique(Roll_No, Email)
);

输出中,我们可以看到唯一键值包含两列,它们分别是 Roll_No(学号)Email(电子邮件)

MySQL 唯一键

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

mysql> SHOW INDEX FROM Student3;

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

MySQL 唯一键

删除唯一键

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

ALTER TABLE table_name  DROP INDEX constraint_name;

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

示例

此语句将永久地从表中删除 uc_rollno_email 约束。

mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;

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

使用ALTER TABLE语句创建唯一键

这个语句允许我们对现有的表进行修改。有时候我们想要给一个已存在的表的列添加一个唯一键;这时,我们就可以使用这个语句来为该列添加唯一键。

语法

下面是使用 ALTER TABLE语句 添加唯一键的语法:

ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);

示例

该语句创建了一个名为 Students3 的表,该表在表定义中没有唯一键列。

CREATE TABLE Student3 (
    Stud_ID int, 
    Roll_No int,
    Name varchar(45) NOT NULL, 
    Email varchar(45),
    Age int, 
    City varchar(25)
);

创建完表之后,如果我们想向该表添加唯一键,我们需要执行以下 ALTER TABLE 语句:

mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);

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

MySQL 唯一键

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

mysql> SHOW INDEX FROM Student3;

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

MySQL 唯一键

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程