DQL 查询命令总览

📅 2026/7/8 13:43:51 👁️ 阅读次数 📝 编程学习
DQL 查询命令总览
命令作用是否单独使用常与谁配合企业使用频率示例
SELECT指定查询哪些字段FROM⭐⭐⭐⭐⭐SELECT name, age
FROM指定查询哪张表SELECT⭐⭐⭐⭐⭐FROM student
WHERE过滤满足条件的行SELECT、JOIN⭐⭐⭐⭐⭐WHERE age > 18
ORDER BY对结果排序LIMIT⭐⭐⭐⭐⭐ORDER BY score DESC
LIMIT限制返回的数据数量(分页)ORDER BY⭐⭐⭐⭐⭐LIMIT 10
GROUP BY按字段分组聚合函数、HAVING⭐⭐⭐⭐GROUP BY gender
HAVING对分组后的结果过滤GROUP BY⭐⭐⭐HAVING COUNT(*) > 5
JOIN多表关联查询ON、WHERE⭐⭐⭐⭐⭐JOIN orders ON ...
ON指定 JOIN 的关联条件JOIN⭐⭐⭐⭐⭐ON u.id = o.user_id
INNER JOIN只返回匹配成功的数据ON⭐⭐⭐⭐INNER JOIN orders
LEFT JOIN保留左表所有数据ON⭐⭐⭐⭐⭐LEFT JOIN orders
RIGHT JOIN保留右表所有数据ON⭐⭐RIGHT JOIN orders
DISTINCT去除重复数据SELECT⭐⭐⭐SELECT DISTINCT gender
AS给字段或表起别名SELECT、FROM⭐⭐⭐⭐name AS username
UNION合并两个查询结果并去重SELECT⭐⭐SELECT ... UNION SELECT ...
UNION ALL合并两个查询结果,不去重SELECT⭐⭐UNION ALL

WHERE 中常用的条件运算符

运算符作用示例
=等于age = 18
>大于score > 90
<小于age < 20
>=大于等于age >= 18
<=小于等于score <= 60
<>/!=不等于gender <> 'M'
BETWEEN ... AND ...范围查询(包含边界)BETWEEN 18 AND 25
IN (...)在指定集合中IN (1,2,3)
LIKE模糊查询LIKE 'Tom%'
IS NULL判断为空IS NULL
IS NOT NULL判断不为空IS NOT NULL
AND并且age > 18 AND score > 80
OR或者gender='F' OR score>90
NOT取反NOT gender='M'

聚合函数

函数作用示例
COUNT()统计数量COUNT(*)
SUM()求和SUM(score)
AVG()平均值AVG(score)
MAX()最大值MAX(score)
MIN()最小值MIN(score)

JOIN 类型

JOIN 类型返回结果
INNER JOIN两张表都有的数据
LEFT JOIN左表全部 + 右表匹配的数据
RIGHT JOIN右表全部 + 左表匹配的数据

例如:

用户(user) Tom Jack Lucy 订单(order) Tom Jack
  • INNER JOIN
Tom Jack
  • LEFT JOIN
Tom Jack Lucy
  • RIGHT JOIN
Tom Jack

一个完整 SQL 的组成

企业开发中,一条完整 SQL 通常按下面的顺序书写:

SELECT 字段 FROM 表 JOIN 其他表 ON 关联条件 WHERE 行过滤 GROUP BY 分组 HAVING 分组过滤 ORDER BY 排序 LIMIT 分页;

例如:

SELECT u.name, COUNT(o.id) AS order_count FROM user u LEFT JOIN orders o ON u.id = o.user_id WHERE u.age >= 18 GROUP BY u.name HAVING COUNT(o.id) > 1 ORDER BY order_count DESC LIMIT 10;

SQL 的执行顺序(非常重要)

虽然 SQL 是这样写的:

SELECT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT

MySQL 实际执行顺序更接近:

执行顺序子句作用
FROM确定查询的数据来源
JOIN连接多张表
ON根据关联条件匹配数据
WHERE过滤原始数据
GROUP BY对数据分组
HAVING过滤分组后的结果
SELECT选择最终输出的字段
DISTINCT去除重复记录(如果使用)
ORDER BY排序
LIMIT返回指定数量的数据

⭐ 最后送你一句企业里经常用来理解 DQL 的口诀

SELECT:查什么 FROM:从哪查 JOIN:和谁查 ON:怎么关联 WHERE:筛选谁 GROUP BY:怎么分组 HAVING:筛选哪些组 ORDER BY:怎么排序 LIMIT:返回多少条

这套口诀基本覆盖了 DQL 的全部核心内容。以后看到一条复杂 SQL,你都可以按这几个步骤去理解,它会比死记语法更容易掌握。