MySQL のカラムの一覧を取得する
ここでは MySQL でカラムの一覧を取得する方法をご説明します。
SHOW COLUMNS でカラムの一覧を取得する
MySQL の SHOW COLUMNS 文を使うと、指定したテーブルのカラムの一覧を取得することができます。
SHOW COLUMNS FROM テーブル名; のように指定すると、現在選択されているデータベースの指定したテーブルのカラム一覧が取得できます。
SHOW COLUMNS 文では、テーブル名は必須です。
テーブル名の代わりにビュー名を指定して、ビューのカラム情報を取得することも可能です。
例えば、SHOW COLUMNS 文を使って、school_db データベースを選択した状態で students テーブルのカラムの情報を取得したい時は次のようにできます。
SHOW COLUMNS FROM students;
[実行結果]
他のデータベースのテーブルのカラム一覧を取得したい時は SHOW COLUMN FROM テーブル名 FROM データベース名; のように指定して取得できます。
例えば、school_db データベースを選択した状態で test データベースの student テーブルのカラム一覧を取得したい時は次のようにできます。
SHOW COLUMNS FROM student FROM test;
[実行結果]
指定した文字を含むカラムだけを取得したい時は SHOW COLUMNS FROM テーブル名 LIKE 'pattern'; を使って取得することができます。
例えば、school_db データベース内の students テーブル名の中で、カラム名に name が入っているカラムの情報を取得したい場合は次のようにできます。
SHOW COLUMNS FROM students LIKE '%name%';
[実行結果]
DESC でカラムの一覧を取得する
MySQL の DESC 文を使っても、カラムの一覧を取得することができます。
DESC テーブル名; のように指定すると、現在選択されているデータベースの指定したテーブルのカラム一覧が取得できます。
DESC の代わりに DESCRIBE や EXPLAIN を使っても同様の結果が得られます。
得られるカラムの情報は SHOW COLUMNS 文と同じです。
例えば、DESC 文を使って、school_db データベースを選択した状態で students テーブルのカラムの情報を取得したい時は次のようにできます。
DESC students;
[実行結果]
INFORMATION_SCHEMA.COLUMNS でカラムの一覧を取得する
MySQL の INFORMATION_SCHEMA.COLUMNS システムビューからも、カラムの一覧を取得することができます。
INFORMATION_SCHEMA.COLUMNS を使うと、現在選択されているデータベースに関係なく、次のようにシステム用のデータベースも含んだ全データベースのカラムの情報が取得できます。
特定のデータベースを指定するには TABLE_SCHEMA = 'データベース名' のようにフィルターします。
テーブルを指定するには TABLE_NAME = 'テーブル名' のようにフィルターします。
例えば、INFORMATION_SCHEMA.COLUMNS を使って、school_db データベースの students テーブルのカラム一覧を取得するには次のようにできます。
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'school_db'
AND TABLE_NAME = 'students';
[実行結果]
COLUMN_NAME がカラム名で、取得できるカラムの情報も SHOW COLUMNS 文より多いですね。
テーブルを超えてカラムを検索できるので、データベース内で指定したカラム名を持つテーブルの一覧を取得したいような時にも便利です。
例えば、INFORMATION_SCHEMA.COLUMNS から school_db データベース内で id という文字が含まれるカラム一覧を取得するには次のようにできます。
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'school_db'
AND COLUMN_NAME LIKE '%id%';
[実行結果]
以上、MySQL でカラムの一覧を取得する方法をご説明しました。