Primary key 与Unique Key都是MySQL数据库的惟一性约束。可是两者有很大的区别:sql
一、Primary key的1个或多个列必须为NOT NULL,若是列为NULL,在增长PRIMARY KEY时,列自动更改成NOT NULL。而UNIQUE KEY 对列没有此要求,即惟一约束的字段能够存在着空值。数据库
二、一个表只能有一个PRIMARY KEY,但能够有多个UNIQUE KEY。索引
主键和惟一键约束是经过参考索引实施的,若是插入的值均为NULL,则根据索引的原理,全NULL值不被记录在索引上,因此插入全NULL值时,能够有重复的,而其余的则不能插入重复值。get
例如:
alter table t add constraint uk_t_1 unique (a,b);
insert into t (a ,b ) values (null,1); # 不能重复
insert into t (a ,b ) values (null,null); # 能够重复table