SQL 基础实战:SELECT 查询从入门到聚合统计

举报
yd_222568844 发表于 2026/10/30 14:47:55 2026/10/30
【摘要】 用一张订单表讲清 SELECT 查询:选列、过滤、排序、聚合与分组,含 WHERE 与 HAVING 的区别和三个常见坑。

数据库里的数据只有被查出来才有价值,而 SELECT 就是最常用的查询入口。本文用一张订单表,从基本查询讲到聚合统计,帮你建立清晰的查询思路。

一、准备示例表

假设 orders 表有 id、user_name、amount、status、created_at,分别表示订单编号、用户名、金额、状态和下单时间。写查询前先确认字段名和类型,能少走很多弯路。

SELECT * FROM orders LIMIT 5;

二、SELECT 的基本写法

SELECT 后写要返回的列,FROM 后写表名。只查需要的列,不要习惯性用星号,多余的列会增加传输和阅读成本。别名用 AS 标注,结果更易读。

SELECT id, user_name, amount FROM orders;

三、WHERE、ORDER BY 与 LIMIT

WHERE 过滤行,ORDER BY 排序,LIMIT 限制条数。先过滤再排序,是常见顺序。

SELECT id, user_name, amount FROM orders
WHERE status = 'paid' ORDER BY amount DESC LIMIT 10;

这条语句是找出已支付订单,按金额从高到低取前十条。字符串条件要加引号,数值条件不用。

四、聚合统计与分组

COUNT 统计行数,SUM 求和,AVG 求平均值。想按用户统计,就用 GROUP BY 分组,每组产生一行,再用 HAVING 过滤分组结果。

SELECT user_name, COUNT(*) AS 订单数, SUM(amount) AS 总金额
FROM orders WHERE status = 'paid'
GROUP BY user_name HAVING SUM(amount) > 1000;

关键区别是:WHERE 过滤原始行,HAVING 过滤分组后的结果,两者不要混用。

五、常见坑与结语

常见坑有三点:忘记写 WHERE 导致全表统计错误;GROUP BY 的列与非聚合列不一致;大数据量排序时没有索引会变慢。记住主线:选列、定表、过滤、分组、过滤分组、排序、取数,再学连接查询和子查询就会顺畅很多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。