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;

[実行結果]

MySQL 指定したカラム名を持つテーブルを取得する方法 1


テーブルの情報のみ取得したい時は、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 指定したカラム名を持つテーブルを取得する方法 2


以上、MySQL で指定したカラム名を持つテーブルを取得する方法をご説明しました。

© 2024 MySQL 入門