SQL 基础实战:SELECT 查询从入门到聚合统计
【摘要】 用一张订单表讲清 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)