首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 查看表結構命令大全:DESC、SHOW COLUMNS、SHOW CREATE TABLE 詳解

     編輯:MySQL 綜合教學

開發調試、Schema 變更審核、數據字典生成都需要快速獲取表結構。MySQL 提供多種等效命令,本文對比其輸出差異、適用場景與進階用法。

核心命令對比

命令別名輸出重點典型場景
DESC table_nameDESCRIBE、EXPLAIN(表名)列名、類型、NULL、Key、Default、Extra快速查看列定義、索引情況
SHOW COLUMNS FROM table_nameSHOW FIELDS同 DESC,可加 LIKE 'pattern'腳本篩選特定前綴列
SHOW CREATE TABLE table_name—完整建表 DDL(含引擎、字符集、分區、外鍵、索引定義)Schema 同步、版本對比、文檔生成

輸出字段詳細含義

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(50) | NO   | UNI | NULL    |                |
| email    | varchar(100)| YES  | MUL | NULL    |                |
| status   | tinyint(1)  | NO   |     | 1       |                |
| created  | timestamp   | NO   |     | CURRENT_TIMESTAMP |        |
+----------+-------------+------+-----+---------+----------------+
  • Field:列名
  • Type:數據類型及長度/精度
  • Null:YES 允許 NULL,NO 非空
  • Key:PRI 主鍵、UNI 唯一索引、MUL 普通索引(非唯一)、空=無索引
  • Default:默認值,NULL 表示無顯式默認值
  • Extra:auto_increment、on update CURRENT_TIMESTAMP、VIRTUAL GENERATED 等

進階用法

1. 過濾特定列

SHOW COLUMNS FROM users LIKE 'user_%';

2. 獲取建表語句用於遷移/文檔

SHOW CREATE TABLE orders\G
-- 輸出包含:
-- ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
-- PARTITION BY RANGE (YEAR(created)) ...
-- CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id) ...

3. 信息模式查詢(可編程、可 JOIN)

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH,
       NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE,
       COLUMN_DEFAULT, COLUMN_KEY, EXTRA, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name'
ORDER BY ORDINAL_POSITION;
信息模式適合工具開發、自動化文檔生成、Schema Diff 對比。

4. 查看表大小與行數估算

SHOW TABLE STATUS LIKE 'table_name'\G
-- 關鍵字段:
-- Engine, Row_format, Rows, Avg_row_length, Data_length, Index_length, Auto_increment, Create_time

常見問題

  • DESC 不顯示外鍵:需用 SHOW CREATE TABLE 或查 INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
  • Key 顯示 MUL 但無索引:組合索引非最左列、或列允許 NULL 且有重複值
  • Default 顯示 NULL 實際有默認值:TIMESTAMP 默認 CURRENT_TIMESTAMP 在 5.6+ 可能不顯示

總結

DESC 適合人工快速查看;SHOW COLUMNS LIKE 適合腳本篩選;SHOW CREATE TABLE 獲取完整 DDL 用於遷移/審核;INFORMATION_SCHEMA 適合程序化處理。掌握四者組合拳,覆蓋 99% 表結構查詢場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved