pk 、unique index 和 index 區別
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 主鍵(PK)與非空唯一索引(Unique Index)的區別索引Index
- unique index與primary key的區別Index
- INDEX UNIQUE SCAN,INDEX FULL SCAN和INDEX FAST FULL SCANIndexAST
- oracle index unique scan/index range scan和mysql range/const/ref/eq_ref的區別OracleIndexMySql
- rebuild index 和 recreate index (重新建立index) 的區別RebuildIndex
- mysql中key 、primary key 、unique key 與index區別MySqlIndex
- Unique Index和Normal Index差異經典對比IndexORM
- 再說Unique Index和Normal Index行為差異IndexORM
- INDEX FULL SCAN和INDEX FAST FULL SCAN區別IndexAST
- index full scan 和 index FAST full scan 區別IndexAST
- Index Unique Scan (213)Index
- global index & local index的區別Index
- INDEX FULL SCAN和INDEX FAST FULL SCAN的區別IndexAST
- OGG How to handle / replicate tables with no (without) primary key (PK) or unique index (UI) (UPI) [IndexUI
- 【Oracle】global index & local index的區別OracleIndex
- Sparse Indexes vs unique indexIndex
- create index/create index online區別Index
- index 和 index_desc hints的一點有意思的區別Index
- oracle invisible index與unusable index的區別OracleIndex
- 唯一性索引(Unique Index)與普通索引(Normal Index)差異(上)索引IndexORM
- 唯一性索引(Unique Index)與普通索引(Normal Index)差異(中)索引IndexORM
- 唯一性索引(Unique Index)與普通索引(Normal Index)差異(下)索引IndexORM
- alter index rebuild和rebuild online的區別IndexRebuild
- [20171211]UNIQUE LOCAL(Partitioned)IndexIndex
- 高效的SQL(Index unique scan最優化)SQLIndex優化
- 唯一index和非唯一index中leaf node裡rowid的一點區別。Index
- rebuild index online和create index online及沒有online的區別RebuildIndex
- 索引唯一性掃描(INDEX UNIQUE SCAN)索引Index
- 在什麼情況下用index unique scansIndex
- 【江楓 】Oracle 9i和10g在create index和rebuild index的統計資訊的區別OracleIndexRebuild
- Data Warehouse Guide閱讀筆記(六):unique constraint & unique indexGUIIDE筆記AIIndex
- analyze index 時validate structure和compute statistics的區別IndexStruct
- Index Full Scans和Index Fast Full ScansIndexAST
- MySQL explain結果Extra中"Using Index"與"Using where; Using index"區別MySqlAIIndex
- 建立檢視和淺析LOCAL INDEX和GLOBAL INDEXIndex
- sqlldr 匯入重複資料導致PK INDEX失效SQLIndex
- ORA-02429: cannot drop index used for enforcement of unique/primary keyIndex
- MYSQL中的type:index 和 Extra:Using indexMySqlIndex