DBMS 中的唯一键

17 Mar 2025 | 4 分钟阅读

“唯一”这个词定义了一个与其他事物不同而独特的事物。DBMS 中的唯一键是能够唯一标识表中所有记录的键。

在本节中,我们将了解唯一键及其作用,并通过一些示例来理解唯一键的工作原理。

什么是唯一键

DBMS 中的唯一键用于唯一标识表中的一个元组,并用于防止表中值的重复。

唯一键的作用

唯一键用于消除表中值的重复。然而,主键的使用与唯一键相同,但两者之间存在差异。主键不能接受 NULL 值,但唯一键可以有一个 NULL 值作为其值。

唯一键与主键有何不同

以下区别点将帮助我们理解唯一键和主键之间的区别:

  • 主键字段的值永远不能是 NULL,而唯一键的一个字段值可以是 NULL
  • 一个表不能有多个主键,但一个表可以有多个唯一键。
  • 存在不同类型的关系数据库,但在其中一些数据库中,主键默认可以生成聚集索引。另一方面,唯一键默认可以生成非聚集索引。

这些区别点有助于我们区分这两种键。

注意:SQL 标准认为唯一键不满足或不保证其值为 NULL 的行的唯一性。然而,其他 RDBMS 不遵循 SQL 标准。

实现唯一键

在这里,我们将实现唯一键约束

创建表

下面的语法显示了在 CREATE Table 上实现唯一键

下面是另一种在表中为多个列实现唯一键的语法

我们在创建单个表时,在两个列上设置了唯一键。

ALTER Key

下面是 ALTER Key 上使用唯一键的语法

这是为表的一个列定义唯一键的语法。

下面是另一种可用于在表的多列上定义唯一键的语法

删除唯一键

我们可以轻松地从表的一个或多个列中删除唯一键。

下面是从表中删除唯一键的语法

唯一键示例

让我们看一个示例来理解唯一键的工作原理。

考虑一个具有以下属性的表 STUDENT_DETAIL

Roll_no: 一个保存分配给学生的学号的属性。

Name: 一个保存学生在指定学号上的姓名的属性。

Address: 一个保存学生地址的属性。

Personal_id: 一个保存学生其他个人 ID 号码的属性,例如身份证、护照等。

上面 STUDENT_DETAIL 的图示如下

Unique Key in DBMS

需要注意的点

  1. 从这里我们可以看到,学生的学号将作为主键,并且不会为空,因为每个学生都有唯一的学号,因此该值不能为空。
  2. 其次,我们可以将 Personal_id 设置为唯一键,因为由于某种原因,可能有些学生没有其他个人 ID。因此,在这种情况下,该值可以设置为 NULL,并且唯一键只能有一个 NULL 值。因此,我们可以将 Personal_id 设置为唯一键。

此外,从这两点我们可以理解,主键和唯一键是不同的。

示例 2

我们可以采取另一个例子,其中一个表中可以有多个唯一键。

考虑一个 Candidate_Detail 表的示例,其中包含以下属性

Candidate_no: 一个保存候选人注册号的属性。

Name: 一个保存候选人姓名的属性。

Aadhar_no: 一个保存候选人 12 位 Aadhar 号码的属性。

Other_Id: 一个保存其他 ID 号码值的属性。

下方的图表显示了 Candidate_Detail 的表创建

Unique Key in DBMS

从上面的表中,我们得出结论,我们可以将 Aadhar_no 和 Other_Id 都设置为唯一键,因为这两个列将为空或包含唯一的标识号。因此,我们可以在一个表中将两个列设置为唯一键。


下一主题规范化的目的