主键与唯一键的区别

17 Mar 2025 | 5 分钟阅读

MySQL 中的键是用于在两个或多个表之间建立关系的列或列集。它们也用于从表中访问记录。这两种键都为表或关系中的列或列集提供唯一的保证。**它们之间的主要区别在于,主键标识表中的每条记录,而唯一键阻止列中出现重复条目,除了 NULL 值**。在本文中,我们将根据各种参数比较主键和唯一键之间的主要区别。在进行比较之前,我们将简要讨论这些键。

Primary Key vs Unique key

什么是主键?

主键是**唯一或非空**的键,用于唯一标识该表或关系中的每条记录。主键列不能存储重复值,这意味着主键列的值始终是唯一的。它也称为**最小超键**;因此,我们不能在任何关系中指定多个主键。一个表的主键列可以被另一个表的外键列引用。

例如,我们有一个名为 students 的表,其属性包括 Stud_ID、Roll_No、Name、Mobile 和 Email。

Primary Key vs Unique key

这里只有 Roll_No 列永远不会包含相同和 NULL 值。我们知道每个学生都有唯一的学号。因此,两个学生永远不能拥有相同的学号。此功能有助于唯一标识数据库中的每条记录。因此,我们可以将 Roll_No 属性设为主键。

主键的特点

以下是主键的主要特点

  • 主键列不能包含重复值。
  • 主键实现了表的实体完整性。
  • 一个表不能有多个主键列。
  • 我们可以从一个或多个表字段中创建主键。
  • 主键列应具有 NOT NULL 约束。

什么是唯一键?

唯一键是表中的单个列或列组合,用于唯一标识数据库记录。唯一键**阻止**在列中存储**重复值**。与主键列不同,一个表可以包含多个唯一键列。此键类似于主键,不同之处在于唯一键列中可以存储一个 NULL 值。唯一键也称为**唯一约束**,可以被另一个表的外键引用。

例如,让我们考虑一个名为 students 的相同表,其属性包括 Stud_ID、Roll_No、Name、Mobile 和 Email。

Primary Key vs Unique key

这里 Stud_ID 可以被指定为唯一约束,因为每个学生都必须有一个唯一的识别号。如果学生更换大学,那么他或她将不再拥有任何学生 ID。在这种情况下,该条目可能包含 NULL 值,因为唯一键约束允许存储 NULL,但只能有一个。

唯一键的特点

以下是唯一键的主要特点

  • 我们可以从一个或多个表字段中创建唯一键。
  • 一个表可以定义多个唯一键列。
  • 默认情况下,唯一键是非聚集唯一索引。
  • 唯一约束列可以存储 NULL 值,但每个列只允许一个 NULL 值。
  • 外键可以引用唯一约束以保持表的唯一性。

主键与唯一键的关键区别

以下几点解释了主键和候选键之间的主要区别

  • 主键可以由表中的一个或多个字段组成,以唯一标识表中的记录。另一方面,唯一键防止两行在同一列中出现重复条目。
  • 关系数据库中一个表不能有多个主键,而一个表可以有多个唯一键。
  • 主键列不能包含 NULL 值,而唯一键可以包含 NULL 值,但表中只允许一个 NULL 值。
  • 主键应该是唯一的,但唯一键不一定是主键。
  • 主键默认是聚集索引,数据在其中按顺序索引物理组织。相比之下,唯一键是唯一的非聚集索引。
  • 主键实现实体完整性,而唯一键强制实现唯一数据。

主键与唯一键对比图

以下比较图快速解释了它们的主要区别

比较基础主键唯一键
基本功能主键用作表中每条记录的唯一标识符。当表中不存在主键时,唯一键也用作记录的唯一标识符。
NULL我们不能在主键列中存储 NULL 值。我们可以在唯一键列中存储 NULL 值,但只允许一个 NULL 值。
目的它强制实体完整性。它强制唯一数据。
索引主键默认创建聚集索引。唯一键默认创建非聚集索引。
键的数量每个表只支持一个主键。一个表可以有多个唯一键。
值修改我们不能更改或删除主键值。我们可以修改唯一键列值。
用途它用于标识表中的每条记录。它阻止列中出现重复条目,除了 NULL 值。
语法我们可以使用以下语法在表中创建主键列
CREATE TABLE Employee
(
Id INT PRIMARY KEY, 
name VARCHAR(150), 
address VARCHAR(250)
)
我们可以使用以下语法在表中创建唯一键列
CREATE TABLE Person
(
Id INT UNIQUE, 
name VARCHAR(150), 
address VARCHAR(250)
)

结论

在本文中,我们比较了主键和唯一键约束。我们得出结论,当我们希望列不包含重复值时,唯一键很有用。而当我们不希望表中保留 NULL 值时,主键很有用。当我们在另一个表中有外键来创建表之间的关系时,它也是理想的选择。


下一主题主键与候选键