ALTER TABLE で簡単追加!MySQL に複合主キーを設定する方法とサンプルコード
MySQL に複合主キーを追加するための ALTER TABLE の詳細ガイド
このガイドでは、既存の MySQL テーブルに複合主キーを追加する方法について、ALTER TABLE ステートメントを用いて詳細に解説します。複合主キーとは、複数の列で構成される主キーであり、レコードを一意に識別するために使用されます。
手順
以下の手順に従って、既存のテーブルに複合主キーを追加します。
- 既存のテーブルを確認する
まず、ALTER TABLE を実行する前に、対象となるテーブルが存在し、その構造を理解していることを確認してください。以下のコマンドを使用して、テーブル定義を確認できます。
DESCRIBE table_name;
- 複合主キーを追加する
以下の構文を使用して、ALTER TABLE ステートメントで複合主キーを追加します。
ALTER TABLE table_name
ADD PRIMARY KEY (column1, column2, ..., columnN);
table_name
は、複合主キーを追加するテーブルの名前です。column1, column2, ..., columnN
は、複合主キーを構成する列の名前をカンマ区切りで指定します。
例
customers
テーブルに customer_id
と order_id
列を使用して複合主キーを追加する例を以下に示します。
ALTER TABLE customers
ADD PRIMARY KEY (customer_id, order_id);
補足
- 複合主キーを追加する列は、NOT NULL 制約が設定されている必要があります。
- 複合主キーを追加すると、既存のユニークインデックスや外部キー制約が削除される場合があります。
- 複合主キーは、パフォーマンスとデータ整合性を向上させるために役立ちますが、すべての状況で適切とは限りません。複合主キーを追加する前に、その影響を慎重に検討する必要があります。
注意事項
- このガイドは、MySQL 8.0 を対象としています。他のバージョンでは、構文や動作が異なる場合があります。
- データベースを操作する前に、必ずバックアップを取ってください。
CREATE TABLE customers (
customer_id INT NOT NULL,
order_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
ALTER TABLE customers
ADD PRIMARY KEY (customer_id, order_id);
例2:既存の列に複合主キーを追加する
CREATE TABLE products (
product_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL,
category_id INT NOT NULL
);
ALTER TABLE products
ADD PRIMARY KEY (product_id, category_id);
- 上記の例では、
NOT NULL
制約が設定されています。複合主キーを追加する列は、必ずNOT NULL
制約を設定する必要があります。 - 複合主キーを追加すると、既存のユニークインデックスや外部キー制約が削除される場合があります。詳細については、MySQL リファレンスマニュアルを参照してください。
MySQL に複合主キーを追加するその他の方法
このガイドでは、ALTER TABLE ステートメント以外にも、MySQL に複合主キーを追加するその他の方法について説明します。
方法
- CREATE TABLE ステートメントを使用する
新しいテーブルを作成する際に、CREATE TABLE
ステートメントで複合主キーを定義できます。以下の構文を使用します。
CREATE TABLE table_name (
column1 datatype NOT NULL,
column2 datatype NOT NULL,
...,
PRIMARY KEY (column1, column2, ...)
);
CREATE TABLE customers (
customer_id INT NOT NULL,
order_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (customer_id, order_id)
);
- MySQL Workbench を使用する
MySQL Workbench は、MySQL を視覚的に操作できる GUI ツールです。Workbench を使用して、以下の手順で複合主キーを追加できます。
- 接続先のデータベースとテーブルを選択します。
- 「テーブル」タブをクリックします。
- 複合主キーを追加したいテーブルを選択します。
- 複合主キーを構成する列を選択します。
- 右クリックメニューから「主キーとして設定」を選択します。
方法の比較
方法 | 利点 | 欠点 |
---|---|---|
ALTER TABLE ステートメント | 既存のテーブルに複合主キーを追加できる | 比較的複雑な構文 |
CREATE TABLE ステートメント | 新しいテーブルを作成する際に複合主キーを定義できる | 既存のテーブルを操作できない |
MySQL Workbench | GUI で直感的に操作できる | MySQL Workbench をインストールする必要がある |
mysql sql primary-key