MySQL常用查询语句

一、基础查询(核心必用)

1. 查询指定列

sql 复制代码
-- 查询姓名、年龄
SELECT name, age FROM user;

2. 查询所有列

sql 复制代码
SELECT * FROM user;

3. 去重查询(DISTINCT)

sql 复制代码
-- 查询所有不重复的年龄
SELECT DISTINCT age FROM user;

4. 列 / 表别名(AS,可省略)

sql 复制代码
-- 列别名:简化结果展示
SELECT name AS 姓名, salary 工资 FROM user;
-- 表别名:联表时必备
SELECT u.name FROM user u;

二、条件查询(WHERE 筛选数据)

WHERE 用于过滤行,在分组前执行

1. 基础比较运算符

sql 复制代码
-- 等于=、大于>、小于<、不等于!=/<>
SELECT * FROM user WHERE age > 18;
SELECT * FROM user WHERE gender != '男';

2. 范围查询

sql 复制代码
-- BETWEEN 起始值 AND 结束值(包含边界)
SELECT * FROM user WHERE salary BETWEEN 5000 AND 10000;

3. 枚举匹配

sql 复制代码
-- IN(值1,值2):匹配多个固定值
SELECT * FROM user WHERE dept_id IN (1,2,3);

4. 空值判断

sql 复制代码
-- 空值:IS NULL;非空:IS NOT NULL
SELECT * FROM user WHERE dept_id IS NULL;

5. 逻辑运算符

sql 复制代码
-- AND(且)、OR(或)、NOT(非)
SELECT * FROM user WHERE age > 18 AND gender = '男';

三、模糊查询(LIKE,字符串匹配)

通配符:

  • %:匹配任意长度字符(包含 0 个)
  • _:匹配1 个任意字符
sql 复制代码
-- 1. 查询姓"张"的用户
SELECT * FROM user WHERE name LIKE '张%';
-- 2. 查询名字包含"明"的用户
SELECT * FROM user WHERE name LIKE '%明%';
-- 3. 查询名字为2个字的用户
SELECT * FROM user WHERE name LIKE '__';

四、排序查询(ORDER BY)

  • ASC:升序(默认,可省略)
  • DESC:降序
sql 复制代码
-- 按工资降序,年龄升序
SELECT * FROM user ORDER BY salary DESC, age ASC;

五、分页查询(LIMIT,分页必备)

语法LIMIT 起始索引, 每页条数👉 MySQL 起始索引从 0 开始

sql 复制代码
-- 查询第1页,每页10条数据
SELECT * FROM user LIMIT 0,10;
-- 查询第2页
SELECT * FROM user LIMIT 10,10;

六、聚合函数(统计数据)

常用:COUNT/SUM/AVG/MAX/MIN

sql 复制代码
-- 统计总人数
SELECT COUNT(*) FROM user;
-- 统计平均工资
SELECT AVG(salary) FROM user;
-- 统计最高工资
SELECT MAX(salary) FROM user;
-- 统计工资总和
SELECT SUM(salary) FROM user;

七、分组查询(GROUP BY + HAVING)

  • GROUP BY:按指定列分组
  • HAVING过滤分组后的数据(必须配合 GROUP BY 使用)
sql 复制代码
-- 按部门分组,统计每个部门的人数
SELECT dept_id, COUNT(*) AS 人数 
FROM user 
GROUP BY dept_id;

-- 统计人数>5的部门(HAVING过滤分组)
SELECT dept_id, COUNT(*) AS 人数 
FROM user 
GROUP BY dept_id 
HAVING COUNT(*) > 5;

八、多表联查(高频核心)

1. 内连接(INNER JOIN)

查询两张表的交集数据(匹配不上的数据不显示)

sql 复制代码
-- 查询用户+所属部门名称
SELECT u.name, d.dept_name 
FROM user u
INNER JOIN dept d ON u.dept_id = d.id;

2. 左连接(LEFT JOIN)

左表数据全部显示,右表匹配不到则为 NULL(最常用)

sql 复制代码
-- 所有用户都显示,无部门的用户部门名为NULL
SELECT u.name, d.dept_name 
FROM user u
LEFT JOIN dept d ON u.dept_id = d.id;

3. 右连接(RIGHT JOIN)

右表数据全部显示,左表匹配不到则为 NULL

sql 复制代码
SELECT u.name, d.dept_name 
FROM user u
RIGHT JOIN dept d ON u.dept_id = d.id;

九、子查询(嵌套查询)

将一个查询结果作为另一个查询的条件 / 数据源

sql 复制代码
-- 1. 标量子查询(返回单个值):查询"技术部"的所有员工
SELECT * FROM user 
WHERE dept_id = (SELECT id FROM dept WHERE dept_name = '技术部');

-- 2. 列子查询(返回一列):查询在1、2部门的员工
SELECT * FROM user 
WHERE dept_id IN (SELECT id FROM dept WHERE id IN (1,2));

十、配套常用:增 / 删 / 改语句

1. 插入数据(INSERT)

sql 复制代码
-- 插入单条
INSERT INTO user(name, age) VALUES ('张三', 20);
-- 插入多条
INSERT INTO user(name, age) VALUES ('李四',21),('王五',22);

2. 更新数据(UPDATE)

⚠️ 必须加 WHERE 条件,否则会更新全表!

sql 复制代码
UPDATE user SET salary = 8000 WHERE id = 1;

3. 删除数据(DELETE)

⚠️ 必须加 WHERE 条件,否则会删除全表数据!

sql 复制代码
DELETE FROM user WHERE id = 1;

十一、高频实用函数

1. 空值处理(IFNULL)

sql 复制代码
-- 工资为NULL时,显示0
SELECT name, IFNULL(salary, 0) FROM user;

2. 字符串拼接(CONCAT)

sql 复制代码
SELECT CONCAT(name, '-', age) AS 信息 FROM user;

3. 日期格式化(DATE_FORMAT)

sql 复制代码
-- 格式化创建时间:2025-01-01
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM user;

4. 获取当前时间

sql 复制代码
SELECT NOW(); -- 年月日时分秒
SELECT CURDATE(); -- 年月日

总结

  1. 基础流程SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
  2. 高频优先级:条件查询 > 排序分页 > 分组统计 > 左连接联查
  3. 安全提醒UPDATE/DELETE 必须加 WHERE 条件,避免误操作全表
相关推荐
流星白龙6 分钟前
【Redis】1.Redis特性
数据库·redis·缓存
奶糖 肥晨9 分钟前
DBeaver 安装与 MySQL 连接配置教程
数据库·mysql
woshihuanglaoshi27 分钟前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
java_logo2 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司10 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手13 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学13 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh15 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898616 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD16 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关