【第4天】每天一个MySQL知识点,百日打怪升级

本文涉及的产品
PolarClaw,2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
简介: 本系列由10年经验DBA精心打造,系统梳理MySQL客户端常用命令:从连接参数(-u/-p/-h/-P/字符集)、快捷指令(\s/\q/\G)、数据库/表操作(SHOW/CREATE/DROP/DESC),到状态监控(PROCESSLIST/STATUS/VARIABLES)与实战排障技巧,兼顾面试考点与生产避坑,助你快速上手、底气十足。

MySQL常用命令


大家好,我是一名拥有10年以上经验的DBA老兵。

做这个系列,源于一个朴素的愿望:把踩过的坑、总结的经验系统化输出,希望能帮到刚入行或想进阶的兄弟们。

让我们开始今天的第4天内容。


背景引入

💡 说白了:MySQL命令就两种——一种是 SHOW, SELECT(让你知道数据库现在啥样),一种是 DML, DDL(让你去改数据)。前者保平安,后者干活用。

很多同学会写SQL,但拿起MySQL客户端就蒙——不知道指定什么参数、怎么查看状态、怎么切换数据库。

今天的目标:掌握MySQL客户端常用命令,面试和工作都能底气十足!


核心概念

一、连接与基础命令

# 连接MySQL(最常用)
mysql -u root -p
mysql -h 127.0.0.1 -P 3306 -u root -p

# 指定字符集连接
mysql -u root -p --default-character-set=utf8mb4

# 连接后切换数据库
USE database_name;

# 查看当前数据库
SELECT DATABASE();

面试必问

  • MySQL连接参数有哪些?
  • 如何指定端口和字符集?

📝 面试解答

Q: MySQL连接参数有哪些?

  • -u:用户名
  • -p:密码(直接在-p后面写密码是不安全的,建议-p回车后输入)
  • -h:主机地址,默认127.0.0.1
  • -P:端口号,大写P,默认3306
  • --default-character-set:指定字符集,避免中文乱码
  • -e:直接执行SQL后退出,适合脚本
  • -S:指定socket文件(仅限管理员)

Q: 如何指定端口和字符集?

  • -P 3306 指定端口(大写P)
  • --default-character-set=utf8mb4 指定字符集

二、客户端快捷命令

-- 简写命令(客户端内使用)
\c          -- 中止当前输入
\q          -- 退出客户端(quit)
\s          -- 查看状态信息(status)
\g          -- 发送命令(等同于回车)
\G          -- 发送命令并垂直显示结果
source file -- 执行SQL文件
\. file     -- 同source
-- 退出客户端
EXIT;
-- 或
QUIT;
-- 或
\q
-- 查看版本和状态
STATUS;
-- 或
\s

-- 结果示例:
mysql  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id:          5
Current database:      test
Current user:          root@localhost
SSL:                   Not in use
Using delimiter:       ;
Server version:        8.0.28 MySQL Community Server - GPL
Protocol version:      10
Connection:           Localhost via UNIX socket
UNIX socket:          /var/lib/mysql/mysql.sock

💡 说白了:面试官问你有没有用过 \s 命令,你说没用过,那就尴尬了——这可是查看MySQL状态最常用的快捷命令。


三、数据库操作命令

-- 查看数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE db_name DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- 删除数据库(生产环境千万别手抖!)
DROP DATABASE db_name;

-- 查看当前数据库的表
SHOW TABLES;

-- 查看表结构
DESC table_name;
-- 或
DESCRIBE table_name;
-- 或
SHOW CREATE TABLE table_name\G

四、表操作命令

-- 查看表状态
SHOW TABLE STATUS LIKE 'table_name';

-- 查看索引
SHOW INDEX FROM table_name;

-- 查看创建表语句
SHOW CREATE TABLE table_name;

-- 查看表的字段信息
SHOW COLUMNS FROM table_name;
-- 或
DESCRIBE table_name;

💡 说白了:SHOW CREATE TABLE 是排查问题的神器——有时候建表语句和预期不一样,有没有索引,一SHOW就知道。


五、状态查看命令

-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Threads_running';

-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 查看缓存命中率(重要!)
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';
-- 计算:Innodb_buffer_pool_read_requests / (Innodb_buffer_pool_read_requests + Innodb_buffer_pool_reads)

-- 查看慢查询数量
SHOW GLOBAL STATUS LIKE 'Slow_queries';

