MySQLデータベースで外部キーを確認・識別する方法をわかりやすく解説
はじめに:サンプルテーブルを作成する
まずは、外部キーの参照元となる基本テーブルを作成しましょう。以下のクエリを実行します。
mysql> create table DemoTable1 (Id int NOT NULL PRIMARY KEY, EmployeeName varchar(100)); Query OK, 0 rows affected (0.50 sec)
外部キー制約を持つ2つ目のテーブルを作成する
続いて、外部キー制約を設定した2つ目のテーブルを作成します。ここでは DemoTable2 の Id カラムが、DemoTable1 の Id カラムを参照する外部キーとして定義されています。
mysql> create table DemoTable2
(
Id int NOT NULL,
StreetName varchar(100),
CityName varchar(100),
CountryName varchar(100),
PinCode int,
EmployeeId int,
PRIMARY KEY(Id),
FOREIGN KEY (Id) REFERENCES DemoTable1(Id)
);
Query OK, 0 rows affected (0.46 sec)SHOW CREATE TABLEで外部キーを識別する
MySQLデータベース内の外部キーを確認したい場合は、SHOW CREATE TABLE ステートメントを使用するのが最も手軽な方法です。このコマンドを実行すると、テーブル作成時の完全なDDL(CREATE文)が表示され、その中に外部キー制約の情報も含まれます。
mysql> show create table DemoTable2\G
実行すると、以下のような出力が得られます。
*************************** 1. row ***************************
Table: DemoTable2
Create Table: CREATE TABLE `demotable2` (
`Id` int(11) NOT NULL,
`StreetName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CityName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CountryName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`PinCode` int(11) DEFAULT NULL,
`EmployeeId` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`),
CONSTRAINT `demotable2_ibfk_1` FOREIGN KEY (`Id`) REFERENCES `demotable1`
(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)出力結果の見方
出力の中でも特に注目すべきは CONSTRAINT の行です。この行には以下の情報が含まれています。
- 制約名:
demotable2_ibfk_1(自動生成された外部キー制約の名前) - 外部キーカラム:
Id - 参照先テーブルとカラム:
demotable1のid
これにより、どのカラムが外部キーとして設定され、どのテーブルを参照しているのかを一目で把握できます。
補足:information_schemaを使った確認方法
より詳細に外部キー情報を調べたい場合は、information_schema.KEY_COLUMN_USAGE テーブルや information_schema.REFERENTIAL_CONSTRAINTS を照会する方法もあります。複数のテーブルにまたがる外部キーを一括で調査したい場合に便利です。
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon
-
MySQLで外部キー(FOREIGN KEY)を使う方法|InnoDBの制約とALTER構文を解説
本記事では、MySQLにおける外部キー(FOREIGN KEY)の基本的な考え方と、実際の設定方法をサンプルSQL付きで解説します。 MySQLの外部キーの基本 InnoDBテーブルは、外部キー制約(FOREIGN KEY制約)のチェックをサポートしています。ただし、単に2つのテーブルを結合(JOIN)するだけであれば、外部キー制約は必須ではありません。外部キーは、テーブル間の参照整合性を保証したい場合に活用する仕組みです。 一方で、InnoDB以外のストレージエンジンを使用している場合は注意が必要です。REFERENCES tableName(colName) という構文を記述しても実際の効