MySQL常用命令大全(2026最新版)

MySQL是大型架构的必备数据库,下面我就全面来详解MySQL核心命令@mikechen

1. 连接与基本管理(5条)

  1. 登录MySQL
    mysql -h 127.0.0.1 -P 3306 -u root -p
    或简写:mysql -uroot -p
  2. 退出MySQL客户端
    exit\qquit
  3. 显示当前用户
    SELECT CURRENT_USER();SELECT USER();
  4. 修改当前用户密码(8.0+推荐)
    ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
  5. 刷新权限(修改权限/用户后立即生效)
    FLUSH PRIVILEGES;

2. 数据库操作(4条)

  1. 创建数据库
    CREATE DATABASE testdb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 选择/切换数据库
    USE testdb;
  3. 查看所有数据库
    SHOW DATABASES;
  4. 删除数据库(慎用!)
    DROP DATABASE IF EXISTS testdb;

3. 数据表操作(7条)

  1. 查看当前库所有表
    SHOW TABLES;
  2. 创建表(经典写法)
    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;
  3. 查看表结构(最常用三种)
    DESCRIBE users;
    SHOW COLUMNS FROM users;
    SHOW CREATE TABLE users\G
  4. 修改表结构 – 加列
    ALTER TABLE users ADD COLUMN age TINYINT UNSIGNED DEFAULT 0;
  5. 修改表结构 – 修改列类型
    ALTER TABLE users MODIFY COLUMN username VARCHAR(100) NOT NULL;
  6. 删除表
    DROP TABLE IF EXISTS old_table;
  7. 清空表数据(保留表结构)
    TRUNCATE TABLE users;(推荐) 或 DELETE FROM users;

4. 数据操作 CRUD(6条)

  1. 插入单条
    INSERT INTO users (username, age) VALUES (‘tom’, 28);
  2. 批量插入(性能最佳)
    INSERT INTO users (username, age) VALUES (‘a’,22),(‘b’,25),(‘c’,30);
  3. 更新数据
    UPDATE users SET age = age + 1 WHERE id = 1;
  4. 删除数据
    DELETE FROM users WHERE id > 1000 LIMIT 500;
  5. 查询 – 基础
    SELECT id, username, age FROM users WHERE age >= 18 ORDER BY id DESC LIMIT 10;
  6. 查询 – 聚合 + 分组
    SELECT age, COUNT(*) AS cnt FROM users GROUP BY age HAVING cnt > 5 ORDER BY cnt DESC;

5. 查询优化 & 诊断(6条)

  1. 执行计划(最重要!)
    EXPLAIN SELECT …;EXPLAIN ANALYZE SELECT …;(8.0+)
  2. 查看慢查询开关 & 设置
    SHOW VARIABLES LIKE ‘%slow_query%’;
    SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 1;
  3. 查看正在执行的语句(救火神器)
    SHOW PROCESSLIST;SELECT * FROM information_schema.processlist ORDER BY TIME DESC;
  4. 查看InnoDB引擎状态(锁、事务、缓冲池等)
    SHOW ENGINE INNODB STATUS\G
  5. 查看表索引
    SHOW INDEX FROM users;
  6. 强制使用/不使用索引(调试用)
    SELECT * FROM users FORCE INDEX(idx_age) WHERE age=25;

6. 状态监控 & 性能(5条)

  1. 查看全局/会话变量
    SHOW GLOBAL VARIABLES LIKE ‘%innodb_buffer_pool%’;
    SHOW SESSION VARIABLES LIKE ‘max_connections’;
  2. 查看服务器运行状态
    SHOW GLOBAL STATUS LIKE ‘Threads_%’;
    SHOW GLOBAL STATUS LIKE ‘Queries’;
  3. 查看连接数相关
    SHOW STATUS LIKE ‘Max_used_connections’;
    SHOW STATUS LIKE ‘Threads_connected’;
  4. 查看表占用空间 & 行数
    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;
  5. 查看主从复制状态(主从环境必备)
    SHOW MASTER STATUS\G
    SHOW SLAVE STATUS\G

7. 权限 & 用户(3条)

  1. 创建用户
    CREATE USER ‘appuser’@’%’ IDENTIFIED BY ‘123456’;
  2. 授权(常用写法)
    GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO ‘appuser’@’%’;
    或全库:GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’%’ WITH GRANT OPTION;
  3. 查看当前用户权限
    SHOW GRANTS FOR CURRENT_USER();SHOW GRANTS;

mikechen睿哥

10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。

评论交流
    说说你的看法