MariaDBでALTER TABLE構文を使って外部キーを追加する方法
MariaDBでALTER TABLE構文を使って外部キーを追加する方法
外部キー制約を定義する
まず、外部キー制約を定義する必要があります。外部キー制約は、子テーブルの列と親テーブルの列を関連付けるものです。
ALTER TABLE 子テーブル名
ADD FOREIGN KEY (子テーブルの列名)
REFERENCES 親テーブル名 (親テーブルの列名);
例:
orders
テーブルにcustomer_id
という列があり、customers
テーブルのid
列を参照する外部キーを追加する場合、以下のSQLクエリを使用します。
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers (id);
外部キー制約のオプション
外部キー制約には、いくつかのオプションがあります。
- ON DELETE
親テーブルのレコードが削除されたときに、子テーブルのレコードにどのような処理を行うかを指定します。
orders
テーブルのcustomer_id
列の外部キー制約にON DELETE CASCADE
オプションを追加する場合、以下のSQLクエリを使用します。
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON DELETE CASCADE;
外部キー制約が追加されたことを確認するには、以下のSQLクエリを使用します。
SHOW CREATE TABLE 子テーブル名;
orders
テーブルの外部キー制約を確認する場合、以下のSQLクエリを使用します。
SHOW CREATE TABLE orders;
出力結果には、FOREIGN KEY
制約に関する情報が表示されます。
その他の注意事項
- 外部キー制約を追加する前に、子テーブルの列と親テーブルの列のデータ型が一致していることを確認する必要があります。
- 外部キー制約を追加すると、データの整合性が保たれるようになります。
-- 子テーブル orders の作成
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
...
);
-- 親テーブル customers の作成
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
...
);
-- orders テーブルに customer_id 列の外部キーを追加
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON DELETE CASCADE;
-- 外部キー制約の確認
SHOW CREATE TABLE orders;
このサンプルコードを実行すると、orders
テーブルにcustomer_id
という列の外部キーが追加されます。この外部キーは、customers
テーブルのid
列を参照します。
ON UPDATE
オプションを使用する
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON UPDATE CASCADE;
SET NULL
オプションを使用する
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON DELETE SET NULL;
注意事項
- サンプルコードは、MariaDB 10.5.8で動作確認しています。
- サンプルコードを実行する前に、MariaDBサーバーが起動していることを確認してください。
MariaDBで外部キーを追加する他の方法
CREATE TABLE構文
テーブルを作成時に、FOREIGN KEY
制約を定義することができます。
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON DELETE CASCADE
);
MySQL WorkbenchなどのGUIツールを使用して、外部キーを追加することができます。
手順
- MySQL Workbenchでデータベースに接続します。
- 子テーブルを選択します。
- **"構造"**タブを選択します。
- **"列"**セクションで、外部キーを追加する列を選択します。
- **"参照先テーブル"**で、親テーブルを選択します。
- **"ON DELETE"と"ON UPDATE"**オプションを選択します。
- **"適用"**をクリックします。
- **"外部キー"セクションで、"追加"**ボタンをクリックします。
その他のツール
- 使用しているツールによって、手順が異なる場合があります。
- ツールを使用して外部キーを追加する前に、ツールのドキュメントを確認してください。
mariadb