在開發與維護 MySQL 資料庫時,快速查看表結構是基本功。MySQL 提供多種指令可檢視欄位定義、索引、約束、字符集等資訊。本文整理最常用的 DESCRIBE、SHOW FIELDS、SHOW CREATE TABLE 等指令,並說明各自的輸出差異與適用場景。
| 指令 | 別名 | 主要用途 | 輸出重點 |
|---|---|---|---|
DESCRIBE tbl_name | DESC tbl_name | 快速檢視欄位定義 | Field, Type, Null, Key, Default, Extra |
SHOW FIELDS FROM tbl_name | SHOW COLUMNS FROM tbl_name | 同 DESC,可加 WHERE 過濾 | 同上,支援 LIKE 或 WHERE |
SHOW FULL FIELDS FROM tbl_name | — | 顯示完整欄位資訊含註解 | 額外包含 Collation, Privileges, Comment |
SHOW CREATE TABLE tbl_name | — | 取得完整建表 SQL | 含引擎、字符集、分區、索引、外鍵完整 DDL |
SHOW TABLE STATUS LIKE 'tbl_name' | — | 檢視表層級統計資訊 | Rows, Data_length, Index_length, Auto_increment, Comment |
DESC um_userinfo;
-- 或
DESCRIBE um_userinfo;
輸出範例:
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | NO | UNI | NULL | |
| email | varchar(100) | YES | | NULL | |
| status | tinyint(1) | NO | | 1 | |
| created | datetime | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
SHOW FULL FIELDS FROM um_userinfo;
輸出會多出 Collation、Privileges、Comment 欄位,適合文件化或審核表設計。
SHOW CREATE TABLE um_userinfo\G
輸出範例:
Table: um_userinfo
Create Table: CREATE TABLE `um_userinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶基本資料表'
此指令對於版本控管、環境遷移、審核表結構極為重要。
SHOW TABLE STATUS LIKE 'um_userinfo'\G
關鍵欄位:
Engine:儲存引擎Rows:預估行數(InnoDB 為估算值)Data_length / Index_length:資料/索引大小(Bytes)Auto_increment:下一個自增值Create_time / Update_time:建立/更新時間Comment:表註解information_schema.COLUMNS 撰寫 SQL 彙總多表結構,適合自動化文件產生器。SHOW FIELDS FROM tbl_name LIKE 'user%' 或 WHERE Field IN ('id','name')。DESC view_name、SHOW CREATE VIEW view_name 同樣適用。日常開發用 DESC 最快;需註解或完整 DDL 用 SHOW FULL FIELDS / SHOW CREATE TABLE;評估表大小與健康度用 SHOW TABLE STATUS。熟練這幾招,能大幅提升資料庫操作效率。