SQL中的 PRIMARY KEY 是 NOT NULL 和 UNIQUE 约束的组合,唯一的区别是只有一个表中可以存在PRIMARY KEY 约束。我想知道,为什么我们不能仅使用 NOT NULL 和 UNIQUE 约束进行管理?即使他们俩都做同样的事情。
谢谢
答案 0 :(得分:3)
主键的定义是:
unique
。not null
。您正在询问第三个条件。好吧,这就是定义。 “主键”是一组已明确选择以唯一标识表中每一行的键。 “主要”一词意味着每个表只有一个。满足前两个条件的其他键或键组合称为候选主键。
尽管没有严格执行,但是主键是引用单个行的最佳方法。例如,它们应用于外键约束(并且我接触过的任何数据库都对外键约束强制执行主键)。具有多个不同的键引用一个表会混淆数据模型。考虑实体关系建模。链接应该是主键。
为了更好地使用主键,默认情况下,某些数据库(例如使用InnoDB存储引擎的MySQL)基于主键的群集表。一个表只能集群一次,因此只能使用一个键。
答案 1 :(得分:1)
您指出了PK和唯一约束之间的区别,但这并不是它们之间的唯一区别。
键的主键和唯一键之间的区别是-定义主键时,会自动创建聚集索引,而唯一键会生成非聚集索引。您可以进行一些Google搜索以了解有关聚簇索引和非聚簇索引的想法。
另一个差异是-主键是表上的唯一字段,但在特殊意义上,表将该行视为其键。这意味着其他表可以使用此字段来为其自身创建外键关系。唯一性约束只是意味着特定字段必须唯一。