SQL?Server主鍵約束(PRIMARY?KEY)
SQL Server PRIMARY KEY(主鍵)約束簡介
主鍵是唯一標(biāo)識(shí)表中每一行的一列或一組列。您可以使用主鍵約束為表創(chuàng)建主鍵。
如果主鍵僅包含一列,你可以使用PRIMARY KEY
約束作為列約束:
CREATE TABLE table_name ( pk_column data_type PRIMARY KEY, ... );
如果主鍵有兩列或多列,則必須將主鍵約束用作表約束:
CREATE TABLE table_name ( pk_column_1 data_type, pk_column_2 data type, ... PRIMARY KEY (pk_column_1, pk_column_2) );
每個(gè)表只能包含一個(gè)主鍵,一個(gè)主鍵可以包含多個(gè)列,即多個(gè)列的組合不能重復(fù)。參與主鍵的所有列必須定義為NOT NULL
。如果未為所有主鍵列指定NOT NULL
約束,SQL Server會(huì)自動(dòng)為這些列設(shè)置非空約束。
SQL Server PRIMARY KEY約束示例
以下示例創(chuàng)建了一個(gè)具有主鍵的表,主鍵由一列組成:
CREATE TABLE dbo.activities ( activity_id INT PRIMARY KEY IDENTITY,--主鍵 activity_name VARCHAR (255) NOT NULL, activity_date DATE NOT NULL );
在表dbo.activities
中,activity_id
列是主鍵列,意味著這一列的值不能重復(fù)
IDENTITY
屬性用于activity_id
列自動(dòng)生成唯一的整數(shù)值。
下面創(chuàng)建一個(gè)由兩列組成外鍵的新表:
CREATE TABLE dbo.participants( activity_id int, customer_id int, PRIMARY KEY(activity_id, customer_id) );
在本例中,activity_id
或customer_id
列中的值可以重復(fù),但兩列中的每個(gè)值組合都必須是唯一的。
通常,表總是在創(chuàng)建時(shí)定義主鍵。然而,有時(shí),現(xiàn)有表可能沒有定義主鍵。在這種情況下,可以使用ALTER TABLE
語句向表中添加主鍵。比如示例:
先創(chuàng)建一個(gè)沒有主鍵列的表:
CREATE TABLE dbo.events( event_id INT NOT NULL, event_name VARCHAR(255), start_date DATE NOT NULL, duration DEC(5,2) );
然后使event_id
列成為主鍵:
ALTER TABLE sales.events ADD PRIMARY KEY(event_id);
注意,如果
sales.events
表已經(jīng)有數(shù)據(jù),在將event_id
列提升為主鍵之前,必須確保event_id
中的值是不重復(fù)的。
到此這篇關(guān)于SQL Server主鍵約束(PRIMARY KEY)的文章就介紹到這了,更多相關(guān)SQL Server主鍵約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在SQL中使用convert函數(shù)進(jìn)行日期的查詢的代碼
在SQL中使用convert函數(shù)進(jìn)行日期的查詢的代碼...2007-08-08SQL Server查找表名或列名中包含空格的表和列實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于SQL Server如何查找表名或列名中包含空格的表和列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-09-09Sql Server 2000刪除數(shù)據(jù)庫備份文件
Sql Server 2000刪除數(shù)據(jù)庫備份文件的語句。2009-09-09SQLServer導(dǎo)出數(shù)據(jù)到MySQL實(shí)例介紹
本文為大家詳細(xì)介紹下從SQLServer導(dǎo)出數(shù)據(jù)并將數(shù)據(jù)導(dǎo)入到MySQL,具體的實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-07-07SQL Server中實(shí)現(xiàn)二進(jìn)制與字符類型之間的數(shù)據(jù)轉(zhuǎn)換
在SQL Server 數(shù)據(jù)庫中,如何實(shí)現(xiàn)二進(jìn)制數(shù)據(jù)與字符串?dāng)?shù)據(jù)之間的直接轉(zhuǎn)換2012-11-11sqlserver 巧妙的自關(guān)聯(lián)運(yùn)用
最近在改報(bào)表分頁,遇到一個(gè)很棘手的問題,需要將比較正常的數(shù)據(jù)記錄新增加兩列2012-07-07