SQL Server 2008 で ALTER ステートメントを使用して既存のテーブルに主キーを設定する方法
SQL Server 2008 で既存のテーブルに主キーを設定する ALTER ステートメント
既存のテーブルに主キーを設定するには、ALTER TABLE
ステートメントを使用します。主キーは、テーブル内の各行を一意に識別する列または列のグループです。
構文
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
PRIMARY KEY (column1, column2, ...);
説明
table_name
: 主キーを設定するテーブルの名前を指定します。constraint_name
: 主キー制約の名前を指定します。column1, column2, ...
: 主キーを構成する列をカンマ区切りで指定します。
例
次の例では、customers
テーブルに customer_id
列を主キーとして設定します。
ALTER TABLE customers
ADD CONSTRAINT PK_customers
PRIMARY KEY (customer_id);
注意点
- 主キーを設定する列は、
NOT NULL
制約で定義されている必要があります。 - 主キーを設定する列に重複する値が存在する場合は、エラーが発生します。
- 既存のユニーク制約や外部キー制約が、新しい主キー制約と競合する場合は、削除する必要があります。
補足
ALTER TABLE
ステートメントを使用して、既存の主キー制約をドロップすることもできます。構文は以下の通りです。
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
- 主キー制約の詳細については、SQL Server のドキュメントを参照してください。
上記以外にも、ALTER TABLE
ステートメントを使用して、テーブルに対して様々な変更を行うことができます。詳細については、SQL Server のドキュメントを参照してください。
-- customers テーブルを作成する
CREATE TABLE customers (
customer_id INT NOT NULL IDENTITY(1,1),
first_name NVARCHAR(50),
last_name NVARCHAR(50),
email NVARCHAR(100),
phone_number NVARCHAR(20)
);
-- customers テーブルに主キーを設定する
ALTER TABLE customers
ADD CONSTRAINT PK_customers
PRIMARY KEY (customer_id);
- 最初の
CREATE TABLE
ステートメントは、customers
という名前のテーブルを作成します。このテーブルには、4 つの列があります。customer_id
: この列は主キーとして設定されます。列のデータ型はINT
で、値は自動的に生成されます。first_name
: この列は顧客のファーストネームを格納します。列のデータ型はNVARCHAR(50)
です。
- 2 番目の
ALTER TABLE
ステートメントは、customers
テーブルにPK_customers
という名前の主キー制約を追加します。この制約は、customer_id
列を対象としています。
このサンプルコードは、既存のテーブルに主キーを設定する方法を示す基本的な例です。実際の状況では、テーブルの構造や要件に合わせてコードを調整する必要があります。
以下のコード例は、既存のテーブルに複合主キーを設定する方法を示しています。
-- employees テーブルを作成する
CREATE TABLE employees (
employee_id INT NOT NULL,
department_id INT NOT NULL,
first_name NVARCHAR(50),
last_name NVARCHAR(50),
hire_date DATE,
salary DECIMAL(10,2),
CONSTRAINT FK_employees_departments
FOREIGN KEY (department_id)
REFERENCES departments(department_id)
);
-- employees テーブルに複合主キーを設定する
ALTER TABLE employees
ADD CONSTRAINT PK_employees
PRIMARY KEY (employee_id, department_id);
このコード例では、employees
テーブルに employee_id
列と department_id
列からなる複合主キーを設定しています。
SQL Server 2008 で既存のテーブルに主キーを設定するその他の方法
SSMS を使用する方法
- SSMS で、主キーを設定するテーブルをナビゲーション エクスプローラーで検索します。
- テーブルを右クリックし、コンテキスト メニューから [デザイン] を選択します。
- テーブル デザイナーが開きます。
- 主キーとして設定する列の行セレクターを選択します。 複数列を選択する場合は、Ctrl キーを押しながら、他の列の行セレクターを選択します。
- 主キー制約のプロパティ ダイアログ ボックスが表示されます。必要に応じて、制約の名前やその他のプロパティを変更します。
- [OK] をクリックして、変更を保存します。
利点
SSMS を使用すると、GUI を介して主キーを簡単に設定できます。これは、特に複雑なテーブル構造を扱う場合に役立ちます。
SSMS を使用して主キーを設定する場合も、ALTER TABLE
ステートメントを使用する場合と同じ注意事項が適用されます。
SSMS には、テーブルの構造やデータを操作するための他にもさまざまな機能が用意されています。詳細については、SSMS のドキュメントを参照してください。
その他のデータベース管理ツール
SSMS 以外にも、MySQL や PostgreSQL などの他のデータベース管理ツールを使用して、既存のテーブルに主キーを設定することもできます。これらのツールの使用方法については、ツールのドキュメントを参照してください。
sql sql-server sql-server-2008