MySQL Unique Key(唯一)
MySQL 中的 Unique Key 唯一键是单个字段或字段组合,可确保要存储到列中的所有值都是唯一的。这意味着一列不能存储重复值。例如,“student_info”表中学生的Email和Roll number或“Employee”表中员工的联系电话应该是唯一的。
MySQL 允许我们在一个表中使用多个具有 UNIQUE 约束的列。它可以接受一个空值,但 MySQL 每列只允许一个空值。它确保列或列组的完整性,以将不同的值存储到表中。
一、为什么需要Unique Key(唯一键)
- 它有助于防止两条记录将相同的值存储到列中。
- 它仅存储不同的值,以保持数据库的完整性和可靠性,以便以有组织的方式访问信息。
- 它还可以使用外键来保持表的唯一性。
- 它可以在表中包含空值。
二、 MySQL Unique Key(唯一) 语法
以下语法用于在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 | 列名将成为唯一键。 |
三、MySQL Unique Key(唯一) 示例
以下示例解释了如何在 MySQL 中使用唯一键。
此语句创建一个具有 UNIQUE 约束的表“ 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 查询正确执行,但第二条语句失败并给出错误消息: Duplicate entry '1' for key Stud_ID。
如果要在多个列上定义唯一键,请使用如下查询:
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> 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 table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
示例
此语句在表定义中创建一个没有唯一键列的表“ Student3 ”。
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> SHOW INDEX FROM Student3;
在这里,我们可以看到唯一约束已成功添加到表中:
热门文章
优秀文章