SQL Server主鍵約束

在本教學中,將學習如何使用SQL Server PRIMARY KEY約束為表創建主鍵。

SQL Server PRIMARY KEY約束簡介

主鍵是唯一標識表中每一行的列或一組列。可以使用PRIMARY KEY約束為表創建主鍵。
如果主鍵只包含一列,則可以將PRIMARY KEY約束定義為列約束:

CREATE TABLE table_name (
    pk_column data_type PRIMARY KEY,
    ...
);

如果主鍵有兩列或更多列,則必須使用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會自動為所有主鍵列設置NOT NULL約束。

在創建主鍵時,SQL Server還會自動創建唯一的聚簇索引(如果指定,則為非聚集索引)。

SQL Server PRIMARY KEY約束示例

以下示例創建一個包含主鍵的表,該主鍵包含一列:

CREATE TABLE sales.activities (
    activity_id INT PRIMARY KEY IDENTITY,
    activity_name VARCHAR (255) NOT NULL,
    activity_date DATE NOT NULL
);

在此sales.activities表中,activity_id列是主鍵列。activity_id列包含唯一值。

IDENTITY屬性用於activity_id列以自動生成唯一的整數值。

以下語句創建一個名為sales.participants的新表,其主鍵由兩列組成:

CREATE TABLE sales.participants(
    activity_id int,
    customer_id int,
    PRIMARY KEY(activity_id, customer_id)
);

在此示例中,activity_idcustomer_id列中的值可以重複,但兩列中的每個值組合必須是唯一的。

通常,表始終具有在創建時定義的主鍵。 但是,有時,現有表可能由於某種原因而沒有定義主鍵。 在這種情況下,可以使用ALTER TABLE語句向表中添加主鍵。請考慮以下示例。

以下語句創建沒有主鍵的表:

CREATE TABLE sales.events(
    event_id INT,
    event_name VARCHAR(255),
    start_date DATE NOT NULL,
    duration DEC(5,2)
);

要將event_id列作為主鍵,請使用以下ALTER TABLE語句:

ALTER TABLE sales.events
ADD PRIMARY KEY(event_id);

上一篇: SQL Server約束 下一篇: SQL Server視圖