学习笔记
MySQL DQL 查询实战
2026-08-18 09:00
MySQL
整理 SELECT、WHERE、聚合分组、连接查询与子查询等 DQL 基础能力,配合典型 SQL 示例复盘。
MySQL DQL 查询实战
来源:数据库技术与应用 第二次实验 + day13 综合练习 · 整理:婉萤
单表基础
SELECT列筛选 +AS别名WHERE条件过滤:比较、BETWEEN、IN、LIKE模糊匹配- 常见函数:
IFNULL、CONCAT、日期函数、ROUND
聚合与分组
SELECT deptno, COUNT(*) AS cnt, AVG(sal) AS avg_sal
FROM emp
GROUP BY deptno
HAVING AVG(sal) > 2000;
要点:WHERE 过滤行(分组前),HAVING 过滤组(分组后),两者不能混用。
多表查询
内连接(只留匹配行):
SELECT e.ename, d.dname
FROM emp e
JOIN dept d ON e.deptno = d.deptno;
外连接(保留不匹配的一侧):LEFT JOIN 查「没有雇员的部门」这类题必须用它——WHERE e.empno IS NULL 是关键手法。
子查询
- 单行子查询:
WHERE sal = (SELECT MAX(sal) FROM emp) - 多行子查询:
IN、ALL、ANY - 相关子查询:外层每行触发一次内层——「找出工资高于本部门平均工资的员工」
经典题目(dept/emp 数据集)
- 查出薪金等于或高于部门 30 中任意一名员工薪金的员工
- 各部门人数、平均工资、平均服务年限
- 各工作岗位的最低工资及对应雇员姓名
- 列转行:把每个部门的人名横排成一行
这些题基本覆盖了面试 SQL 的常考题型。写 SQL 的顺序:先定结果列 → 再想数据来源(可能要多表/子查询)→ 最后套分组与过滤。