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

  • 2019年12月2日
  • SQL

 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、マイグレーション定義などを生成できるようになります。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG