MySql常用命令速查表

一、数据库(库)管理

操作 命令
创建库 CREATE DATABASE [IF NOT EXISTS] 库名;
查看所有库 SHOW DATABASES;
切换库 USE 库名;
查看当前库 SELECT DATABASE();
查看建库语句 SHOW CREATE DATABASE 库名;
删除库(高危) DROP DATABASE [IF EXISTS] 库名;

二、数据表(表)管理

2.1 创建表

sql 复制代码
CREATE TABLE 库名.表名 (
    字段1 数据类型 [约束],
    字段2 数据类型 [约束],
    ...
);

2.2 查看表信息

sql 复制代码
SHOW TABLES;                        -- 查看当前库所有表
DESC 库名.表名;                     -- 查看表结构
SHOW CREATE TABLE 库名.表名;        -- 查看建表语句

2.3 修改表结构

sql 复制代码
-- 添加字段
ALTER TABLE 库名.表名 ADD 字段名 类型 [FIRST|AFTER 字段];

-- 修改字段类型
ALTER TABLE 库名.表名 MODIFY 字段名 新类型;

-- 修改字段名(可同时改类型)
ALTER TABLE 库名.表名 CHANGE 旧字段名 新字段名 新类型;

-- 修改表名
ALTER TABLE 库名.旧表名 RENAME TO 库名.新表名;

-- 删除字段
ALTER TABLE 库名.表名 DROP 字段名;

2.4 删除表(保留结构用TRUNCATE)

sql 复制代码
DROP TABLE 库名.表名;                -- 删除表(结构+数据)
TRUNCATE TABLE 库名.表名;            -- 清空数据,重置自增,保留结构

三、表记录(数据)操作(DML)

操作 命令
插入数据 INSERT INTO 库名.表名 [(字段列表)] VALUES (值列表);
更新数据 UPDATE 库名.表名 SET 字段=值 WHERE 条件;(务必加WHERE)
删除数据 DELETE FROM 库名.表名 WHERE 条件;(务必加WHERE)

四、查询(SELECT)

4.1 基础查询

sql 复制代码
SELECT 字段列表 FROM 库名.表名 [WHERE 条件];
  • * 表示所有字段
  • 可用 AS 起别名
  • DISTINCT 去重
  • CONCAT(字段1, '分隔', 字段2) 拼接字符串

4.2 常用筛选条件

类型 示例
比较 WHERE uid > 5、WHERE name = 'root'
空值判断 WHERE shell IS [NOT] NULL
范围 WHERE uid IN (1,3,5)、WHERE uid BETWEEN 10 AND 30
模糊匹配 WHERE name LIKE 'a%'(%任意多个,_单个)
正则 `WHERE name REGEXP '^a
逻辑组合 AND、OR、NOT,括号改变优先级

4.3 结果处理(排序/分组/分页)

sql 复制代码
SELECT 字段列表
FROM 库名.表名
[WHERE 条件]
[GROUP BY 分组字段]              -- 分组,常配合聚合函数
[HAVING 分组后过滤条件]          -- 过滤分组结果,可用聚合函数
[ORDER BY 排序字段 [ASC|DESC]]   -- 排序,多字段用逗号分隔
[LIMIT [偏移量,] 行数];          -- 分页,偏移量从0开始
  • 执行顺序 :FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

4.4 聚合函数(统计)

函数 作用
COUNT(字段) 统计行数(忽略NULL)
SUM(字段) 求和
AVG(字段) 平均值
MAX(字段) / MIN(字段) 最大/最小值

4.5 常用内置函数

sql 复制代码
SELECT VERSION();      -- MySQL版本
SELECT USER();         -- 当前登录用户
SELECT DATABASE();     -- 当前库

五、多表连接查询

5.1 内连接(只保留匹配数据)

sql 复制代码
SELECT 字段列表
FROM 表1 [AS 别名1]
INNER JOIN 表2 [AS 别名2] ON 连接条件
[INNER JOIN 表3 ON 连接条件 ...]
[WHERE/GROUP BY/HAVING/ORDER BY/LIMIT];

5.2 左外连接(保留左表全部,右表无匹配补NULL)

sql 复制代码
SELECT ...
FROM 左表 LEFT JOIN 右表 ON 连接条件 ...;

5.3 右外连接(保留右表全部)

sql 复制代码
SELECT ...
FROM 左表 RIGHT JOIN 右表 ON 连接条件 ...;

MySQL 不支持全外连接,可用 UNION 组合左右连接结果。

5.4 子查询

嵌套在 SELECT、FROM、WHERE、HAVING 后的 SELECT 语句。


六、备份与恢复

6.1 冷备份(物理备份,需停服)

bash 复制代码
systemctl stop mysqld
cp -r /var/lib/mysql /备份目录/
# 或打包
tar -zcf /备份目录/mysql.tar.gz -C /var/lib/mysql .
# 恢复:解压到 /var/lib/mysql,并 chown -R mysql:mysql /var/lib/mysql

6.2 逻辑备份(mysqldump,服务运行中)

bash 复制代码
# 备份
mysqldump -u用户 -p'密码' [选项] > /路径/备份.sql
# 常用选项:-A(全库)、-B 库名(单个或多个库)、库名 表名(单表)
# 恢复
mysql -u用户 -p'密码' < /路径/备份.sql
# 恢复单表需指定库名:mysql -u用户 -p'密码' 库名 < 表备份.sql

6.3 增量备份与恢复(Percona XtraBackup)

  • 全量备份 :xtrabackup --backup --target-dir=/全量目录 --datadir=/var/lib/mysql
  • 增量备份 :xtrabackup --backup --target-dir=/增量目录 --incremental-basedir=/基准目录
  • 恢复步骤 :先 --prepare --apply-log-only 合并所有增量到全量,再用 --copy-back 拷贝回数据目录。

七、二进制日志(binlog)

操作 命令/说明
查看当前日志 SHOW MASTER STATUS;
刷新日志(滚动) FLUSH LOGS;
重置日志 RESET MASTER;
应用binlog恢复 `mysqlbinlog 日志文件
配置参数 在 /etc/my.cnf.d/mysql-server.cnf 中设置 log-bin=/路径/前缀、server_id=数字

