MySQL的常用查询语句集锦
最近参加了一些传统企业的面试,通常都会写一份笔试题,和大厂不一样,他们是真的笔试题(纸质试卷,考察技术基础题:比如语言特性、计算机体系结构、SQL等),虽然说是技术基础,但是很多题目难度还是很高的,比如MySQL的查询语句,不仅考察基础知识,还考察如何解决复杂的业务问题。故此,我翻阅了一些博客和书籍,记录了一些典型的MySQL查询场景,提供建表语句和解答,而且难度是依次递增,非常有趣。
1. 查询条件和排序
题目 1:查找价格大于 50 的产品,并按照创建日期降序排列
建表语句
1 | |
查询语句
1 | |
2. 复杂条件查询
题目 2:查询在2023年内购买的订单,且订单金额在100到500之间的订单记录
建表语句
1 | |
查询语句
1 | |
3. 分组和聚合函数
题目 3:按客户统计订单数量,并筛选出订单数量超过 2 的客户
建表语句
1 | |
查询语句
1 | |
4. 联表查询(JOIN)
题目 4:查询所有订单信息,包括每个订单的客户姓名
建表语句
1 | |
查询语句
1 | |
5. 子查询和嵌套查询
题目 5:查询订单总金额排名第二的客户姓名
建表语句
1 | |
查询语句
1 | |
6. 窗口函数
题目 6:对于每个客户,按订单日期排序,获取每个订单的累计金额
建表语句
1 | |
查询语句
1 | |
注意,以上是累计金额。
以上就是关于MySQL查询语句的部分面试题示例。每道题都从不同的场景入手,涵盖了条件查询、排序、分组、联表、子查询、窗口函数等内容,希望能帮助你加深对MySQL复杂查询的理解。
继续进阶
7. 窗口函数排名
题目 7:查找每个部门中薪资排名前 2 的员工
建表语句
1 | |
查询语句
1 | |
8. 递归查询(层级结构)
题目 8:查询员工的所有上级,要求从直接上级到最高上级按顺序排列
建表语句
1 | |
查询语句
1 | |
9. 复杂联表查询和条件过滤
题目 9:查找所有项目中参与人数超过 5 人,且项目完成时间少于 3 个月的项目
建表语句
1 | |
查询语句
1 | |
10. 组合查询与聚合函数
题目 10:统计每个月新增客户数和订单总额,显示月份、客户数、订单金额,并按月份排序
建表语句
1 | |
查询语句
1 | |
11. 复杂子查询和条件过滤
题目 11:查询每位员工在所有项目中的平均工资排名
建表语句
1 | |
查询语句
1 | |
12. 使用 JSON 函数的复杂查询
题目 12:查找包含某个特定技能的员工及其技能等级
建表语句
1 | |
查询语句
1 | |
这些题目涵盖了窗口函数、递归查询、条件过滤、组合查询、子查询、JSON数据查询等多种复杂查询情境,能够有效检验MySQL查询技能的广度和深度。
继续进阶
13. 公共表表达式(CTE)与递归查询
题目 13:查询某员工及其所有直接和间接下属,要求层级显示(层级越高,值越大)
建表语句
1 | |
查询语句
1 | |
14. 复杂的时间间隔查询
题目 14:查询每位客户最近两次下单的时间间隔(以天为单位)
建表语句
1 | |
查询语句
1 | |
15. 多表自关联查询
题目 15:查找同一部门中工资差距最大的两位员工及其差距
建表语句
1 | |
查询语句
1 | |
16. 组合查询:统计类和动态窗口查询
题目 16:查询所有员工中每月的工资发放总额,按月份排序
建表语句
1 | |
查询语句
1 | |
17. JSON 操作与条件过滤
题目 17:查找有技能“Python”且等级在“Advanced”或以上的员工姓名及其技能等级
建表语句
1 | |
查询语句
1 | |
18. 复杂条件过滤和计算
题目 8:统计所有产品每个季度的销售总额,只统计销售额超过1000的季度记录
建表语句
1 | |
查询语句
1 | |
这些题目进一步考察了公共表表达式(CTE)、自关联、JSON 数据处理、动态窗口查询等技巧。
MySQL的常用查询语句集锦
https://yangtzeshore.github.io/2024/11/13/MySQLQuery/