« 2013年5月 | トップページ | 2013年8月 »

MySQLのテーブル情報

MySQLのテーブル情報を詳しく参照したいときのSQLコマンドメモ。


DESC hogehoge

いつも使うやつ、どんなカラムがどんな属性で構成されているかを確認することができる。


SHOW FULL COLUMNS FROM hogehoge

DESCの情報に接続照合順序、権限を追加して表示する。DESCじゃ知りたい情報が出せないときに使っても、こちらも大した情報は出力しない。


SHOW CREATE TABLE hogehoge

読んで字のごとく、テーブルを作成した時のCREATE文を表示するので、知りたい情報はまずこれで確認できる。


SHOW TABLE STATUS

全テーブルの詳細情報を出力する。これを使って必要な情報が含まれないケースというのはあまり考えにくいが、出力内容が多くなってしまうので場合によってCREATE文出力コマンドと使い分けるといいかも。さっきmy.cnfをいじっていて、使っていないはずのInnoDBタイプのストレートエンジン用に6GBもメモリを確保する設定になっていたので、無駄だと思い設定を削除して反映しようとしたところ、エラーが出力された。なのでこのコマンドを使って全テーブルのストレートエンジンタイプを出力して検索したところ、2つだけInnoDBのテーブルが存在した。という使い方で役に立ちました。

MySQLコマンドの\G

MySQLコマンドで\Gというやつがあります。SQLコマンドの終わりにセミコロンの代わりにこれを付けると、出力されるテーブル情報が立てに並ぶので、たくさんカラムがあるテーブルをSELECTするときなんかに使うと視認性が上がって便利です。

localhost-mt> SELECT * FROM mt_ipbanlist;
+--------------+-------------------+----------------------+----------------------+----------------+-----------------------+-----------------------+
| ipbanlist_id | ipbanlist_blog_id | ipbanlist_created_by | ipbanlist_created_on | ipbanlist_ip   | ipbanlist_modified_by | ipbanlist_modified_on |
+--------------+-------------------+----------------------+----------------------+----------------+-----------------------+-----------------------+
|            2 |                30 |                 NULL | 2011-09-02 13:12:04  | 218.45.229.170 |                  NULL | 2011-09-02 13:12:04   |
|            3 |                30 |                 NULL | 2011-09-06 11:28:19  | 202.232.197.10 |                  NULL | 2011-09-06 11:28:19   |
|            4 |                30 |                 NULL | 2011-09-06 11:28:19  | 202.232.197.10 |                  NULL | 2011-09-06 11:28:19   |
+--------------+-------------------+----------------------+----------------------+----------------+-----------------------+-----------------------+
3 rows in set (0.00 sec)

localhost-mt> SELECT * FROM mt_ipbanlist\G
*************************** 1. row ***************************
         ipbanlist_id: 2
    ipbanlist_blog_id: 30
 ipbanlist_created_by: NULL
 ipbanlist_created_on: 2011-09-02 13:12:04
         ipbanlist_ip: 218.45.229.170
ipbanlist_modified_by: NULL
ipbanlist_modified_on: 2011-09-02 13:12:04
*************************** 2. row ***************************
         ipbanlist_id: 3
    ipbanlist_blog_id: 30
 ipbanlist_created_by: NULL
 ipbanlist_created_on: 2011-09-06 11:28:19
         ipbanlist_ip: 202.232.197.10
ipbanlist_modified_by: NULL
ipbanlist_modified_on: 2011-09-06 11:28:19
*************************** 3. row ***************************
         ipbanlist_id: 4
    ipbanlist_blog_id: 30
 ipbanlist_created_by: NULL
 ipbanlist_created_on: 2011-09-06 11:28:19
         ipbanlist_ip: 202.232.197.10
ipbanlist_modified_by: NULL
ipbanlist_modified_on: 2011-09-06 11:28:19
3 rows in set (0.00 sec)

MySQLにログインした状態で\?と打つと、他にも便利なMySQLコマンドの一覧が出力されます。postgresでメタコマンドと呼ばれているやつで、RDBMSではこういった機能は大抵備え付けられているようです。

« 2013年5月 | トップページ | 2013年8月 »