首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

資料庫表建立複合主鍵的完整指南:多欄位同時作為主鍵

     編輯:關於SqlServer

主鍵是資料庫表的核心屬性,確保表中不存在完全相同的記錄,保證每筆資料的唯一性。建立主鍵主要有兩種方式:透過資料庫管理工具的圖形介面(GUI)操作,或使用 SQL 語句定義。以下將詳細說明這兩種方法的操作步驟。

方法一:使用圖形介面建立(以 SQL Server 7.0 為例)

在資料庫設計工具中輸入表結構後,按住 Ctrl 鍵同時選中多個欄位,然後點擊工具列上的「主鍵」按鈕(通常呈鑰匙圖示),即可將這些欄位設定為複合主鍵。

方法二:使用 SQL 語句建立

SQL 語句建立主鍵又分為兩種情況:在建表語句中直接定義,或在建表後透過 ALTER TABLE 修改表結構。

1. 在 CREATE TABLE 語句中直接定義

CREATE TABLE 表名 (
    欄位名1 INT NOT NULL,
    欄位名2 NVARCHAR(13) NOT NULL,
    欄位名3 ...,
    欄位名N ...,
    PRIMARY KEY (欄位名1, 欄位名2)
);

此範例將「欄位名1」與「欄位名2」共同定義為複合主鍵,順序影響索引排序與查詢效能。

2. 建表後使用 ALTER TABLE 新增主鍵約束

CREATE TABLE 表名 (
    欄位名1 INT NOT NULL,
    欄位名2 NVARCHAR(13) NOT NULL,
    欄位名3 ...,
    欄位名N ...
);
GO

ALTER TABLE 表名 WITH NOCHECK ADD
CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED
(
    [欄位名1],
    [欄位名2]
);
GO

說明:

  • WITH NOCHECK 表示不檢查現有資料是否符合約束(適用於已知資料無重複的情況)。
  • NONCLUSTERED 指定為非叢集索引;若需叢集索引可改為 CLUSTERED。
  • 約束名稱 PK_表名 建議遵循命名慣例,便於後續管理。

最佳實務建議

  • 複合主鍵的欄位順序應依查詢條件常用順序排列,最常用的過濾欄位放在最前。
  • 所有參與複合主鍵的欄位必須設定為 NOT NULL。
  • 避免使用過長或資料變動頻繁的欄位(如長字串、頻繁更新的欄位)作為主鍵一部分。
  • 建立後可使用 sp_helpindex '表名' 或管理工具驗證索引是否正確建立。

掌握這兩種建立複合主鍵的方法,能靈活應對不同開發階段與部署環境的需求,確保資料完整性與查詢效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved