Ⅰ sqlServer主鍵和唯一約束的區別
首先說明一點,主鍵又稱主鍵約束,它也是一種約束,看下它和唯一約束的創建語法:
alter
table
Person
add
constraint
PK_Id
primary
key
(Id)
alter
table
Person
add
constraint
UQ_Name
unique
(Name)
主鍵和唯一約束都要求欄位值唯一,除此外,它們還有如下區別:
·同一張表只能有一個主鍵,但能有多個唯一約束;
·主鍵欄位值不能為NULL,唯一約束欄位值可以為NULL;
·主鍵欄位可以做為其他表的外鍵,唯一約束欄位不可以做為其他表的外鍵;
·SQLServer默認為主鍵欄位創建聚集索引,為唯一約束欄位創建非聚集索引;
主鍵,唯一,但是不能為空;唯一約束,唯一,但是可以為空
Ⅱ sql主鍵和外鍵的區別
主鍵就是當前表的id,表示唯一欄位,方便定位索引查詢……
外鍵就是其他表的主鍵ID在當前表中是外鍵,用來做關聯關系。
create table A(
aid primary key identity(1) not null, 主鍵
aname varchar(50),
bid 外鍵(忘了這單詞怎麼寫了)
)
create table B(
bid primary key identity(1) not null, 主鍵
bsubject varchar(100)
)
數據:A表 1,張三 ,1 B表: 1,數學
2,李四,1 2,英語
3,張三,2
4,王五,2
這樣子B表跟A表就有關聯關系了。我們查詢或者索引的時候可以按ID來找人對吧,
也可以, 1,張三,數字
2,李四,數字
3,張三,英語
4,王五,英語
Ⅲ 在SQL中什麼是主鍵約束什麼是惟一約束兩者有什麼區別
什麼是主鍵約束?什麼是唯一約束?兩者有什麼區別?
答:主鍵約束:有一列或列的組合,其值能唯一的標識表中的每一行。
唯一約束:不允許資料庫表在指定列上具有相同的值,但允許有空值。
區別:一個表可以定義多個唯一約束,只能定義一個主鍵約束;空值得列上可以定義唯一約束,不能定義主鍵約束。
Ⅳ sql主鍵約束和唯一約束的區別
.主鍵約束(PRIMARY KEY)
1) 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。
2) 是不可能(或很難)更新.
3) 主鍵列上沒有任何兩行具有相同值(即重復值),不允許空(NULL).
4) 主健可作外健,唯一索引不可;
2.唯一性約束(UNIQUE)
1) 唯一性約束用來限制不受主鍵約束的列上的數據的唯一性,用於作為訪問某行的可選手段,一個表上可以放置多個唯一性約束.
2) 只要唯一就可以更新.
3) 即表中任意兩行在 指定列上都不允許有相同的值,允許空(NULL).
4) 一個表上可以放置多個唯一性約束
3.唯一索引(INDEX)
創建唯一索引可以確保任何生成重復鍵值的嘗試都會失敗。
唯一性約束和主鍵約束的區別:
(1).唯一性約束允許在該列上存在NULL值,而主鍵約束的限制更為嚴格,不但不允許有重復,而且也不允許有空值。
(2).在創建唯一性約束和主鍵約束時可以創建聚集索引和非聚集索引,但在 默認情況下主鍵約束產生聚集索引,而唯一性約束產生非聚集索引
約束和索引, 前者是用來檢查數據的正確性,後者用來實現數據查詢的優化,目的不同。
唯一性約束與唯一索引有所不同:
(1).創建唯一約束會在Oracle中創建一個Constraint,同時也會創建一個該約束對應的唯一索引。
(2).創建唯一索引只會創建一個唯一索引,不會創建Constraint。
也就是說其實唯一約束是通過創建唯一索引來實現的。
在刪除時這兩者也有一定的區別:
刪除唯一約束時可以只刪除約束而不刪除對應的索引,所以對應的列還是必須唯一的,
而刪除了唯一索引的話就可以插入不唯一的值。
Ⅳ SQL中unique[唯一]與primary key[主建] 的區別,我覺得它們都是應用於標識表中的唯一實體。
sql server聯機叢書都說的很清楚了:
可使用 UNIQUE 約束確保在非主鍵列中不輸入重復值。盡管 UNIQUE 約束和 PRIMARY KEY約束都強制唯一性,但在強制下面的唯一性時應使用 UNIQUE 約束而不是 PRIMARY KEY 約束:
非主鍵的一列或列組合。
一個表可以定義多個 UNIQUE 約束,而只能定義一個 PRIMARY KEY 約束。
允許空值的列。
允許空值的列上可以定義 UNIQUE 約束,而不能定義 PRIMARY KEY 約束。