MySQL 主键和唯一键区别

MySQL 中的Key(键)是用于在一个或多个表之间构建关系的列或列集。它们还用于访问表中的记录。这两个键都为表或关系中的一列或一组列提供了保证的唯一性。它们之间的主要区别在于,主键(Primary Key)标识表中的每条记录,而唯一键(Unique Key)可防止列中出现重复条目​​,但 NULL 值除外。在本文中,我们将根据各种参数比较主键和唯一键之间的本质区别。在进行比较之前,我们将简要讨论这些关键。

一、什么是主键?

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

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

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

二、主键的特点

以下是基本的主键 的功能:

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

三、什么是唯一键?

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

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

 

这里Stud_ID可以指定为唯一约束,因为每个学生都必须有唯一的标识号。如果一个学生改变了学院,那么他或她将没有任何学生证。在这种情况下,条目可能包含NULL值,因为唯一键约束允许存储 NULL,但它应该只有一个。

四、唯一键的特点

以下是 唯一键 的功能:

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

五、主键 和 唯一键 的主要区别

以下几点解释了 主键和 唯一键 之间的关键区别:

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

六、主键 与 唯一键 详细对比

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

比较维度 主键(Primary Key) 唯一键(Unique Key)
基本概念 主键用作表中每条记录的唯一标识符。 当表中不存在主键时,唯一键也是记录的唯一标识符。
空值 我们不能在主键列中存储 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 值时,主键很有用。当我们在另一个表中有一个外键来创建表之间的关系时,它也可能是理想的。

 

热门文章

优秀文章