SQL练习

博主分享了在学习MySQL过程中遇到的一些查询题目,包括课程成绩对比、平均成绩查询、选课统计等多个方面,旨在通过实际操作提升对SQL的理解。同时,博主也提出一些难题并分享了解题思路,邀请读者一起探讨。

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

这学期学习了MySQL查询语言,感觉理论听得懂但是做题就不会,于是找了一些查询题目来练习,记录一下做题的思路

题目及数据来源

https://blog.csdn.net/qq_45574891/article/details/102559547

1.查询" 01 “课程比” 02 "课程成绩高的学生的信息

#根据返回的子查询中的SId来返回学生信息
select * from student  
where SId in( select SId
from (
#将课程01的成绩和课程02的成绩单独做成表后自然链接(根据学号相同自然连接)
(select SId, score as class1_score from sc where CId = "01") as t1 
natural join
(select SId, score as class2_score from sc where CId = "02") as t2
) 
#筛选符合题中条件的元组
where class1_score > class2_score )

2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

select SId, Sname, avg_score from (
(select SId, avg(score) as avg_score from sc group by SId) as t1
natural join 
student)
where avg_score >= 60

3.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )

select student.SId, Sname, count_CId, sum_score
from(
#用右外链接保持右表数据元组不变,连接后左表无数据处为null
(select SId, count(CId) as count_CId, sum(score) as sum_score from sc group by SId) as t1
right join
student on t1.SId = student.SId )

4.查询「李」姓老师的数量

select count(*)
from teacher
where Tname like 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值