用 SQL 搭一个超市数据库:把命令变成回答业务问题的能力
"Sunrise Supermarket" SQL 项目是一次把 SQL 从命令集合变成"真能用来回答数据问题"的练习。不碰随机表,而是围绕超市场景(顾客、订单、订单项、产品)建模——这让 SQL 从查询变成探索业务数据的工具。
1. 结合真实场景,SQL 才变得有意义
最大的收获:SQL 不只是写查询,而是提问题并用数据回答。比如:
- 哪些产品价格超过 100?
- 哪些顾客不是内罗毕的?
- 哪些产品名包含 "Oil"?
- 哪些订单还在 pending?
- 每个顾客下了多少单?
数据库的价值在于能与之交互、取出支持决策的信息。
2. 用 WHERE 过滤数据
WHERE 子句只取满足条件的记录:
SELECT * FROM sunrise.products WHERE price > 100;
3. JOIN 关联表
订单与订单项/产品跨表取数时,JOIN 把关系变成结果集——例如"每个订单包含哪些产品、数量与单价"这类问题,单表答不了。
4. 聚合回答"多少个/多少总额"
GROUP BY 加聚合函数(COUNT、SUM、AVG)回答统计问题:"每个顾客下了多少单""每类产品总销售额"。
5. 排序让结果可读
ORDER BY 按价格/时间/数量排序,配合 LIMIT 拿前 N。
实践建议
- 学 SQL 不要背语法,找一个连续业务场景(超市、订单、库存)反复问问题;
- 一个查询对应一个业务问题,答不上来就拆两步:先查单表再 JOIN/聚合;
- 数据建模先行:顾客/订单/订单项/产品四张表的关系理顺了,后面所有查询都顺。
来源:My SQL Learning Journey: The Sunrise Supermarket Project - DEV Community