第 2 课

SELECT、WHERE 与 ORDER BY

读懂日常 SQL 查询的核心结构。

大多数日常 SQL 都从这个结构开始:

SELECT id, email, created_at
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 50;

可以分层阅读:

  • SELECT 决定结果里显示哪些列。
  • FROM 决定从哪张表开始。
  • WHERE 过滤不符合条件的行。
  • ORDER BY 控制结果顺序。
  • LIMIT 限制返回行数。

这很适合人阅读,但数据库内部不一定按这个文本顺序执行。优化器可能选择索引、重排内部步骤。对调试来说,第一步仍然是读懂逻辑含义。

小心过滤条件

很小的过滤条件变化,可能导致完全不同的结果:

WHERE status = 'paid'
  AND created_at >= '2026-01-01'

这表示两个条件都必须满足。如果使用 OR,只要满足其中一个条件即可:

WHERE status = 'paid'
   OR status = 'refunded'

查询结果不对时,应该逐个隔离过滤条件。问自己:是哪一个条件把我预期的行排除了?

没有 ORDER BY 就不要依赖顺序

表没有稳定的“自然顺序”可供应用代码依赖。如果接口声称返回“最新用户”,查询应明确写出 ORDER BY created_at DESC。没有它,结果可能在开发环境看似稳定,但随着索引、升级或数据增长发生变化。

关键结论

简单查询可以按 FROMWHEREORDER BY 调试。先确认源数据,再逐步添加过滤,最后添加排序和限制。

使用 SQL 格式化工具 把单行查询拆成可读子句,再逐个检查过滤条件。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览