浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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)