MySQL作为大型应用架构中的核心数据库,掌握其常用命令是每位开发者和DBA的必备技能。本文将系统性地梳理从基础连接到高级调优的40条核心MySQL命令,助你快速上手与问题排查。
连接与基本管理
-
登录MySQL
mysql -h 127.0.0.1 -P 3306 -u root -p
或使用简写格式:
mysql -uroot -p
-
退出MySQL客户端
exit
或使用 \q、quit。
-
显示当前用户
SELECT CURRENT_USER();
或
SELECT USER();
-
修改当前用户密码(MySQL 8.0+推荐方式)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
-
刷新权限(在修改用户或权限后立即生效)
FLUSH PRIVILEGES;
数据库操作
-
创建数据库
CREATE DATABASE testdb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
选择/切换数据库
USE testdb;
-
查看所有数据库
SHOW DATABASES;
-
删除数据库(操作前请务必确认!)
DROP DATABASE IF EXISTS testdb;
数据表操作
-
查看当前库所有表
SHOW TABLES;
-
创建表(经典写法示例)
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
查看表结构(最常用的三种方式)
DESCRIBE users;
SHOW COLUMNS FROM users;
SHOW CREATE TABLE users\G
-
修改表结构 – 增加列
ALTER TABLE users ADD COLUMN age TINYINT UNSIGNED DEFAULT 0;
-
修改表结构 – 修改列类型
ALTER TABLE users MODIFY COLUMN username VARCHAR(100) NOT NULL;
-
删除表
DROP TABLE IF EXISTS old_table;
-
清空表数据(保留表结构)
TRUNCATE TABLE users;
(TRUNCATE 操作更快且重置自增ID,推荐使用)或使用 DELETE FROM users;。
数据操作 CRUD
-
插入单条数据
INSERT INTO users (username, age) VALUES ('tom', 28);
-
批量插入数据(提升性能的最佳实践)
INSERT INTO users (username, age) VALUES ('a',22),('b',25),('c',30);
-
更新数据
UPDATE users SET age = age + 1 WHERE id = 1;
-
删除数据(带条件限制,避免误删大量数据)
DELETE FROM users WHERE id > 1000 LIMIT 500;
-
查询 – 基础示例
SELECT id, username, age FROM users WHERE age >= 18 ORDER BY id DESC LIMIT 10;
-
查询 – 聚合与分组
SELECT age, COUNT(*) AS cnt FROM users GROUP BY age HAVING cnt > 5 ORDER BY cnt DESC;
查询优化与诊断
-
查看执行计划(SQL优化的核心步骤)
EXPLAIN SELECT ...;
或(MySQL 8.0+)
EXPLAIN ANALYZE SELECT ...;
-
查看慢查询开关与设置
SHOW VARIABLES LIKE '%slow_query%';
SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 1;
-
查看正在执行的语句(排查性能问题的救火神器)
SHOW PROCESSLIST;
或
SELECT * FROM information_schema.processlist ORDER BY TIME DESC;
-
查看InnoDB引擎状态(包含锁、事务、缓冲池等关键信息)
SHOW ENGINE INNODB STATUS\G
-
查看表索引
SHOW INDEX FROM users;
-
强制使用或忽略索引(用于SQL调试)
SELECT * FROM users FORCE INDEX(idx_age) WHERE age=25;
状态监控与性能
-
查看全局或会话变量
SHOW GLOBAL VARIABLES LIKE '%innodb_buffer_pool%';
SHOW SESSION VARIABLES LIKE 'max_connections';
-
查看服务器运行状态
SHOW GLOBAL STATUS LIKE 'Threads_%';
SHOW GLOBAL STATUS LIKE 'Queries';
-
查看连接数相关状态
SHOW STATUS LIKE 'Max_used_connections';
SHOW STATUS LIKE 'Threads_connected';
-
查看表占用空间与行数
SELECT
table_name,
engine,
table_rows,
data_length/1024/1024 AS 'MB'
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY data_length DESC;
-
查看主从复制状态(主从架构环境必备命令)
SHOW MASTER STATUS\G
SHOW SLAVE STATUS\G
权限与用户管理
-
创建用户
CREATE USER 'appuser'@'%' IDENTIFIED BY '123456';
-
授权(常用写法)
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'appuser'@'%';
或授予全库权限:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
-
查看当前用户权限
SHOW GRANTS FOR CURRENT_USER();
或简写为
SHOW GRANTS;
掌握这些命令,足以应对日常开发与运维中的大部分场景。当然,针对更复杂的性能调优或特定功能,建议查阅详细的 MySQL官方文档 以获取最权威的信息。希望这份速查手册能成为你手边的高效工具。
|