MySQL - 唯一键

MySQL - 唯一键 首页 / MySQL入门教程 / MySQL - 唯一键

MySQL中的唯一键是单个字段或字段组合,以确保要存储到列中的所有值都是唯一的。这意味着列不能存储重复值(deplicate values)

MySQL允许无涯教程在一个表中使用多个具有UNIQUE约束的列。它可以接受一个 null 值,但是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)这将是列名,这将是唯一键。

唯一键(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@learnfk.com', 22, 'Texas'),
(2, 'Suzi', 'suzi@learnfk.com', 24, 'California'),
(3, 'Joseph', 'joseph@learnfk.com', 23, 'Alaska');

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

在下面的输出中,无涯教程可以看到第一个 INSERT查询执行正确,但是第二条语句失败并给出错误消息。

MySQL Unique Key

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

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 Unique Key

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

mysql> SHOW INDEX FROM Student3;

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

无涯教程网

MySQL Unique Key

删除唯一键

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语句。

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-unique-key.html

来源:LearnFk无涯教程网

使用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 Unique Key

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

mysql> SHOW INDEX FROM Student3;

在这里,无涯教程可以看到唯一约束已成功添加到表中:

MySQL Unique Key

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始学游戏开发 -〔蔡能〕

邱岳的产品实战 -〔邱岳〕

如何设计一个秒杀系统 -〔许令波〕

玩转webpack -〔程柳锋〕

从0打造音视频直播系统 -〔李超〕

OAuth 2.0实战课 -〔王新栋〕

深度学习推荐系统实战 -〔王喆〕

林外 · 专利写作第一课 -〔林外〕

计算机基础实战课 -〔彭东〕

好记忆不如烂笔头。留下您的足迹吧 :)