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 > 5WHERE 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
逻辑组合 ANDORNOT,括号改变优先级

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 子查询

嵌套在 SELECTFROMWHEREHAVING 后的 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 KEYPRIMARY 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 用户名@"客户端地址";

权限:ALLUSAGE(无权限)、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

相关推荐
snow@li16 小时前
MyBatis:动态 SQL 全景梳理
数据库·sql·mybatis
360智汇云17 小时前
KV-Probe:通用 KV 数据库测试套件
数据库
x8617 小时前
我与 IT 这三十年:2015,大数据平台的重与轻
数据库·it史
BLSxiaopanlaile17 小时前
关于 select count(*)的一些总结
后端·mysql
z落落17 小时前
T-SQL 事务(Transaction)
java·数据库·sql
ClouGence19 小时前
MySQL迁移到达梦怎么做?信创数据库低停机迁移实战
数据库·sql·mysql
星空露珠19 小时前
迷你世界3.0API,事件监听
开发语言·数据结构·数据库·游戏·lua
数据库安全19 小时前
灾备演练双月报|美创 DRCC 筑牢红十字医院医疗系统安全底线
数据库·安全
IvorySQL19 小时前
PG 日报|PG20 正式计划移除 refint 模块,官方指引迁移原生外键
数据库·人工智能·postgresql·开源·区块链
小罗水19 小时前
第11章 PostgreSQL + pgvector 向量检索
java·数据库·spring cloud·微服务