我听说Primary Key意味着独一无二。如果我错了,请纠正我。
假设我们有一个用户表。它有3列id,用户名和密码。我们通常将id设置为AUTO_INCREMENT。因此,每次我们向表中添加一行时,它在技术上会创建一个新的唯一ID。那么,为什么我们还将id列设置为Primary Key或Unique?
答案 0 :(得分:1)
主键有两件事:
强制实施数据库完整性(列的唯一性和非空)
创建一个实现该索引的索引,这也可以使主键列快速查找为"副作用"。
如果您可以在应用程序代码中确保(例如仅使用自动增量值),则可能不严格需要(1),但它不会受到伤害。
但你几乎肯定想要(2)。
因此,每次我们在表格中添加一行时,它在技术上会创建一个新的唯一ID
嗯,这取决于你。如果您未指定显式值,则仅插入唯一ID。从技术上讲,它不能保证是唯一的,它只是一个自动增量,不考虑表中的任何现有值(可能以某种方式最终在那里)。
答案 1 :(得分:1)
将列作为键提供了其他方面。首先,如果它是主要的或唯一的,这将强制执行没有查询可以为该键输入重复值。键也可以让你做像
这样的事情INSERT ... ON DUPLICATE KEY UPDATE...
当然,您还需要列上的索引以便快速查找。
答案 2 :(得分:1)
AUTO_INCREMENT行为仅在插入期间未指定列时显示。考虑:
CREATE TABLE ai (
ai int unsigned not null auto_increment,
oi int unsigned,
key (ai),
primary key (oi)
);
INSERT INTO ai VALUES (1,2);
INSERT INTO ai VALUES (1,3);
INSERT INTO ai VALUES (null,5);
这将产生(1,2), (1,3), (2,5)
。请注意AUTO_INCREMENT列如何重复。