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