MySQL で外部キーを表示する
Preet Sanghavi
2023年1月30日
このチュートリアルでは、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