跟著小郭郭一起學 SQL Server-14 Primary Key (2)

只有感謝的心情不能忘記

在上回我們介紹了 Primary Key 約束的性質以及主要的功能,這次我們要介紹的則是如何對資料表建立 Primary Key,我們可以在建立資料表的當下就對資料表建立,建立時的規則是

Create Table 資料表名稱
(
欄位名稱 欄位型態 Not Null Primary Key,
欄位名稱 欄位型態,
欄位名稱 欄位型態,
欄位名稱 欄位型態,


)

其中,Not Null 是必要的,因為Primary Key 不可為空。




請打開 New Query 後,複製下列文字並按下 F5 執行:

Create Table Primary_Key_Test
(
	Student_ID int Not Null Primary Key,
	Student_Name nvarchar(50),
	Date_of_Birth date
)

或者是在建立資料表之後,對現有的資料表建立,建立時的規則是


Alter Table 資料表名稱
Add Primary Key (欄位名稱);

指定的欄位一樣必須有 Not Null 的約束。

請打開 New Query 後,複製下列文字並按下 F5 執行:

Create Table Primary_Key_Test_2
(
	Student_ID int Not Null,
	Student_Name nvarchar(50),
	Date_of_Birth date
)
ALTER TABLE Primary_Key_Test_2
ADD PRIMARY KEY (Student_ID);

值得注意的是,對於同一個資料表只能建立一個 Primary Key 約束,如果試圖建立多個 Primary Key 約束,則會引發錯誤。

而在建立 Primary Key 約束之後,對資料表寫入資料就會受到 Primary Key 約束所影響,請打開 New Query 後,複製下列文字並按下 F5 執行:

Create Table Primary_Key_Test_3
(
	Student_ID int Not Null,
	Course_ID  nvarchar(50) Not Null,
	Score CHAR(5)
);
ALTER TABLE Primary_Key_Test_3
ADD PRIMARY KEY (Student_ID,Course_ID);

INSERT INTO Primary_Key_Test_3 (Student_ID,Course_ID,Score)Values
('1001','0020','A'),
('1001','0021','B'),
('1002','0020','C'),
('1001','0020','D')

就會發現在作為 Primary Key 約束的欄位已經無法再插入重複的資料。

接下來則是介紹哪裡可以看到這些已經被建立的 Primary Key 約束,首先是透過物件瀏覽器可以在每張資料表的底下看到 Primary Key 的資料限制,如同上面的例子。

第二個方法是透過對系統資料表進行物件的查詢,請打開 New Query 後,複製下列文字並按下 F5 執行:

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 

而我們其實是無法直接修改已經建立的 Primary Key 約束的,只有透過刪除並重新建立才能更動資料表中的 Primary Key 約束,

以上就是 Primary Key 約束的建立、效果、檢視方式與如何刪除,在下一次,我們將會講解 Foreign Key 條件約束。刪除時的規則是 Alter Table 資料表名稱 Drop 約束名稱,請打開 New Query 後,複製下列文字並按下 F5 執行:

ALTER TABLE Primary_Key_Test_3
DROP PK__Primary___018AE9F347CD022C

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 

就會發現原本在 Primary_Key_Test_3 資料表上的 Primary Key 約束已經消失了。

以上就是 Primary Key 約束的建立、檢視、刪除與實際效果,在下次我們將會說明 Foreign Key 資料約束。

發表留言