MySQL 命令最全详解
🗄️ MySQL 命令最全详解
💡 本文目标:系统梳理 MySQL 最核心的命令,覆盖从登录连接到性能优化的完整链路。
无论你是开发还是运维,这份速查手册都能帮助你在日常工作中快速定位所需命令。
📑 目录
| 序号 | 命令 | 描述 | 使用频率 |
|---|---|---|---|
| 1 | mysql | 登录数据库 | ⭐⭐⭐ |
| 2 | SHOW DATABASES | 查看所有数据库 | ⭐⭐⭐ |
| 3 | CREATE DATABASE | 创建数据库 | ⭐⭐ |
| 4 | USE | 切换数据库 | ⭐⭐⭐ |
| 5 | SHOW TABLES | 查看所有表 | ⭐⭐⭐ |
| 6 | CREATE TABLE | 创建数据表 | ⭐⭐ |
| 7 | INSERT | 插入数据 | ⭐⭐⭐ |
| 8 | SELECT | 查询数据 | ⭐⭐⭐ |
| 9 | UPDATE | 修改数据 | ⭐⭐⭐ |
| 10 | DELETE | 删除数据 | ⭐⭐ |
| 11 | ALTER TABLE | 修改表结构 | ⭐⭐ |
| 12 | DROP | 删除数据库对象 | ⭐ |
| 13 | EXPLAIN | SQL 执行计划 | ⭐⭐⭐ |
1. mysql(登录数据库)
进入 MySQL 的入口命令。
本地登录
mysql -u root -p输入密码即可登录。
远程登录
mysql -h 192.168.10.100 -P 3306 -u root -p参数说明
| 参数 | 说明 |
|---|---|
-h | 主机 IP |
-P | 端口 |
-u | 用户名 |
-p | 密码 |
⚠️ 注意:
-p与密码之间没有空格,如果直接在命令行输入密码会有安全风险,建议只写-p然后回车输入。
2. SHOW DATABASES
查看所有数据库。
SHOW DATABASES;输出示例:
mysqlinformation_schemaperformance_schemasysorder_db🔍 线上排查数据库时经常使用,快速确认目标数据库是否存在。
3. CREATE DATABASE
创建数据库。
基本创建
CREATE DATABASE order_db;指定字符集
CREATE DATABASE order_dbCHARACTER SET utf8mb4;✅ 最佳实践:推荐统一使用
utf8mb4,支持完整的 Unicode 字符(包括 Emoji),避免乱码问题。
4. USE
切换数据库。
USE order_db;查看当前所在数据库:
SELECT DATABASE();📌 开发过程中几乎每天都会使用。
5. SHOW TABLES
查看数据库中的所有表。
SHOW TABLES;输出示例:
userorderproduct查看表结构
DESC user;查看建表语句
SHOW CREATE TABLE user;🔍 线上迁移数据库时经常需要查看完整的建表语句。
6. CREATE TABLE
创建数据表。
CREATE TABLE user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), age INT, create_time DATETIME);查看建表语句
SHOW CREATE TABLE user;📌 线上迁移数据库时经常需要。
7. INSERT
插入数据。
单条插入
INSERT INTO user (username, age)VALUES ('Tom', 20);批量插入
INSERT INTO user (username, age)VALUES ('Tom', 20), ('Jack', 22), ('Lucy', 18);⚡ 性能提示:批量插入性能远高于循环单条插入,大批量数据导入时务必使用批量方式。
8. SELECT
MySQL 最核心命令。
查询全部
SELECT * FROM user;条件查询
SELECT *FROM userWHERE age > 20;排序
SELECT *FROM userORDER BY age DESC;分页
SELECT *FROM userLIMIT 0, 10;聚合统计
SELECT COUNT(*)FROM user;📊
SELECT是线上出现频率最高的命令,掌握各种查询语法是 MySQL 的基本功。
9. UPDATE
修改数据。
单条更新
UPDATE userSET age = 25WHERE id = 1;批量更新
UPDATE userSET age = age + 1WHERE age < 18;⚠️ 危险操作
UPDATE userSET age = 25;🚨 没有
WHERE条件会修改整张表!这是线上事故高发区。安全建议:
- 更新前先用
SELECT查出受影响的数据- 确认
WHERE条件无误后再执行UPDATE- 生产环境建议加
LIMIT限制影响行数
10. DELETE
删除数据。
删除指定记录
DELETE FROM userWHERE id = 1;删除全部
DELETE FROM user;危险操作
DELETE FROM userWHERE 1 = 1;🚨 生产环境必须谨慎执行!
DELETE删除的数据可以通过事务回滚(如果未提交)- 如果要清空整张表,
TRUNCATE TABLE更快(但不可回滚)- 删除前务必确认
WHERE条件
11. ALTER TABLE
修改表结构。线上版本迭代最常见命令之一。
新增字段
ALTER TABLE userADD email VARCHAR(100);修改字段
ALTER TABLE userMODIFY email VARCHAR(200);删除字段
ALTER TABLE userDROP COLUMN email;添加索引
ALTER TABLE userADD INDEX idx_username (username);⚠️ 线上注意:
ALTER TABLE在大表上可能锁表,生产环境建议在低峰期执行或使用pt-online-schema-change等工具。
12. DROP
删除数据库对象。
删除表
DROP TABLE user;删除数据库
DROP DATABASE order_db;🚨 执行前建议先确认:
SHOW TABLES;确认后再操作,
DROP不可回滚。
13. EXPLAIN
SQL 优化最重要命令。
查看执行计划
EXPLAINSELECT *FROM userWHERE username = 'Tom';典型结果
| 字段 | 含义 |
|---|---|
type | 访问类型 |
key | 使用的索引 |
rows | 扫描行数 |
Extra | 额外信息 |
重点关注
type — 访问类型
| type 值 | 性能 | 说明 |
|---|---|---|
system | 最好 | 表只有一行 |
const | 极好 | 主键 / 唯一索引等值查询 |
eq_ref | 极好 | 关联查询使用主键或唯一索引 |
ref | 好 | 非唯一索引等值查询 |
range | 较好 | 索引范围扫描 |
index | 一般 | 扫描整个索引树 |
ALL | 最差 | 全表扫描,性能最差 |
🚨
type = ALL表示全表扫描,是优化的首要目标。
rows — 扫描行数
扫描数据量越大越慢,应通过索引将 rows 降到最低。
Extra — 额外信息
| Extra 值 | 说明 |
|---|---|
Using index | ✅ 覆盖索引,无需回表 |
Using filesort | ⚠️ 额外排序,需优化 |
Using temporary | ⚠️ 使用临时表,需优化 |
Using where | 使用 WHERE 过滤 |
🎯
Using filesort和Using temporary是优化的重点对象。
📝 总结
| 场景 | 推荐命令 |
|---|---|
| 日常查询 | SELECT / WHERE / ORDER BY / LIMIT |
| 数据变更 | INSERT / UPDATE / DELETE |
| 表结构管理 | CREATE TABLE / ALTER TABLE / DROP |
| 性能排查 | EXPLAIN |
| 安全操作 | 先 SELECT 再 UPDATE / DELETE |
💡 核心原则:写 SQL 前,先想清楚你要操作哪些数据;执行前,先确认条件是否正确。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!