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

MySQL 常用顯示命令大全:從入門到進階實戰

     編輯:MySQL 綜合教學

MySQL 顯示命令體系概覽

雖然圖形化工具普及,但命令列操作仍是 DBA 與開發者的核心技能。MySQL 的 SHOW 系列命令提供了資料庫元資料的即時視圖,掌握它們能大幅提升排錯與管理效率。本文系統整理核心顯示命令,並補充實戰場景與進階用法。

資料庫層級顯示命令

列出所有資料庫

SHOW DATABASES;
-- 等價於
SHOW SCHEMAS;

進階:過濾系統庫 SHOW DATABASES LIKE 'biz_%'; 或配合 information_schema.SCHEMATA 查詢建立時間、字元集等詳細資訊。

查看資料庫建立語句

SHOW CREATE DATABASE db_name;

輸出包含字元集、排序規則、加密設定等關鍵屬性,遷移驗證必備。

資料表層級顯示命令

切換資料庫上下文

USE db_name;

列出當前資料庫所有表

SHOW TABLES;
-- 顯示表類型與引擎
SHOW FULL TABLES;
-- 過濾模式
SHOW TABLES LIKE 'order_%';

查看表結構定義

-- 基礎結構
DESC table_name;
-- 或
SHOW COLUMNS FROM table_name;

-- 完整建表語句(含索引、外鍵、分區等)
SHOW CREATE TABLE table_name;

-- 詳細欄位資訊(權限、註解等)
SHOW FULL COLUMNS FROM table_name;

索引與約束檢視

SHOW INDEX FROM table_name;
-- 等價於
SHOW KEYS FROM table_name;

輸出包含索引名、唯一性、基數、索引類型(BTREE/HASH/FULLTEXT)、列順序等關鍵指標,優化 SQL 必看。

表狀態統計資訊

SHOW TABLE STATUS [LIKE 'pattern'];

關鍵欄位解讀:

  • Rows:預估行數(InnoDB 為近似值)
  • Data_length:數據大小(位元組)
  • Index_length:索引大小
  • Auto_increment:下一個自增值
  • Create_time / Update_time / Check_time:時間戳記

伺服器狀態與效能監控命令

全域狀態變數

SHOW GLOBAL STATUS;
-- 關鍵計數器
SHOW GLOBAL STATUS LIKE 'Com_%';           -- 命令執行計數
SHOW GLOBAL STATUS LIKE 'Innodb_%';        -- InnoDB 內部狀態
SHOW GLOBAL STATUS LIKE 'Qcache_%';        -- 查詢快取(5.7 移除)
SHOW GLOBAL STATUS LIKE 'Threads_%';       -- 線程狀態

全域配置變數

SHOW GLOBAL VARIABLES;
-- 常用過濾
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE '%char%';              -- 字元集配置

執行緒與鎖監控

-- 當前連線進程
SHOW PROCESSLIST;
-- 完整 SQL 文本
SHOW FULL PROCESSLIST;

-- InnoDB 鎖等待(5.7+)
SELECT * FROM sys.innodb_lock_waits;

-- 當前事務
SELECT * FROM information_schema.INNODB_TRX;

複制狀態檢視

-- 主庫
SHOW MASTER STATUS;
SHOW BINARY LOGS;
SHOW BINLOG EVENTS IN 'mysql-bin.000001';

-- 從庫
SHOW SLAVE STATUS\G
SHOW RELAYLOG EVENTS;

權限與使用者管理顯示

-- 當前使用者權限
SHOW GRANTS;
-- 指定使用者
SHOW GRANTS FOR 'user'@'host';

-- 所有使用者
SELECT User, Host FROM mysql.user;

儲存程序與觸發器

SHOW PROCEDURE STATUS [LIKE 'pattern'];
SHOW FUNCTION STATUS [LIKE 'pattern'];
SHOW TRIGGERS [FROM db_name] [LIKE 'pattern'];
SHOW EVENTS [FROM db_name];

實戰技巧與避坑指南

1. 使用 \G 垂直顯示

寬表資訊用 SHOW ENGINE INNODB STATUS\G 避免換行截斷,閱讀體驗大增。

2. 配合 information_schema 深度查詢

-- 找出最大的 10 張表
SELECT TABLE_SCHEMA, TABLE_NAME, 
       ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2) AS size_mb
FROM information_schema.TABLES
ORDER BY size_mb DESC LIMIT 10;

-- 找出無主鍵的表
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql','sys','information_schema','performance_schema')
AND TABLE_TYPE='BASE TABLE'
AND TABLE_NAME NOT IN (
  SELECT TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS
  WHERE CONSTRAINT_TYPE='PRIMARY KEY'
);

3. 版本差異注意

  • MySQL 8.0 移除程序快取相關變數
  • 5.7+ SHOW CREATE TABLE 包含隱藏列資訊
  • 8.0 SHOW GRANTS 支援角色顯示

總結

MySQL 顯示命令是洞察資料庫內部狀態的「X 光機」。熟練掌握 SHOW DATABASES/TABLES/COLUMNS/INDEX/STATUS/VARIABLES/PROCESSLIST/SLAVE STATUS 等核心命令,並善用 information_schema 與 sys schema 進行二次查詢,能讓你在故障排查、效能調優、架構變更等場景中游刃有餘。建議收藏備查,實戰中肌肉記憶最靠譜。

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