MySQL で指定したカラム名を持つテーブルを取得する方法
ここでは、MySQL で指定したカラム名を持つテーブルを取得する方法をご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
指定したカラム名を持つテーブルを取得する
MySQL で指定したカラム名を持つテーブルを取得するには、INFORMATION_SCHEMA テーブルのひとつの INFORMATION_SCHEMA.COLUMNS テーブルを使って取得することができます。
INFORMATION_SCHEMA テーブルは、データベース、テーブル、カラム、権限などのデータベースの情報にアクセスできる、システムのテーブル達です。
指定したカラム名を持つテーブルを取得するには、次のようにできます。
SELECT TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%カラム名の一部%'
AND TABLE_SCHEMA='データベース名'
ORDER BY TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME;
カラム名を完全一致で指定したい時は COLUMN_NAME LIKE '%カラム名の一部%' を COLUMN_NAME = 'カラム名' にしてください。
例えば、school_db データベース内で、カラム名の一部に name が入ってるテーブルを取得するクエリーは次の通りです。
SELECT TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%name%'
AND TABLE_SCHEMA='school_db'
ORDER BY TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME;
[実行結果]
テーブルの情報のみ取得したい時は、DISTINCT を使って次のようにできます。
SELECT DISTINCT
TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%name%'
AND TABLE_SCHEMA='school_db'
ORDER BY TABLE_SCHEMA,
TABLE_NAME;
[実行結果]
以上、MySQL で指定したカラム名を持つテーブルを取得する方法をご説明しました。