【MySQL】SELECT hoge FROM information_schemaでテーブルやカラムの情報を得る

著者:杉浦

【MySQL】SELECT hoge FROM information_schemaでテーブルやカラムの情報を得る

 SQLで定義を調べる時はSHOW TABLES;やSHOW COLUMNS;といったSHOW構文を使う方法を良く取ります。まあ便利なのですが、FULLオプションをつけても欲しい情報が足りない時、表示量が多すぎて分かりにくくなる時があります。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.5 SHOW 構文
 そういった時はinformation_schemaデータベース中のテーブルに対してSELECTすると解決しやすいです。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 21 INFORMATION_SCHEMA テーブル
 information_schemaはMySQL中の各データベース全体のメタ情報を集積しているデータベースです。例えば、各データベースのテーブル定義がTABLESテーブルに入っています。以下の様にすると、

select TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT
from TABLES
where TABLE_SCHEMA = 'mysql'
limit 5

以下の様なテーブル名と説明コメントが出力できます。

TABLE_SCHEMA TABLE_NAME TABLE_COMMENT
mysql columns_priv Column privileges
mysql db Database privileges
mysql engine_cost
mysql event Events
mysql func User defined functions

 他にも各テーブル中のカラム定義の格納されたCOLUMNSテーブル、ユニーク制約や主キーや外部制約などの情報の格納されたTABLE_CONSTRAINTSテーブルなどなど色々あります。このあたりを使うと既存のDBから好きなようにER図用のPlantUML、マイグレーション定義などを生成できるようになります。

  • この記事いいね! (0)

著者について

杉浦 administrator