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