-- 查看查询缓存状态(MySQL 8.0已移除,仅供参考)
SHOW VARIABLES LIKE 'query_cache%';
-- 查看 InnoDB 状态(排查锁问题经常用到)
SHOW ENGINE INNODB STATUS;

-- 查看当前正在执行的进程
SHOW PROCESSLIST;
-- 或
SHOW FULL PROCESSLIST;

💡 SHOW PROCESSLIST 是排查"某个SQL怎么这么慢"的第一招——直接看当前在跑什么。


六、变量查看命令

-- 查看所有变量
SHOW VARIABLES;

-- 查看特定变量
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'max_connections';

-- 模糊匹配
SHOW VARIABLES LIKE 'timeout%';
SHOW VARIABLES LIKE '%log%';

实战案例

场景一:快速排查连接数问题

-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';

-- 查看正在运行的连接数
SHOW STATUS LIKE 'Threads_running';

-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 如果发现连接数快满了,再查看具体是谁在连接
SHOW PROCESSLIST;

场景二:查看慢查询配置

-- 查看慢查询是否开启
SHOW VARIABLES LIKE 'slow_query_log';

-- 查看慢查询时间阈值
SHOW VARIABLES LIKE 'long_query_time';

-- 查看慢查询日志文件路径
SHOW VARIABLES LIKE 'slow_query_log_file';

场景三:查看字符集配置

-- 查看所有字符集相关变量
SHOW VARIABLES LIKE 'character%';

-- 结果示例:
+--------------------------+-----------------------------+
| Variable_name            | Value                       |
+--------------------------+-----------------------------+
| character_set_client     | utf8mb4                     |
| character_set_connection | utf8mb4                     |
| character_set_database   | utf8mb4                     |
| character_set_filesystem | binary                      |
| character_set_results    | utf8mb4                     |
| character_set_server     | utf8mb4                     |
+--------------------------+-----------------------------+

避坑指南

⚠️ 真实踩过的坑:

  1. 连接时不指定字符集,中文乱码

    • 一定要加 --default-character-set=utf8mb4
    • 或者登录后执行 SET NAMES utf8mb4;
  2. 在生产环境执行 DROP DATABASE

    • 手动删除时务必先 USE 确认当前库
    • 建议先 DROP DATABASE IF EXISTS db_name; 避免报错
  3. SHOW PROCESSLIST 不显示完整SQL

    • 需要用 SHOW FULL PROCESSLIST 能看更全的输出
  4. 字符集配置看错变量

    • character_set_server 是服务端默认字符集
    • character_set_database 是当前数据库的字符集,不一样!

思考题

🤔 互动时间:

  1. SHOW PROCESSLISTSHOW FULL PROCESSLIST 有什么区别?
  2. 如何快速查看MySQL的当前状态(连接数、版本、字符集)?

总结

🎯 面试考点

  • MySQL连接参数:-u/-p/-h/-P/--default-character-set
  • 客户端快捷命令:\s、\G、\q、source
  • 状态查看命令:SHOW PROCESSLIST、SHOW STATUS、SHOW VARIABLES
  • 常用SHOW命令:SHOW DATABASES/TABLES/INDEX/CREATE TABLE
  • 字符集配置:SET NAMES utf8mb4

💡 AI实战建议:让自己的AI助手记住故障排查命令流,每次遇到问题时自动执行:

# 1. 先看整体状态
SHOW GLOBAL STATUS LIKE 'Threads_connected';  -- 当前连接数
SHOW GLOBAL STATUS LIKE 'Threads_running';    -- 正在跑的连接
SHOW GLOBAL STATUS LIKE 'Slow_queries';       -- 慢查询数量

# 2. 看谁在连接
SHOW FULL PROCESSLIST;  -- 所有在执行的SQL

# 3. 看具体问题
SHOW VARIABLES LIKE 'long_query_time';        -- 慢查询阈值
SHOW ENGINE INNODB STATUS;                     -- InnoDB状态(锁问题)

# 4. 查表结构确认索引
SHOW CREATE TABLE table_name\G                 -- 确认是否用到索引

然后把这些结果发给AI,让它帮你分析:"MySQL现在这个状态,帮我分析可能的原因。"


下期预告:索引基础:B+树详解 —— 面试必问!

全本合集《每天一个MySQL知识点,百日打怪升级》,您的关注是我每日更新的动力


有问题欢迎评论区交流,明天见!

相关文章
|
3天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23295 2
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
5天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
7991 18
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
12天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
4747 24
|
8天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
3330 11
|
7天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
2712 9
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
24天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
20392 61
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)