← 返回笔记

学习笔记

MySQL DQL 查询实战

2026-08-18 09:00 MySQL

整理 SELECT、WHERE、聚合分组、连接查询与子查询等 DQL 基础能力,配合典型 SQL 示例复盘。

MySQL DQL 查询实战

来源:数据库技术与应用 第二次实验 + day13 综合练习 · 整理:婉萤

单表基础

  • SELECT 列筛选 + AS 别名
  • WHERE 条件过滤:比较、BETWEENINLIKE 模糊匹配
  • 常见函数:IFNULLCONCAT、日期函数、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)
  • 多行子查询:INALLANY
  • 相关子查询:外层每行触发一次内层——「找出工资高于本部门平均工资的员工」

经典题目(dept/emp 数据集)

  1. 查出薪金等于或高于部门 30 中任意一名员工薪金的员工
  2. 各部门人数、平均工资、平均服务年限
  3. 各工作岗位的最低工资及对应雇员姓名
  4. 列转行:把每个部门的人名横排成一行

这些题基本覆盖了面试 SQL 的常考题型。写 SQL 的顺序:先定结果列 → 再想数据来源(可能要多表/子查询)→ 最后套分组与过滤