主鍵和唯一索引的區別
前言: 作為一個非開發出身的DBA剛開始對資料庫的主鍵、外來鍵等一系列的詞很是困惑,到後面對主鍵(primary key)和唯一索引(Unique Index)又迷糊了很久,後面終於陸續整理清楚了,總結和大家分享下;
一、相似之處
- 建立主鍵的同時會建立一個唯一索引;
二、區別
- 主鍵是一種約束,目的是對這個表的某一列進行限制;
- 唯一索引是一種索引,索引是資料庫表的一個冗餘結構,目的是為了更好的查詢;
- 主鍵列不允許為空值,而唯一性索引列允許空值;
- 一個表最多隻能一個主鍵,但是可以包含多個唯一索引;
三、測試
測試步驟:
3.1 建立一個表
指令碼:create table john as select * from dba_objects where 1=0;(複製表的結構)
3.2 建立主鍵,檢查是否產生唯一索引和約束
指令碼:ALTER TABLE john ADD CONSTRAINT john_PrimaryKey PRIMARY KEY (object_id); CREATE UNIQUE INDEX john_UniqueKey ON john (owner);
查詢語句:
SELECT table_name,table_type,index_name,index_type,uniqueness
FROM DBA_INDEXES
WHERE TABLE_NAME='JOHN';
3.3 測試再建立唯一索引和主鍵
ALTER TABLE john ADD CONSTRAINT john_PrimaryKey_2 PRIMARY KEY (namespace); ---會報錯誤ORA-02260: 表只能具有一個主鍵
CREATE UNIQUE INDEX john_UniqueKey_2 ON john (timestamp); -----可以建立
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文作者:JOHN
ORACLE技術部落格:ORACLE 獵人筆記 資料庫技術群:367875324 (請備註ORACLE管理 )
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1178618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle主鍵、唯一鍵與唯一索引的區別Oracle索引
- 主鍵、自增主鍵、主鍵索引、唯一索引概念區別與效能區別索引
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- 主鍵(PK)與非空唯一索引(Unique Index)的區別索引Index
- 【INDEX】Oracle中主鍵、唯一約束與唯一索引之區別IndexOracle索引
- 主鍵索引 (聚集索引) 和普通索引 (輔助索引) 的區別索引
- 唯一索引和非唯一索引ROWID儲存的區別索引
- MYSQL中的普通索引,主健,唯一,全文索引區別MySql索引
- 唯一性約束和唯一性索引的區別索引
- indexedDB 索引與primarykey主鍵區別Index索引
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- 關於唯一性索引造成堵塞和非唯一性索引造成堵塞的區別索引
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- MYSQL INNODB主鍵使用varchar和int的區別MySql
- 主鍵與主鍵索引的關係索引
- MySQL 唯一索引和普通索引MySql索引
- MySQL的btree索引和hash索引的區別MySql索引
- [專案踩坑] MySQL 分割槽:分割槽鍵和唯一索引主鍵的關係,解決報錯 A PRIMARY KEYMySql索引
- [轉]聚集索引和非聚集索引的區別索引
- 使用聚集索引和非聚集索引的區別索引
- mysql主從和主備的區別MySql
- MySQL單列索引和組合索引的區別MySql索引
- MySQL Hash索引和B-Tree索引的區別MySql索引
- SQL Server 聚集索引和非聚集索引的區別SQLServer索引
- 【fk_index】外來鍵中有無索引的區別Index索引
- 【唯一】DISTINCT與UNIQUE的“區別”
- MySQL主主模式和主從模式的區別MySql模式
- MySQL單列索引和組合索引的區別介紹MySql索引
- 索引全掃描和索引快速全掃描的區別索引
- 表上建立唯一性索引,SQL*Loader用或不用dirdect的區別索引SQL
- 主鍵local索引、unique local索引、分割槽索引順序的理解索引
- 唯一索引索引
- 唯一index和非唯一index中leaf node裡rowid的一點區別。Index
- MySQL實戰45講——普通索引和唯一索引MySql索引
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- sqlserver索引重建和索引重組的區別和操作方法SQLServer索引
- Oracle刪除主鍵保留索引的方法Oracle索引
- MongoDB之索引(唯一索引)MongoDB索引