主键和唯一键都是关系数据库中的唯一键,它们保证一列或一组列上的值的唯一性。主键约束中已经存在预定义的唯一键约束。尽管主键专门用于标识表中的每个记录,但是另一方面,唯一键用于防止列中的重复条目(空条目除外)。但是,两个键都只能包含一个给定表中的多个列,并且它们在存储和检索数据中都起着至关重要的作用。数据是带有列的一系列表,这些列存储所有类型的信息,可以进一步使用指令进行访问或检索。这是图片的关键所在。主键和唯一键是两个唯一键,这些键确定应如何在系统中存储数据。

主键

主键(也带有PRIMARY关键字)是关系数据库中的唯一键,它标识数据库表中的每个记录。它是唯一的标识符,例如人员的社会保险号,电话号码,驾驶执照号或车辆牌照号。数据库表必须只有一个主键。

数据库中的表包含一列或一组列,其中包含唯一标识表中每一行的值。此列或一组列称为表的主键,该键必须包含唯一值,并且不能包含空值。没有主键,关系数据库将无法工作。

通过在创建或修改表时定义PRIMARY KEY约束来创建主键。在SQL标准中,主键可以包含一个或多个列,而每个列都隐式定义为NOT NULL。如果您在多个列上定义了PRIMARY KEY约束,则可能会导致一列内的值重复,这就是为什么值的每个组合对于所有列都必须唯一的原因。

主键具有以下功能:

  • 每个表必须只有一个主键,且最多只能有一个。
  • 主键不能包含NULL值。
  • 它可能包含一列或多列。
  • 所有列都必须定义为NOT NULL
  • 默认情况下,主键是集群唯一索引。

唯一键

唯一键是表的一个或多个列/字段的集合,它们唯一地标识数据库表中的记录。 UNIQUE KEY约束确保一列中的所有值在数据库中都是唯一的。就像主键一样,唯一键也可以包含多个列。但是,唯一键只能接受一个空值。数据库表中没有两行具有相同的值。

唯一键与主键非常相似,可以在创建表的过程中进行定义。当一列或一组列在关系数据库系统中被标记为唯一时,它将在分配约束之前检查值的完整性,以防止两个记录在特定列中具有相同的值。

UNIQUE是对非PRIMARY KEY列的约束,其特征如下:

  • UNIQUE KEY约束保证值的唯一性。
  • 可以在一个表上定义多个唯一键。
  • 一列可以包含NULL值,但每列只允许一个NULL值。
  • 默认情况下,唯一键可能会创建非聚集索引。
主键 唯一键
主键用于唯一标识数据库表中的记录/行。 唯一键用于唯一标识表中所有可能的行,而不仅仅是当前存在的行。
它不接受NULL值。 表中只能接受一个NULL值。
默认情况下,它是聚簇索引,数据按聚簇索引顺序组织。 默认情况下,它是唯一的非聚集索引。
一个表中只能有一列是主键。 一个表多列可以具有多个唯一键。
主键是通过使用PRIMARY KEY约束定义的。 唯一键使用UNIQUE约束表示。
用于标识表中的一行。 用于防止列中的重复值。
主键值不能更改或删除。 唯一键值可以修改。

总结

  • 主键和唯一键都是实体完整性约束,在很多方面都相似。 但是,在编程方面有很大的不同。两者都是基本概念,主要用于数据库管理系统。
  • 主键是数据库表字段的一个或多个列/字段的集合,它们唯一地标识表中的记录。 唯一键可防止两个记录在同一个表字段中具有相同的值。
  • 从概念上讲,一个给定的表只能有一个PRIMARY KEY,而一个表则可以有多个UNIQUE KEY
  • 主键必须是唯一的,但是唯一键不必一定是主键。
  • 主键不能接受表字段的NULL值,而唯一键可以允许NULL值(表中只有一个NULL除外)。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:主键和唯一键
本文链接:https://www.vsdiffer.com/vs/primary-key-vs-unique-key.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。