“唯一密钥”和“主密钥”之间的区别


Answers:


20

一个表最多可以有一个PRIMARY KEY约束,但是可以有多个UNIQUE KEY约束。

属于的列PRIMARY KEY必须定义为NOT NULL。对于作为UNIQUE KEY约束一部分的列,则不需要这样做。如果列不可为空,则唯一键和主键之间没有区别。

另一个小的区别是,您可以选择所需的UNIQUE KEY约束(和索引)名称。另一方面,PRIMARY KEY具有默认名称:PRIMARY


5

一个主要区别

  • 主键不允许可为空的列
  • 唯一键允许可为空的列

否则,没有太大的区别...


4

其他人没有指出的事情:

  • 如果您没有在InnoDB表中显式声明PK,它将在幕后为您创建一个。您不能使用此隐式键访问,排序或过滤。由于每个二级索引都包含指向该行PK的复制指针,因此在资源方面存在分歧。

3

最重要的区别在于它们的目的

  • 主键主键的目的是充当“键”。主键是关系数据库中用于标识记录的键。
  • 唯一索引:唯一索引是旨在提高效果的“索引”。优化器知道,对于条件“其中x =:x”,结果将只有一个记录-因此它可以准备适合该计划的计划。
  • 唯一约束:这是“ CONSTRAINT”,可确保该列中没有重复的值。这是数据完整性的约束。

除其目的外,以下几点值得注意。

  • 除非另有指定,否则PRIMARY KEY会尝试创建一个聚集索引(尽管这是有关SQL Server的,如注释中所述)
  • 每个表只能有一个PRIMARY KEY;但是可以有很多独特的约束和独特的索引
  • PRIMARY KEY始终不为null,但是具有唯一约束的列可以保存NULL值

1
问题被标记为MySQL。您不能另外指定,如果该表使用InnoDB引擎并且具有主键,则这是聚簇索引。没有选择。也许您在考虑SQL Server。
ypercubeᵀᴹ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.