唯一性約束、主鍵約束、唯一索引的區別
1.主鍵約束(PRIMARY KEY)
主鍵用於唯一地標識表中的每一條記錄
可以定義一列或多列為主鍵
主鍵列上沒有任何兩行具有相同值(即重複值)
主鍵列上也不能為空值
2.唯一性約束(UNIQUE)
唯一性約束用來限制不受主鍵約束的列上的資料的唯一性,
即表中任意兩行在 指定列上都不允許有相同的值。
3.唯一索引(INDEX)
建立唯一索引可以確保任何生成重複鍵值的嘗試都會失敗。
唯一性約束和主鍵約束的區別:
(1)唯一性約束允許在該列上存在NULL值,而主鍵約束的限制更為嚴格,不但不允許有重複,而且也不允許有空值。
(2)在建立唯一性約束和主鍵約束時可以建立聚集索引和非聚集索引,但在 預設情況下主鍵約束產生聚集索引,而唯一性約束產生非聚集索引
約束和索引, 前者是用來檢查資料的正確性,後者用來實現資料查詢的優化,目的不同。
唯一性約束與唯一索引有所不同:
(1)建立唯一約束會在Oracle中建立一個Constraint,同時也會建立一個該約束對應的唯一索引。
(2)建立唯一索引只會建立一個唯一索引,不會建立Constraint。
也就是說其實唯一約束是通過建立唯一索引來實現的。
在刪除時這兩者也有一定的區別:
刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對應的列還是必須唯一的,
而刪除了唯一索引的話就可以插入不唯一的值。