MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLデータベースで外部キーを確認・識別する方法をわかりやすく解説

はじめに:サンプルテーブルを作成する

まずは、外部キーの参照元となる基本テーブルを作成しましょう。以下のクエリを実行します。

mysql> create table DemoTable1 (Id int NOT NULL PRIMARY KEY, EmployeeName varchar(100));
Query OK, 0 rows affected (0.50 sec)

外部キー制約を持つ2つ目のテーブルを作成する

続いて、外部キー制約を設定した2つ目のテーブルを作成します。ここでは DemoTable2Id カラムが、DemoTable1Id カラムを参照する外部キーとして定義されています。

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
  • 参照先テーブルとカラム: demotable1id

これにより、どのカラムが外部キーとして設定され、どのテーブルを参照しているのかを一目で把握できます。

補足:information_schemaを使った確認方法

より詳細に外部キー情報を調べたい場合は、information_schema.KEY_COLUMN_USAGE テーブルや information_schema.REFERENTIAL_CONSTRAINTS を照会する方法もあります。複数のテーブルにまたがる外部キーを一括で調査したい場合に便利です。

  1. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

    MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon

  2. MySQLで外部キー(FOREIGN KEY)を使う方法|InnoDBの制約とALTER構文を解説

    本記事では、MySQLにおける外部キー(FOREIGN KEY)の基本的な考え方と、実際の設定方法をサンプルSQL付きで解説します。 MySQLの外部キーの基本 InnoDBテーブルは、外部キー制約(FOREIGN KEY制約)のチェックをサポートしています。ただし、単に2つのテーブルを結合(JOIN)するだけであれば、外部キー制約は必須ではありません。外部キーは、テーブル間の参照整合性を保証したい場合に活用する仕組みです。 一方で、InnoDB以外のストレージエンジンを使用している場合は注意が必要です。REFERENCES tableName(colName) という構文を記述しても実際の効