MySQL で外部キーを表示する

Preet Sanghavi 2023年1月30日
  1. MySQL でテーブルを作成する
  2. MySQL でテーブルの外部キーを表示する
MySQL で外部キーを表示する

このチュートリアルでは、MySQL でテーブルと列の外部キーを表示する方法を探ることを目的としています。

メインキーを参照するキーのタイプは、別のテーブルの主キーとも呼ばれ、外部キーと呼ばれます。MySQL を使用するときは、テーブルの外部キーを理解することが重要です。

さらに、特定のテーブルの列には、外部キーを関連付けることもできます。これらの外部キーをフェッチする方法を理解してみましょう。

MySQL でテーブルを作成する

始める前に、操作するダミーデータセットを作成します。ここでは、いくつかの行とともにテーブル student_details を作成します。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上記のクエリは、生徒の名前と名前を含む行を含むテーブルを作成します。データのエントリを表示するには、次のコードを使用します。

SELECT * FROM student_details;

上記のコードは、次の出力を提供します。

stu_id  stu_firstName   stu_lastName
1         Preet         Sanghavi
2         Rich          John
3         Veron         Brow
4         Geo           Jos
5         Hash          Shah
6         Sachin        Parker
7         David	        Miller

MySQL でテーブルの外部キーを表示する

MySQL でテーブルの外部キーをフェッチするには、次のコードブロックを使用します。

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>';

ご覧のとおり、上記のクエリでは、外部キーを取得するためにデータベースとテーブルの名前を入力する必要があります。このタスクは、次のクエリを使用して実行できます。

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<boatdb>' AND
  REFERENCED_TABLE_NAME = '<student_details>';

前述のクエリのデータベース名は boatdb で、テーブル名は前述のように student_details です。前述のコードの出力は次のとおりです。

1,TABLE_NAME,,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,-31,31
2,COLUMN_NAME,,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,-31,31
3,CONSTRAINT_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0
4,REFERENCED_TABLE_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0
5,REFERENCED_COLUMN_NAME,information_schema,KEY_COLUMN_USAGE,VARCHAR,utf8mb4,64,0,0

さらに、特定の列に関連付けられている外部キーも見つけることができます。これは、次のクエリを使用して実行できます。

SELECT
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = 'boatdb' AND
  REFERENCED_TABLE_NAME = 'student_details' AND
  REFERENCED_COLUMN_NAME = 'student_firstName';

ご覧のとおり、REFERENCED_COLUMN_NAME が追加されています。

したがって、この手法を使用すると、特定のテーブルと列に関連付けられた外部キーを効率的に表示できます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Key