MySQLの外部キー制約とは何ですか?


外部キー制約を使用すると、参照テーブルのデータの整合性を維持することができます。つまり、参照テーブルに存在しない値を外部キーとして持つレコードを追加することはできません。これにより、データベース内の関連するテーブル間で一貫性を保つことができます。

外部キー制約を作成するには、まず外部キーを参照するテーブルに主キーを持つテーブルが必要です。外部キーを指定するカラムには、参照するテーブルの主キーと同じデータ型を使用します。外部キー制約は、テーブルの作成時に定義することも、後からALTER TABLE文を使用して追加することもできます。

以下に、外部キー制約の使用例を示します。

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);
CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  order_date DATE,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

この例では、usersテーブルのid列が主キーとなっており、ordersテーブルのuser_id列が外部キーとなっています。FOREIGN KEYキーワードを使用して外部キー制約を定義し、REFERENCESキーワードを使用して参照先のテーブルと列を指定しています。

外部キー制約を使用することで、ordersテーブルのuser_id列にはusersテーブルのid列に存在する値のみが許可されます。存在しないuser_id値を持つレコードをordersテーブルに追加しようとすると、制約違反エラーが発生します。

これにより、データベース内のテーブル間で一貫性を保ちながら、関連するデータの整合性を維持することができます。