MySQL でテーブル定義情報を表示する方法を記載する。
MySQL のバージョン。
mysql> SELECT VERSION();
+-----------+
| version() |
+-----------+
| 8.0.34 |
+-----------+
1 row in set (0.00 sec)
テーブル内のカラムに関する情報を表示する方法
DESCRIBE <テーブル名> を実行すると、指定したテーブルのカラムに関する情報を表示できる。
mysql> DESCRIBE servers;
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| ID | int | NO | PRI | NULL | auto_increment |
| Name | char(35) | NO | | | |
| CountryCode | char(3) | NO | MUL | | |
| District | char(20) | NO | | | |
| Population | int | NO | | 0 | |
+-------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
DESCRIBE の省略系の DESC もある ((DESC ステートメント自体が SHOW COLUMNS ステートメントのシノニムである))
DESC のほうがタイプ数が少なくて済むので、普段使いするにはこちらのほうが楽だろう。
後述する SHOW CREATE TABLE とは違い、テーブルの制約やパーティションに関する情報は表示されないが、カラムに関する情報を得るだけならばこちらで十分ではある。
SHOW CREATE TABLE ステートメント
SHOW CREATE TABLE <テーブル名> を実行すると、指定したテーブルを作成する CREATE TABLE ステートメントを表示できる。
DESCRIBE ステートメントはテーブルのカラムに関する情報のみを得られたが、こちらはテーブルの制約やパーティションに関する情報を得ることができる。
また、任意のテーブルと同じ構造のテーブルを別名で作成したい、といったときにはこちらのほうが楽だろう。
mysql> SHOW CREATE TABLE city;
| Table | Create Table |
| city | CREATE TABLE `city` (
`ID` int NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
1 row in set (0.00 sec)
参考サイト