sql> create table test_ranbo(id number);
table created
sql> alter table test_ranbo add constraint test_ranbo$uk unique (id);
table altered
sql> insert into test_ranbo(id) values(null);
1 row inserted
sql> insert into test_ranbo(id) values(null);
1 row inserted
可以插入兩個null.
下面建個包含兩列外來鍵的例子。
sql> truncate table test_ranbo;
table truncated
sql> alter table test_ranbo drop constraint test_ranbo$uk;
table altered
sql> alter table test_ranbo add name varchar2(30);
table altered
sql> desc test_ranbo;
name type nullable default comments
---- ------------ -------- ------- --------
id number y
name varchar2(30) y
sql> alter table test_ranbo add constraint test_ranbo$uk unique (id ,name);
table altered
sql> insert into test_ranbo values(1,null);
1 row inserted
sql> insert into test_ranbo values(1,null);
insert into test_ranbo values(1,null)
ora-00001: unique constraint (dbown.test_ranbo$uk) violated
再由測試外來鍵是三列的情況。
sql> truncate table test_ranbo;
table truncated
sql> alter table test_ranbo drop constraint test_ranbo$uk;
table altered
sql> alter table test_ranbo add type varchar2(30);
table altered
sql> desc test_ranbo;
name type nullable default comments
---- ------------ -------- ------- --------
id number y
name varchar2(30) y
type varchar2(30) y
sql> alter table test_ranbo add constraint test_ranbo$uk unique (id,name,type);
table altered
sql> insert into test_ranbo(id,name,type) values(1,null,null);
1 row inserted
sql> /
insert into test_ranbo(id,name,type) values(1,null,null)
ora-00001: unique constraint (dbown.test_ranbo$uk) violated
sql> insert into test_ranbo(id,name,type) values(null,null,null);
1 row inserted
sql> /
1 row inserted
sql> insert into test_ranbo(id,name,type) values(null,'a',null);
1 row inserted
sql> /
insert into test_ranbo(id,name,type) values(null,'a',null)
ora-00001: unique constraint (dbown.test_ranbo$uk) violated
由此可見,在唯一鍵包含兩列以上的情況下,只要有了一列是非null,那麼其他列的null可以理解為乙個確定的值,唯一鍵會起作用,只有唯一鍵的所有列都是null值的時候不管插入多少行相同的記錄唯一鍵都不起作用。
Mysql 唯一鍵約束
3 唯一鍵約束也是分為兩種 4 刪除唯一鍵約束 乙個表中可以有多個唯一鍵約束 唯一鍵約束意味著,唯一,可以為null 唯一鍵的約束名可以自己指定,也可以預設 建立唯一鍵約束,也會在對應列上建立索引。而且刪除唯一鍵約束的方式是通過刪除對應索引來實現的。create table 資料庫名.表名 欄位名1...
主鍵 唯一鍵 唯一索引區別
主鍵 1.可以定義一列或多列為主鍵。不允許空 null 主健可作外健,唯一索引不可 2.定義乙個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別。唯一鍵 唯一性約束 1.唯一性約束用來限制不受主鍵約束的列上的資料的唯一性,用於作為訪問某行的可選手段,指定列上都不允許有相同的值,允許空 null ...
資料庫 加索引唯一鍵 跟唯一鍵的差別
唯一鍵鍵約束和唯一索引功能是一樣的 唯一性 索引 唯一鍵鍵約束 只是作為一種獨特的約束 如主鍵約束,唯一鍵約束,check約束,外來鍵約束 的一種 以約束的形式管理.但是同時又自動建立了唯一非聚集索引,也就有了索引的效能和部分功能.實際上唯一鍵約束是用唯一索引來約束的。唯一索引 就是一種索引,它對某...