MySQL是大型架构的必备数据库,下面我就全面来详解MySQL核心命令@mikechen
1. 连接与基本管理(5条)
- 登录MySQL
mysql -h 127.0.0.1 -P 3306 -u root -p
或简写:mysql -uroot -p - 退出MySQL客户端
exit 或 \q 或 quit - 显示当前用户
SELECT CURRENT_USER(); 或 SELECT USER(); - 修改当前用户密码(8.0+推荐)
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’; - 刷新权限(修改权限/用户后立即生效)
FLUSH PRIVILEGES;
2. 数据库操作(4条)
- 创建数据库
CREATE DATABASE testdb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; - 选择/切换数据库
USE testdb; - 查看所有数据库
SHOW DATABASES; - 删除数据库(慎用!)
DROP DATABASE IF EXISTS testdb;
3. 数据表操作(7条)
- 查看当前库所有表
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;(推荐) 或 DELETE FROM users;
4. 数据操作 CRUD(6条)
- 插入单条
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;
5. 查询优化 & 诊断(6条)
- 执行计划(最重要!)
EXPLAIN SELECT …; 或 EXPLAIN ANALYZE SELECT …;(8.0+) - 查看慢查询开关 & 设置
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; - 强制使用/不使用索引(调试用)
SELECT * FROM users FORCE INDEX(idx_age) WHERE age=25;
6. 状态监控 & 性能(5条)
- 查看全局/会话变量
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
7. 权限 & 用户(3条)
- 创建用户
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;
mikechen睿哥
10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。