商売力開発ブログ

非エンジニアがWebサービスの開発、運営によって商売力をつける記録、その他の雑記

MySQLでテーブル、カラム、インデックスの情報を取得する方法

【スポンサーリンク】

今回はMySQL用の備忘にたまに使うテーブルなどの定義取得用のSQLをまとめておきます。
MySQLではデータベース=スキーマと考えて良いみたいなので、指定に必要な場合はDB_NAMEと記載します。

テーブルを一覧で取得する方法

テーブル名の一覧のみ取得する場合(「DB_NAME」を取得対象に変更、引用符なし)

Show tables From DB_NAME;

テーブル情報の一覧を取得する場合(「DB_NAME」を取得対象に変更、引用符あり)

Select * From information_schema.tables I1
Where I1.table_schema = 'DB_NAME'
And I1.table_type = 'BASE TABLE';

TABLE_TYPEの条件を変更するとビューの一覧が取得できます

Select * From information_schema.tables I1
Where I1.table_schema = 'DB_NAME'
And I1.table_type = 'VIEW';

カラムを一覧で取得する方法

テーブル名を指定して取得する場合

Show columns From TABLE_NAME;

スキーマを指定してテーブルとカラム情報の一覧を取得する場合

Select * From information_schema.columns I1
Where I1.table_schema = 'DB_NAME';

インデックスを一覧で取得する方法

テーブル名を指定して取得する場合

Show index From TABLE_NAME;

スキーマを指定してテーブルとカラム、インデックス情報の一覧を取得する場合

Select * From information_schema.statistics I1
Where I1.table_schema = 'DB_NAME';

表示項目を絞ると

Select table_name,index_name,column_name,seq_in_index,non_unique
From information_schema.statistics I1
Where I1.table_schema = 'DB_NAME';

以上

【スポンサーリンク】