找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2033

积分

0

好友

285

主题
发表于 4 天前 | 查看: 15| 回复: 0

MySQL作为大型应用架构中的核心数据库,掌握其常用命令是每位开发者和DBA的必备技能。本文将系统性地梳理从基础连接到高级调优的40条核心MySQL命令,助你快速上手与问题排查。

连接与基本管理

  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. 修改当前用户密码(MySQL 8.0+推荐方式)

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  5. 刷新权限(在修改用户或权限后立即生效)

    FLUSH PRIVILEGES;

数据库操作

  1. 创建数据库

    CREATE DATABASE testdb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 选择/切换数据库

    USE testdb;
  3. 查看所有数据库

    SHOW DATABASES;
  4. 删除数据库(操作前请务必确认!)

    DROP DATABASE IF EXISTS testdb;

数据表操作

  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;

    TRUNCATE 操作更快且重置自增ID,推荐使用)或使用 DELETE FROM users;

数据操作 CRUD

  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;

查询优化与诊断

  1. 查看执行计划(SQL优化的核心步骤)

    EXPLAIN SELECT ...;

    或(MySQL 8.0+)

    EXPLAIN ANALYZE SELECT ...;
  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. 强制使用或忽略索引(用于SQL调试)

    SELECT * FROM users FORCE INDEX(idx_age) WHERE age=25;

状态监控与性能

  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

权限与用户管理

  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;

掌握这些命令,足以应对日常开发与运维中的大部分场景。当然,针对更复杂的性能调优或特定功能,建议查阅详细的 MySQL官方文档 以获取最权威的信息。希望这份速查手册能成为你手边的高效工具。




上一篇:前端数据获取优化:从网络模型到React生产级方案解析
下一篇:架构师思维:软件架构师必备的10种关键思维,第5项决定职业高度
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 08:53 , Processed in 0.217962 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表