#主鍵約束(PRIMARY KEY) ##SQL Server PRIMARY KEY(主鍵)約束簡介 主鍵是唯一標識表中每一行的一列或一組列。您可以使用主鍵約束為表創建主鍵。 如果主鍵僅包含一列,你可以使用PRIMARY KEY約束作為列約束: CREATE TABLE table_name ( ...
主鍵約束(PRIMARY KEY)
目錄SQL Server PRIMARY KEY(主鍵)約束簡介
主鍵是唯一標識表中每一行的一列或一組列。您可以使用主鍵約束為表創建主鍵。
如果主鍵僅包含一列,你可以使用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)
);
每個表只能包含一個主鍵,一個主鍵可以包含多個列,即多個列的組合不能重覆。參與主鍵的所有列必須定義為NOT NULL
。如果未為所有主鍵列指定NOT NULL
約束,SQL Server會自動為這些列設置非空約束。
SQL Server PRIMARY KEY約束示例
以下示例創建了一個具有主鍵的表,主鍵由一列組成:
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
列是主鍵列,意味著這一列的值不能重覆
IDENTITY
屬性用於activity_id
列自動生成唯一的整數值。
下麵創建一個由兩列組成外鍵的新表:
CREATE TABLE dbo.participants(
activity_id int,
customer_id int,
PRIMARY KEY(activity_id, customer_id)
);
在本例中,activity_id
或customer_id
列中的值可以重覆,但兩列中的每個值組合都必須是唯一的。
通常,表總是在創建時定義主鍵。然而,有時,現有表可能沒有定義主鍵。在這種情況下,可以使用ALTER TABLE
語句向表中添加主鍵。比如示例:
先創建一個沒有主鍵列的表:
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
表已經有數據,在將event_id
列提升為主鍵之前,必須確保event_id
中的值是不重覆的。