SQL中的主鍵

2021-07-16 02:48:56 字數 1843 閱讀 8527

一、什麼是主鍵

資料庫主鍵是指表中乙個列或者列的組合,其值能夠唯一的標識表中的每乙個行。這樣的一列或者多列成為表的主鍵,通過它可以強制表的實體完整性。當建立或者更改表時可以通過定義primary key約束來建立主鍵,乙個表只能有乙個主鍵約束,而且主鍵約束中的列不能是空值,由於主鍵約束確保唯一資料,所一經常來定義標識列。

二、主鍵的作用

1、 從上面的定義可以看出,主鍵是用於唯一標識資料庫表中一行資料的。

2、 作為乙個可以被外來鍵有效引用的物件。

三、主鍵的設計原則

1、 主鍵應當是對使用者沒有意義的,比如說使用者登陸乙個系統的時候的登入id;而這種情況就不可能了:「學生表」需要支援這樣的需求「學生登出後,可以重新啟用自己的資訊,而且還要保持自己的號碼跟原來的一直」,這樣的話主鍵就不能滿足要求了。

2、 唯一性,這個原則就不用多說了。

3、 非空性:主鍵的值是不可重複的,也不可以為空。

4. 永遠也不要更新主鍵。實際上,因為主鍵除了惟一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對使用者無意義的原則被違反了。

注:這項原則對於那些經常需要在資料轉換或多資料庫合併時進行資料整理的資料並不適用。

5. 主鍵不應包含動態變化的資料,如時間戳、建立時間列、修改時間列等。

6. 主鍵應當有計算機自動生成。如果由人來對主鍵的建立進行干預,就會使它帶有除了惟一標識一行以外的意義。一旦越過這個界限,就可能產生認為修改主鍵的動機,這樣,這種系統用來鏈結記錄行、管理記錄行的關鍵手段就會落入不了解資料庫設計的人的手中。

四、建立主鍵

--在建立表時就可以對欄位加上約束:

create

table

student(studentno

intprimary

keyidentity

(1,

1),

--加主鍵約束,還有標識列屬性(兩者構成實體完整性)

studentname

nvarchar

(15)

notnull

, --

加非空約束,不加"not null" 預設為:可以為空

studentschool

text

(20)

foreign

keyreferences

schooltable(schoolname),

--加外來鍵約束,格式:foreign key references 關聯的表名(欄位名)

studentage

intdefault

((0)),

--加預設值約束

student***

nvarchar

(2)

check

(student***=n

'男'or

student***=n

'女')

--加檢查約束,格式:check (條件表示式)

)

五、測試新增刪除主鍵

--刪除主鍵

alter table stu_pkfk_s drop constraint pk_sgo

--增加主鍵

alter table stu_pkfk_s add constraint pk_s primary key (sno)go

SQL中定義主鍵的方法

1 列級完整性約束條件 只有乙個主鍵 create table student sno char 5 primary key,列級完整性約束條件,sno取值唯一,sname char 20 unique not null,不許取空值 s char 1 sage int,sdept char 15 2...

sql中取消主鍵方法

declare name sysname declare tb name sysname set tb name rmsorganization 填寫表名 select top 1 name name from sys.objects with nolock where type desc prim...

sql 設定主鍵 聯合主鍵

alter table yourtable add constaintname primary key columnname constaintname 資料型別 yourtable 表名 columnname 列名 or create table yourtable column1 int pri...