淺談約束和索引
阿新 • • 發佈:2021-06-30
概念
約束 全稱完整性約束,它是關係資料庫中的物件,用來存放插入到一個表中一列資料的規則,用來確保資料的準確性和一致性。
索引 資料庫中用的最頻繁的操作是資料查詢,索引就是為了加速表中資料行的檢索而建立的一種分散的資料結構。可以把索引類比成書的目錄,有目錄的肯定比沒有目錄的書,更方便查詢。
唯一約束 保證在一個欄位或者一組欄位裡的資料都與表中其它行的對應資料不同。和主鍵約束不同,唯一約束允許為 NULL,只是只能有一行。
唯一索引 不允許具有索引值相同的行,從而禁止重複的索引或鍵值。
實踐
mysql:
1、建立表t1和唯一約束:
CREATE TABLE t1 ( col1 INT(11), col2 VARCHAR(20), CONSTRAINT t1_uq UNIQUE (col1) );
2、建立表t2和唯一索引:
CREATE TABLE t2 ( col1 INT(11), col2 VARCHAR(20) ); CREATE UNIQUE INDEX t2_idx ON t2 (col1);
3、唯一約束和唯一索引只是概念不同,實質是相同的:
oracle:
直接說結論:1、索引是索引,約束是約束。建立唯一約束時,會自動建立唯一索引;建立唯一索引時,不會建立唯一約束。
2、允許在約束上建立外來鍵,不允許在索引上建立外來鍵。