primary-key - 黑白主键和唯一键有什么区别

标签 primary-key unique-key

我试图在谷歌上找到它,但那里给出的答案并不令人满意。任何人都可以解释明显的区别。

实际上,如果使用主键来唯一选择数据,那么唯一键有什么需要?

什么时候应该使用主键,什么时候应该使用唯一键?

最佳答案

主键和唯一键用于不同的事情 - 了解它们的用途将帮助您决定何时使用它们。

主键用于标识表中的一行数据。每当您需要引用特定行时,就会使用它,例如。在其他表中或通过应用程序代码等。为了标识一行,PK 的值必须是唯一的。此外,它们不能为 null,因为大多数 DBMS 将 null 视为不等于 null(因为 null 通常意味着“未知”)。一张 table 只能有一个PK。数据库中的所有表都应该有一个 PK(尽管大多数 DBMS 不强制执行),并且 PK 可以跨越多个列。

唯一键约束用于确保数据不会在数据库中的两行中重复。对于唯一键约束的值,允许数据库中的一行为空。虽然表应该有一个 PK,但它不需要任何额外的唯一键。但是,如果满足您的需要,表可以有多个唯一键。与 PK 一样,唯一键可以跨越多列。

还值得知道的是,默认情况下,许多 DBMS 索引和使用 PK 对磁盘上的表进行物理排序。这意味着通过 PK 查找值比在一行中使用其他值更快。但是,通常情况下,您可以根据需要覆盖此行为。

关于primary-key - 黑白主键和唯一键有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973420/

相关文章:

mysql - ON DUPLICATE KEY UPDATE 仅针对主键?

java - 使用 Hibernate 根据唯一键查找或插入

php - 如何在 PHP 中生成唯一的安全随机字符串?

database - 唯一标识生成

mysql - 即使新值等于现有主键也能够输入多个值

ruby-on-rails - 在 rails 迁移期间如何避免 id 字段上的隐式序列

mysql - 在mysql中使用文本数据类型创建表

MySQL:如何找到特定主键在其他表中用作外键的位置?

mysql - 使用 Alter 命令删除主键和外键

mysql - 如何不允许在数据库中复制特定值