primary key 與 unique 的區別

定義了 UNIQUE 約束的字段中不能包含重複值,可以爲一個或多個字段定義UNIQUE 約束。因此,UNIQUE 即可以在字段級也可以在表級定義, 在UNIQUED 約束的字段上可以包含空值。ORACLE自動會爲具有PRIMARY KEY 約束的字段(主碼字段)建立一個唯一索引和一個NOT NULL約束,定義PRIMARY KEY約束時可以爲它的索引; 

UNIQUED 可空,可以在一個表裏的一個或多個字段定義;PRIMARY KEY 不可空不可重複,在一個表裏可以定義聯合主鍵;

簡單的說,primary key = unique +  not null 

unique 就是唯一,當你需要限定你的某個表字段每個值都唯一,沒有重複值時使用。比如說,如果你有一個person 表,並且表中有個身份證的column,那麼你就可以指定該字段爲unique。 從技術的角度來看,Primary Key和Unique Key有很多相似之處。但還是有以下區別: 

一、作爲Primary Key的域/域組不能爲null,而Unique Key可以。 

二、在一個表中只能有一個Primary Key,而多個Unique Key可以同時存在。 

更大的區別在邏輯設計上。Primary Key一般在邏輯設計中用作記錄標識,這也是設置Primary Key的本來用意,而Unique Key只是爲了保證域/域組的唯一性。 

oracle的constraint中有兩種約束,都是對列的唯一性限制――unique與primary key,但其中是有區別的:

1、unique key要求列唯一,但不包括null字段,也就是約束的列可以爲空且僅要求列中的值除null之外不重複即可;

2、primary key也要求列唯一,同時又限制字段的值不能爲null,相當於Primary Key=unique + not null。 

創建一個primary key和unique key都會相應的創建一個unique index。

0primary key的語法:alter table table name add constraint key name primary key( columns); 

unique key的語法:alter table table name add constraint key name unique( columns); 


一個表只能有一個主鍵,但是可以有好多個UNIQUE,而且UNIQUE可以爲NULL值,如員工的電話號碼一般就用UNIQUE,因爲電話號碼肯定是唯一的,但是有的員工可能沒有電話。

主鍵肯定是唯一的,但唯一的不一定是主鍵;

不要總把UNIQUE索引和UNIQUE約束混爲一談

1、primary key = unique + not null

2、唯一約束和主鍵一樣都是約束的範疇,而且都可以作爲外鍵的參考,不同的是,一張表只能有一個主鍵

3、主鍵和唯一約束的創建需要依靠索引,如果在創建主鍵或唯一約束的時候沒有已經建好的索引可以使用的話,Oracle會自動建立一

個唯一的索引。



文章轉載自:http://blog.csdn.net/zm2714/article/details/8482625

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章