sql where中用case_从零学会SQL--sql面试题汇总

博客围绕SQL查询展开,涵盖简单查询、汇总分析、复杂查询、多表查询等操作,如创建表、分组、子查询等。还介绍了行列转换中使用case表达式的方法,最后给出提高SQL查询效率的建议,如select少用*、where避免左侧表达式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简单查询

创建学校数据库的表

8ab52774b0348df68eb368f0ac0cd8a2.png
student表

e1d05b78df90984bf703bd05ab636472.png
score表

2ca00f89bff579b46809052760113907.png
course表

c3bba10edcb3c4354986342d521ecc92.png
teacher表

sql语句如下:

9f262549fa3fdb667d9ea4d3ac4e6eaf.png

ae9d08ea44faba1936c956a7a62ef4c9.png

af55e276daac863e6e0285c0343a29e6.png

44c8aef7a9453e95126feda26b526ab5.png

练习:查找学生

a82c69a4eea582e49b20add175c808ef.png

ae77aefcfdf239832ff2ff3d58f4d663.png

0704a7a92f4e6c1261bdf9865b22b146.png

e3c0bf7762a2c46421f92d40be697106.png

二、汇总分析

  • 练习:汇总分析

85be7dbc3bcc40802bc63a8b7af0eeb9.png

9162186e496231a24c22440532cd4a74.png
  • 练习:分组 group by

85fdf02be3219c4452541f84bd3af801.png

ef2325fc4c36d9bb532b43421eee5f02.png

2d969e8836e1149d1c87c5f3b11e6305.png
  • 练习:分组结果的条件 having

cc87b29da8ed00f51780cbbe8bcd1065.png

a44274bf9116bc4c86f33f56e8afd684.png

78f3987dd2dd411782860ee5c0ef538b.png
  • 练习:对查询结果排序 order by

de83bbf43ce3ef0e7731836aadc8f493.png

8abd5fe19c1cb7b7cd5bb75b5c44e606.png

e3c87616cc25f14fa866ca7957adc647.png

57f0339309537fb25d0074958c36aaf6.png

ad5396f650303f2ffb44a940d4a048fb.png

三、复杂查询

  • 子查询

10212171aa77566879e4f54b1811e2d4.png

8a6a753b3ca7bca2392b5084fec418cb.png

c49409a0738e23f8aff8ec2024526dfa.png
  • 日期函数

4102a287f8007ba714faf174107cb612.png
  • topN问题
  • 例:如何找到每个类别下用户最喜欢的产品
  • 例:每个类别下用户点击最多的5个商品是什么?
  • 如何解决:分组取最大值、最小值、每组最大的N条(top N)记录

fe8a6a1437f8fbd96379062eca86606c.png
分组取每组最大值

363815d76c4c2c9a6663fa5360c0345d.png
分组取每组最小值

b4d7e7998460a28055a1e5562a9b70b1.png
每组最大的2条记录

628abed7a7355aa37c4bf08d090781d3.png

四、多表查询

c5679306af5b4dd0c489786bf65da39d.png
在学生表但不在近视学生表的数据

b16ae74c8a5ae5268f1f0d9224821c03.png

eaa73392ad606f8b159799a115b6182a.png

9462c2cb733a93c67652917cd84b95cb.png

71c3a766ebb510573cc1d0012f678779.png

489b8853994814a34df4bc53e8bdab59.png

4203b13268aa96a2d7a63f1d92dbb0f1.png
  • 行列如何转换
  • Q、

9d545b32bb12320b3ece38b5b56b4c61.png

0895b61f17e6b5d1501417b4a94a4c47.png
  • 第一步:使用常量列输出目标表的结构

64be1c0ba83710888af3da6fb85a2bbf.png
  • 第二步:使用case表达式,替换常量列为对应的成绩

d46cb5bc41339f3783dd4b124fced0a8.png

c14329e0355a50576e064a90b1725104.png
  • 第三步:分组,并使用最大值函数max取出每个方块的最大值

c2aa749eef0a0bc121290c9f39aacd57.png

五、如何提高SQL查询的效率

  • select子句中尽量少用*,需要查询哪些列数据就写哪几列
  • where子句中,避免在比较符号的左侧出现表达式、函数等操作,要放在右侧
  • 尽量避免使用 in 和 not in,因为使用这两个会导致数据库进行全表搜索
  • 尽量避免使用 or,因为使用这个也会导致数据库进行全表搜索
  • 根据需要返回的数据行数,使用limit子句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值