pk 、unique index 和 index 區別

mahanso發表於2010-10-29

pk:主鍵是約束,滿足條件是非空(not null)而且是唯一(unique)的 。

unique index:索引 主要是可以允許有null,不能有重複。

index :索引 可以為null,可以有重複。

        唯一索引和非唯一索引都儲存了rowid,唯一索引的rowid是放行頭的,非唯一索引把rowid當做一個欄位來處理,唯一索引不用記錄rowid的長度,唯一索引比非唯一索引少了一個bytes

測試:

SQL> create table ma_test
  2  (
  3     id number not null,
  4     name varchar(50)
  5  );

表已建立。

SQL>
SQL> create unique index name_index on ma_test(name);

索引已建立。

SQL>
SQL> insert into ma_test values(1,'mahanso');

已建立 1 行。

SQL> insert into ma_test values(2,'alex');

已建立 1 行。

SQL> insert into ma_test values(3,'mike');

已建立 1 行。

SQL> --違反唯一索引
SQL> insert into ma_test values(4,'mahanso');
insert into ma_test values(4,'mahanso')
*
第 1 行出現錯誤:
ORA-00001: unique constraint (EMALL_INTERFACE.NAME_INDEX) violated


SQL> --判斷唯一索引是否可以為null
SQL> insert into ma_test values(4,'');

已建立 1 行。


SQL> drop index name_index ;

索引已刪除。

SQL> drop table ma_test;

表已刪除。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12272958/viewspace-677025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章