唯一約束和唯一索引區別

2021-08-08 14:32:07 字數 2034 閱讀 5326

1.主鍵約束(primary key)

1) 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵

2) 是不可能(或很難)更新.

3) 主鍵列上沒有任何兩行具有相同值(即重複值),不允許空(null).

4) 主健可作外健,唯一索引不可;

2.唯一性約束(unique)

1) 唯一性約束用來限制不受主鍵約束的列上的資料的唯一性,用於作為訪問某行的可選手段,

乙個表上可以放置多個唯一性約束.

2) 只要唯一就可以更新.

3) 即表中任意兩行在 指定列上都不允許有相同的值,允許空(null).

4)乙個表上可以放置多個唯一性約束

3.唯一索引(index)

建立唯一索引可以確保任何生成重複鍵值的嘗試都會失敗。

唯一性約束和主鍵約束的區別:

(1).唯一性約束允許在該列上存在null值,而主鍵約束的限制更為嚴格,

不但不允許有重複,而且也不允許有空值

(2).在建立唯一性約束和主鍵約束時可以建立聚集索引和非聚集索引,

但在預設情況下主鍵約束產生聚集索引,而唯一性約束產生非聚集索引

約束和索引, 前者是用來檢查資料的正確性,後者用來實現資料查詢的優化,目的不同。

唯一性約束與唯一索引有所不同:

(1).建立唯一約束會在oracle中建立乙個constraint,同時也會建立乙個該約束對應的唯一索引。

(2).建立唯一索引只會建立乙個唯一索引,不會建立constraint。

也就是說其實唯一約束是通過建立唯一索引來實現的。

1. 建表時加上唯一性約束

create table `t_user` (

`id` int(11) not null auto_increment, -- 自增

`username` varchar(18) not null unique, -- 唯一性約束

`password` varchar(18) not null,

primary key (`id`)

) engine=innodb auto_increment=1018 default charset=utf8;

2.給已經建好的表加上唯一性約束

alter table `t_user` add unique(`username`);

在刪除時這兩者也有一定的區別:

刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對應的列還是必須唯一的,

而刪除了唯一索引的話就可以插入不唯一的值。

索引是使用 create/drop index 建立和刪除的

而約束是使用 alter table tb add constraint 建立, 使用 drop constraint 刪除

唯一約束,主鍵約束,唯一索引

1.unique約束和primary key約束用來保證同一表中指定的列上沒有重複值,這兩個約束都產生唯一索引確保資料一致性,預設情況下,unique約束產生唯一的非聚集索引,primary key約束產生唯一的聚集索引。primary key約束比unique約束嚴格 primary key列不允...

oracle 唯一約束 和 唯一索引

唯一性約束 唯一性約束指表中乙個字段或者多個字段聯合起來能夠唯一標識一條記錄的約束。聯合欄位中,可以包含空值。注 在oracle中,唯一性約束最多可以有32列。唯一性約束可以在建立表時或使用alter table語句建立。唯一性約束和主鍵的區別 主鍵 primary key 所有組成主鍵的列都不能包...

Oracle中唯一約束和唯一索引的區別

在使用toad來操作oracle資料庫時,會注意到建立約束時有primary key check unique和foreign key四種型別的約束,這與sql server中的約束沒有什麼區別,這裡的check約束除了用於一般的check約束外,在oracle中也用於非空約束的實現。也就是說如果乙...