什么是主键
What is a PRIMARY KEY
在数据库代码中,我看到对 PRIMARY KEY
的引用。什么是主键?如果我的一个表中的某些列形成主键...或不形成主键,这会有什么区别。
第一范式要求你有一个唯一的键来建立关系。如果不满足此要求(即如果您没有唯一键),那么您的 table 将只是一个堆,而不是一个关系。
主键或多或少(即粗略地说)是一个专门选择的唯一键。设计模式的人选择它。 PK 和唯一键之间的主要区别是唯一键可以包含 NULL 值,而 PK 不能。此外,您可以在给定的 table 中拥有多个唯一密钥,但最多有一个 PK。
通过将其中一个唯一键设为主键,您可以让其他 table 通过其外键 (FK) 轻松指向此 table。从技术上讲,FK(子 tables 的)也可以指向任何唯一键(来自父 table),但通常人们为此目的使用主键(PK)(如前所述)基本上只是唯一键之一。这意味着 FK 通常指向 PK。
有关详细信息,另请参阅:
What is the difference b/w Primary Key and Unique Key
主键是关系数据库中的键,对于每条记录都是唯一的。
如果对数据库中列的引用是主键,则该 值将是唯一的。 当您尝试向具有相同主键的值添加另一行时,它会引发错误。
如果列上没有主键,您也可以添加任何非唯一值。
从结构上讲,primary key
是 column
/group of columns
具有 unique index
而不能是 null
。每个 table 最多可以有一个主键(尽管一个主键可以有多个字段)。
从语义上讲,PK 唯一标识 table 中的一行。由于它的限制,您可以 100% 确定不存在具有相同 PK 值的两条记录。这允许在 SQL 服务器和 SQL 客户端
上进行优化
主键(缩写为PK)是table的索引,具有非空约束。在 table 上使用非空索引的主要结论是 每个 table 行的唯一标识符 .主键可以建立在单个列或相同table的多个不同列以及常规索引上。开发人员通常会选择一个唯一标识符(例如'id')作为主键,即使没有严格定义什么必须是主键。
在关系数据库中,主键使用属于第一范式 (1NF) 中的原子性概念来引用来自任何其他 table 的 table 行,这意味着您具有相同的 data/row 只在数据库中使用一次并使用其主键进行引用。
关于主键的最后一个重要思考是更好的性能。在许多情况下,索引通常有助于解决性能问题。然而,在主键的情况下,您可以预期您经常使用主键作为访问条件或 where 子句访问 table 行(例如 SELECT * FROM mytable WHERE id = 3).您可以期望您的 DBMS 在存储上组织数据,以便使用主键快速访问。 如果 table 上没有主键,您可能会遇到一些性能问题.
进一步阅读主键:
在数据库代码中,我看到对 PRIMARY KEY
的引用。什么是主键?如果我的一个表中的某些列形成主键...或不形成主键,这会有什么区别。
第一范式要求你有一个唯一的键来建立关系。如果不满足此要求(即如果您没有唯一键),那么您的 table 将只是一个堆,而不是一个关系。
主键或多或少(即粗略地说)是一个专门选择的唯一键。设计模式的人选择它。 PK 和唯一键之间的主要区别是唯一键可以包含 NULL 值,而 PK 不能。此外,您可以在给定的 table 中拥有多个唯一密钥,但最多有一个 PK。
通过将其中一个唯一键设为主键,您可以让其他 table 通过其外键 (FK) 轻松指向此 table。从技术上讲,FK(子 tables 的)也可以指向任何唯一键(来自父 table),但通常人们为此目的使用主键(PK)(如前所述)基本上只是唯一键之一。这意味着 FK 通常指向 PK。
有关详细信息,另请参阅:
What is the difference b/w Primary Key and Unique Key
主键是关系数据库中的键,对于每条记录都是唯一的。
如果对数据库中列的引用是主键,则该 值将是唯一的。 当您尝试向具有相同主键的值添加另一行时,它会引发错误。
如果列上没有主键,您也可以添加任何非唯一值。
从结构上讲,primary key
是 column
/group of columns
具有 unique index
而不能是 null
。每个 table 最多可以有一个主键(尽管一个主键可以有多个字段)。
从语义上讲,PK 唯一标识 table 中的一行。由于它的限制,您可以 100% 确定不存在具有相同 PK 值的两条记录。这允许在 SQL 服务器和 SQL 客户端
上进行优化主键(缩写为PK)是table的索引,具有非空约束。在 table 上使用非空索引的主要结论是 每个 table 行的唯一标识符 .主键可以建立在单个列或相同table的多个不同列以及常规索引上。开发人员通常会选择一个唯一标识符(例如'id')作为主键,即使没有严格定义什么必须是主键。
在关系数据库中,主键使用属于第一范式 (1NF) 中的原子性概念来引用来自任何其他 table 的 table 行,这意味着您具有相同的 data/row 只在数据库中使用一次并使用其主键进行引用。
关于主键的最后一个重要思考是更好的性能。在许多情况下,索引通常有助于解决性能问题。然而,在主键的情况下,您可以预期您经常使用主键作为访问条件或 where 子句访问 table 行(例如 SELECT * FROM mytable WHERE id = 3).您可以期望您的 DBMS 在存储上组织数据,以便使用主键快速访问。 如果 table 上没有主键,您可能会遇到一些性能问题.
进一步阅读主键: