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