primary key與unique的區別

2021-08-23 14:40:39 字數 1415 閱讀 4617

定義了unique約束的字段中不能包含重複值,可以為乙個或多個字段定義unique約束。因此,unique即可以在字段級也可以在表級定義, 在uniqued約束的字段上可以包含空值。oracle自動會為具有primary key約束的字段(主碼字段)建立乙個唯一索引和乙個not null約束,定義primary key約束時可以為它的索引; 

uniqued可空,可以在乙個表裡的乙個或多個字段定義;primary key不可空不可重複,在乙個表裡可以定義聯合主鍵;

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

一、作為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會自動建立乙個唯一的索引。

primary key與unique的區別

定義了unique約束的字段中不能包含重複值,可以為乙個或多個字段定義unique約束。因此,unique即可以在字段級也可以在表級定義,在uniqued約束的字段上可以包含空值。oracle自動會為具有primary key約束的字段 主碼字段 建立乙個唯一索引和乙個not null約束,定義pr...

primary key與unique的區別

定義了unique約束的字段中不能包含重複值,可以為乙個或多個字段定義unique約束。因此,unique即可以在字段級也可以在表級定義,在uniqued約束的字段上可以包含空值。oracle自動會為具有primary key約束的字段 主碼字段 建立乙個唯一索引和乙個not null約束,定義pr...

primary key與unique的區別

定義了unique約束的字段中不能包含重複值,可以為乙個或多個字段定義unique約束。因此,unique即可以在字段級也可以在表級定義,在uniqued約束的字段上可以包含空值。oracle自動會為具有primary key約束的字段 主碼字段 建立乙個唯一索引和乙個not null約束,定義pr...