查看表結構是日常開發運維高頻操作。本文匯總MySQL 5種查看表結構命令、庫表層級查詢指令,並附帶Oracle對應命令對照,構建跨資料庫元數據查詢速查表。
| 命令 | 語法 | 特點 | 輸出範例欄位 |
|---|---|---|---|
| DESC | DESC tbl_name; | 最簡潔,DESCRIBE別名 | Field, Type, Null, Key, Default, Extra |
| SHOW COLUMNS | SHOW COLUMNS FROM tbl_name; | 等同DESC,支援LIKE過濾 | 同DESC |
| DESCRIBE | DESCRIBE tbl_name; | 標準SQL風格 | 同DESC |
| SHOW CREATE TABLE | SHOW CREATE TABLE tbl_name; | 含建表DDL、引擎、字符集、分區 | Table, Create Table |
| INFORMATION_SCHEMA | SELECT * FROM COLUMNS WHERE TABLE_NAME='tbl_name'; | 標準SQL、可JOIN、可程式化查詢 | 完整元數據欄位 |
-- 快速查看結構
DESC users;
-- 獲取完整建表語句(含引擎、字符集、自增值)
SHOW CREATE TABLE users\G
-- 程式化查詢:找出所有VARCHAR(255)欄位
SELECT TABLE_NAME, COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_db' AND DATA_TYPE = 'varchar' AND CHARACTER_MAXIMUM_LENGTH = 255;
-- 列出所有資料庫
SHOW DATABASES;
-- 切換資料庫
USE db_name;
-- 列出當前庫所有表
SHOW TABLES;
-- 列出視圖
SHOW FULL TABLES WHERE Table_type = 'VIEW';
-- 原索引:UNIQUE AK_PAS_Name (PAC_Name)
-- 目標:UNIQUE AK_PAS_Name (PC_ID, PAC_Name)
ALTER TABLE tb_webparamcounter DROP INDEX AK_PAS_Name;
ALTER TABLE tb_webparamcounter ADD UNIQUE AK_PAS_Name (PC_ID, PAC_Name);
注意:若涉及欄位為外鍵,必須先DROP FOREIGN KEY再操作索引。
SHOW PROCEDURE STATUS;
-- 或查詢INFORMATION_SCHEMA.ROUTINES
| 用途 | MySQL | Oracle |
|---|---|---|
| 當前資料庫資訊 | SELECT DATABASE(); | SELECT * FROM v$database; |
| 當前用戶 | SELECT USER(); | SELECT * FROM all_users; |
| 用戶表列表 | SHOW TABLES; | SELECT * FROM user_tables; |
| 表結構 | DESC tbl | DESC tbl (SQL*Plus) |
| 建表DDL | SHOW CREATE TABLE | DBMS_METADATA.GET_DDL |
↑/↓方向鍵調取歷史命令\G結尾垂直顯示,適合寬表結構閱讀掌握多樣化的元數據查詢方式,能在不同場景(快速確認、DDL獲取、自動化腳本、異構遷移)選擇最高效工具。