SQL查询语句练习(40道)

本文提供40道SQL查询语句练习题,涉及exist、in、not in、全称量词等操作,涵盖成绩对比、课程统计、学生信息等多种场景。通过这些练习,旨在提升SQL查询思维能力。
摘要由CSDN通过智能技术生成

SQL查询语句练习(40道)

素材题目来源

50道SQL练习题及答案与详细分析 偶尔在网上看到了博主在挑战自己的博客,我想着自己也挑战一下自己,毕竟上学期才学完数据库,现在应该也是忘得差不多了,这里记录一下,如有记忆有点混乱的就做一下笔记,没有问题的就不去添加说明了(大胆的想自己已经是掌握好了的)。部分的比较偏一点的(之前数据库课本上没有讲到的就用了他的答案),这个练习的是链接博主的前40道,因为后面的50道题目是使用函数的就没有必要的,关键的是锻炼自己的思维能力。

题目一
  1. 查询" 01 “课程比” 02 "课程成绩高的学生的信息及课程分数

使用exist语句直接查询,其实它可以和in语句相互替换

SELECT s1.Sid,Sname,Sage,Ssex,score
FROM student s1,sc sc1
WHERE s1.SId = sc1.SId AND sc1.CId='01' AND
EXISTS
(
SELECT *
FROM sc sc2
WHERE sc2.SId=s1.SId AND sc2.CId='02' AND sc2.score < sc1.score 
)

1.1 查询同时存在" 01 “课程和” 02 "课程的成绩情况

SELECT t1.SId,t1.CId AS '课程1',t1.score,t2.CId AS '课程2',t2.score  FROM
    (SELECT * FROM sc WHERE sc.CId = '01') AS t1, 
    (SELECT * FROM sc WHERE sc.CId = '02') AS t2
WHERE t1.SId = t2.SId

1.2查询存在" 01 “课程但可能不存在” 02 "课程的成绩情况(不存在时显示为 null )

SELECT * FROM
(SELECT * FROM sc where CId='01') as s1
LEFT JOIN
(SELECT * FROM sc WHERE CId='02') as s2
ON s1.SId = s2.SId

1.3查询不存在" 01 “课程但存在” 02 "课程的成绩情况

SELECT * FROM sc WHERE CId='02'
 AND SId NOT IN
(
SELECT SId FROM sc WHERE CId='01'
)
  1. 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
SELECT student.SId,sname,AVG(score)
FROM student,sc
WHERE student.SId=sc.SId
GROUP BY student.SId
HAVING AVG(score)>='60'
  1. 查询在 SC 表存在成绩的学生信息
SELECT DISTINCT student.* FROM student,sc WHERE student.SId=sc.SId
  1. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和
SELECT student.SId, Sname,COUNT(*) AS '课程总数',SUM(score) AS '总成绩' 
FROM student,sc
WHERE student.SId=sc.SId
GROUP BY student.SId

4.1 查有成绩的学生信息

SELECT * FROM student
WHERE Sid IN 
(
SELECT SId FROM sc
)
  1. 查询「李」姓老师的数量
SELECT COUNT(*) FROM teacher WHERE Tname LIKE '李%'
  1. 查询学过「张三」老师授课的同学的信息
SELECT student.* FROM student,sc WHERE
student.SId=sc.SId AND CId IN
( 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值