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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL SERVER數(shù)據(jù)庫的作業(yè)的腳本及存儲(chǔ)過程
本站文章旨在為該問題提供解決思路及關(guān)鍵性代碼,并不能完成應(yīng)該由網(wǎng)友自己完成的所有工作,請網(wǎng)友在仔細(xì)看文章并理解思路的基礎(chǔ)上舉一反三、靈活運(yùn)用2015-10-10
利用SQL Server數(shù)據(jù)庫郵件服務(wù)實(shí)現(xiàn)監(jiān)控和預(yù)警
這篇文章主要介紹了利用數(shù)據(jù)庫郵件服務(wù)實(shí)現(xiàn)監(jiān)控和預(yù)警,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Windows 11安裝SQL Server 2019出現(xiàn)"等待數(shù)據(jù)庫引擎恢復(fù)句
這篇文章主要介紹了Windows 11安裝SQL Server 2019出現(xiàn)"等待數(shù)據(jù)庫引擎恢復(fù)句柄失敗"問題完美解決方案,解決方案很簡單,格式化您的硬盤,刪除分區(qū)并重新指定扇區(qū)大小,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-07-07
SQL Server降權(quán)運(yùn)行 SQL Server 2000以GUESTS權(quán)限運(yùn)行設(shè)置方法
由于sql注入問題比較常見,很多黑客都是通過sqlserver數(shù)據(jù)庫漏洞直接獲取系統(tǒng)權(quán)限,所以sqlserver的安全設(shè)置尤為重要,簡單簡單分享下sqlserver低權(quán)限運(yùn)行方法2014-07-07
SQLServer 2000 升級(jí)到 SQLServer 2008 性能之需要注意的地方之一
今天在 相同環(huán)境測試 2000 和 2008 性能 讓我意外的是 2008 明顯比2000 慢很多,因?yàn)椴荒芎唵蔚纳?jí),sql語句也需要優(yōu)化2012-02-02
總結(jié)下sqlserver group by 的用法
這篇文章主要介紹了總結(jié)下sqlserver group by 的用法 ,需要的朋友可以參考下2014-10-10
SQL Server中的RAND函數(shù)的介紹和區(qū)間隨機(jī)數(shù)值函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了SQL Server中的RAND函數(shù)的介紹和區(qū)間隨機(jī)數(shù)值函數(shù)的實(shí)現(xiàn) 的相關(guān)資料,需要的朋友可以參考下2015-12-12