八、主键、外键、索引

8.1 主键(PRIMARY KEY)

  • 唯一且非空,一张表只能有一个(可复合)。
  • 建表时:字段名 类型 PRIMARY KEY 或 PRIMARY KEY(字段1,字段2)
  • 已有表添加/删除:
sql 复制代码
ALTER TABLE 表名 ADD PRIMARY KEY (字段);
ALTER TABLE 表名 DROP PRIMARY KEY;
  • 自增:AUTO_INCREMENT 必须配合主键使用。

8.2 外键(FOREIGN KEY)

  • 保证从表字段值在主表参照字段范围内。
  • 建表时:
sql 复制代码
FOREIGN KEY (从表字段) REFERENCES 主表(主表字段)
ON UPDATE CASCADE ON DELETE CASCADE
  • 查看/删除/添加:
sql 复制代码
SHOW CREATE TABLE 表名;
ALTER TABLE 从表 DROP FOREIGN KEY 外键名;
ALTER TABLE 从表 ADD FOREIGN KEY ... REFERENCES ...;

8.3 索引

  • 普通索引:可重复,可为NULL,标志 MUL。
  • 创建:CREATE INDEX 索引名 ON 表名(字段);
  • 删除:DROP INDEX 索引名 ON 表名;
  • 查看:SHOW INDEX FROM 表名;
  • 验证是否使用索引:EXPLAIN SELECT ...;

九、用户与权限管理

9.1 创建用户

sql 复制代码
CREATE USER 用户名@"客户端地址" IDENTIFIED BY '密码';

客户端地址:%(任意)、192.168.8.%(网段)、192.168.8.51(单IP)、localhost(本机)

9.2 授权

sql 复制代码
GRANT 权限列表 ON 库名.表名 TO 用户名@"客户端地址";

权限:ALL、USAGE(无权限)、SELECT,INSERT,...;库表范围:*.*、库名.*、库名.表名

9.3 查看权限

sql 复制代码
SHOW GRANTS FOR 用户名@"客户端地址";

9.4 撤销权限

sql 复制代码
REVOKE 权限列表 ON 库名.表名 FROM 用户名@"客户端地址";

9.5 修改密码

sql 复制代码
SET PASSWORD FOR 用户名@"客户端地址" = '新密码';

9.6 删除用户

sql 复制代码
DROP USER 用户名@"客户端地址";

9.7 查看所有用户

sql 复制代码
SELECT user,host FROM mysql.user;

十、常用管理操作

操作 命令
启动/停止/重启MySQL systemctl start/stop/restart mysqld
查看端口监听 `ss -nutlp
无密码进入(修复) 修改配置文件添加 skip-grant-tables,重启后 mysql 直接进入
更新root密码(有旧密码) mysqladmin -uroot -p'旧密码' password '新密码'
导入SQL文件 mysql -u用户 -p'密码' < /路径/文件.sql

相关推荐
Lysander.Jovian1 小时前
mysql数据库基本使用
mysql
红红谈说1 小时前
标签化推送与已读统计怎么做?一次通知链路的工程复盘
数据库·消息推送·数字乡村·集合运算·已读回执·标签体系·写入放大
Shadow(⊙o⊙)1 小时前
MySQL索引
数据库·mysql
fb_123452 小时前
MySQL运维实战:备份恢复+主从复制+读写分离+MHA高可用(超详细手把手教程)
运维·mysql·oracle
倔强的石头_3 小时前
多环境配置治理:开发、测试、生产连接信息如何隔离
数据库
杨云龙UP3 小时前
一次数据库查询缓慢故障复盘:大表数据增长、SQL全表扫描导致系统响应异常
linux·运维·服务器·数据库·sql·mysql
stark张宇3 小时前
从页、区、段到 B+Tree:InnoDB 表空间如何组织数据?
mysql
2501_933670794 小时前
2027 应用统计学秋招选岗指南:统计、SQL、业务指标如何对应岗位
数据库·sql
Alice-YUE4 小时前
向量数据库选型实战:Chroma/Qdrant/Milvus/PgVector 怎么选
数据库·milvus·向量数据库·chroma·rag·qdrant
invicinble4 小时前
python 编程语言 认识维度
开发语言·数据库·python