Affamative Way

前向きにグダグダいいながらコード書く

テーブルの構造を調べる方法あれこれ

ちょっと色々と調べていたのでメモ変わりにエントリー

テーブルの構造を取得する

MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 12.3.1 DESCRIBE 構文

mysql> DESC user;
+-----------------+-------------+------+-----+---------+----------------+
| Field           | Type        | Null | Key | Default | Extra          |
+-----------------+-------------+------+-----+---------+----------------+
| id              | int(4)      | NO   | PRI | NULL    | auto_increment |
| nick_name       | varchar(30) | NO   |     |         |                |
| password        | char(50)    | NO   |     |         |                |
| last_name       | varchar(50) | NO   |     |         |                |
| first_name      | varchar(50) | NO   |     |         |                |
| user_type_id    | tinyint(4)  | NO   |     | 0       |                |
| admin_flg       | tinyint(1)  | NO   |     | 0       |                |
| advisement_flg  | tinyint(1)  | NO   |     | 0       |                |
| update_datetime | datetime    | NO   |     |         |                |
| regist_datetime | datetime    | NO   |     |         |                |
| available       | tinyint(1)  | NO   |     | 1       |                |
+-----------------+-------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)

実体は SHOW COLUMNS が実行されている。

mysql> SHOW COLUMNS FROM user;
+-----------------+-------------+------+-----+---------+----------------+
| Field           | Type        | Null | Key | Default | Extra          |
+-----------------+-------------+------+-----+---------+----------------+
| id              | int(4)      | NO   | PRI | NULL    | auto_increment |
| nick_name       | varchar(30) | NO   |     |         |                |
| password        | char(50)    | NO   |     |         |                |
| last_name       | varchar(50) | NO   |     |         |                |
| first_name      | varchar(50) | NO   |     |         |                |
| user_type_id    | tinyint(4)  | NO   |     | 0       |                |
| admin_flg       | tinyint(1)  | NO   |     | 0       |                |
| advisement_flg  | tinyint(1)  | NO   |     | 0       |                |
| update_datetime | datetime    | NO   |     |         |                |
| regist_datetime | datetime    | NO   |     |         |                |
| available       | tinyint(1)  | NO   |     | 1       |                |
+-----------------+-------------+------+-----+---------+----------------+

結果は当然、DESCと同一

コメントを取得するには?

MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 12.5.4.4 SHOW COLUMNS 構文

-- FULLオプションを付けてやることによりすべてのデータを取得することができる。
SHOW FULL COLUMNS FROM table_name

コメントも取得できるところがミソ!
これさえあれば定義書もつくれちゃう♪

おまけ

該当テーブルのCreate文を取得する
SHOW CREATE TABLE table_name
すべての構造を取得する
SHOW TABLE STATUS

などなど他にもたくさんあります。一度お試しあれぃ
MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 12.5.4 SHOW 構文