MySQL中primary key与unique key的区别以及使用场景
在MySQL中,PRIMARY KEY
和UNIQUE KEY
都是索引,不过它们有一些重要的区别:
唯一性:
PRIMARY KEY
约束确保列(或列组合)是唯一的,并且不是 NULL。UNIQUE KEY
约束确保列(或列组合)是唯一的,但是可以有多个 NULL 值。
空值:
PRIMARY KEY
列不能有 NULL 值。UNIQUE KEY
列可以有一个或多个 NULL 值。
索引名称:
PRIMARY KEY
索引的名称总是为PRIMARY
。UNIQUE KEY
的索引名称是在创建时指定的(如果没有指定,MySQL将自动生成一个名称)。
- 一张表只能有一个
PRIMARY KEY
,但可以有多个UNIQUE KEY
。
使用场景:
- 如果你想要确保记录的唯一性,并且不想有任何空值,使用
PRIMARY KEY
。 - 如果你只需要确保列的值是唯一的,并且允许有空值,使用
UNIQUE KEY
。
示例代码:
创建表时指定 PRIMARY KEY
:
CREATE TABLE my_table (
id INT AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100),
PRIMARY KEY (id)
);
创建表时指定 UNIQUE KEY
:
CREATE TABLE my_table (
id INT AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
PRIMARY KEY (id)
);
在现有表中添加 UNIQUE KEY
:
ALTER TABLE my_table ADD UNIQUE (email);
评论已关闭