日常運維與開發中,快速查看當前資料庫、表結構、索引狀態是高頻動作。本文彙總最實用的查看命令,按場景分類,適合貼在工位或收藏夾隨時查閱。
-- 當前使用的資料庫
SELECT DATABASE();
-- 或
STATUS; -- 觀察 "Current database:" 行
-- 列出所有資料庫
SHOW DATABASES;
-- 切換資料庫
USE db_name;
-- 當前庫所有表
SHOW TABLES;
-- 指定庫的表(不切換庫)
SHOW TABLES FROM db_name;
-- 簡潔結構(欄位、類型、Null、Key、Default、Extra)
DESC tbl_name;
-- 等同
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
-- 完整建表語句(含引擎、字符集、分區、索引定義)
SHOW CREATE TABLE tbl_name;
-- 索引詳情
SHOW INDEX FROM tbl_name;
-- 或
SHOW KEYS FROM tbl_name;
USE information_schema;
-- 某表所有欄位詳細屬性
SELECT * FROM COLUMNS WHERE TABLE_NAME = 'tbl_name' AND TABLE_SCHEMA = 'db_name';
-- 某庫所有表大小、行數、引擎
SELECT TABLE_NAME, ENGINE, TABLE_ROWS,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) AS Size_MB
FROM TABLES WHERE TABLE_SCHEMA = 'db_name';
-- 線程/連接狀態
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST; -- 顯示完整 SQL
-- 全域狀態變數
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Queries';
SHOW GLOBAL STATUS LIKE 'Slow_queries';
-- InnoDB 引擎狀態
SHOW ENGINE INNODB STATUS\G
-- 當前用戶權限
SHOW GRANTS;
-- 指定用戶權限
SHOW GRANTS FOR 'user'@'host';
-- 所有用戶
SELECT User, Host FROM mysql.user;
# 顯示當前庫所有表大小排序
alias dbsize='mysql -e "SELECT TABLE_SCHEMA, TABLE_NAME, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) MB FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys') ORDER BY MB DESC;"'
# 顯示前 10 大表
alias top10tables='mysql -e "SELECT TABLE_SCHEMA, TABLE_NAME, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) MB FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema','sys') ORDER BY MB DESC LIMIT 10;"'
熟練使用上述命令,能在秒級定位結構問題、鎖等待、空間佔用等常見故障。