头歌实训之子查询
🌟🚀 今天来学习C语言的相关知识。👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦。
🌟 各位看官好,我是maomi_9526!
🌍 种一棵树最好是十年前,其次是现在!
🚀 今天来学习C语言的相关知识。
👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦
目录
第1关:标量子查询
任务描述
本关任务:使用不相关子查询求年龄大于'刘东明' 的所有学生的姓名与出生日期。
相关知识
为了完成本关任务,你需要掌握:
1.什么叫子查询,
2.比较运算符结合标量子查询的使用。
子查询
子查询是指出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);
子查询指嵌套在查询内部,且必须始终出现在圆括号内,子查询可以分为四类:
- 标量子查询:返回单一值的标量,最简单的形式;
- 列子查询:返回的结果集是 N 行一列;
- 行子查询:返回的结果集是一行 N 列;
- 表子查询:返回的结果集是 N 行 N 列。
编程要求
在右侧编辑器补充代码,使用不相关子查询求年龄大于'刘东明' 的所有学生的姓名与出生日期。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sname,birthday from student where birthday <(select birthday from student where sname='刘东明');
/**********End**********/
第2关:列子查询([not] in)
任务描述
本关任务:求未选修任何课程的学生的学号和姓名。
相关知识
列子查询是指子查询返回为一列多行的集合。本例中先考虑使用子查询将选修课程学生的学号返回,使用外部查询判断哪个学生的学号不在这个集合,返回其学号和姓名。
编程要求
根据提示,在右侧编辑器补充代码,求未选修任何课程的学生的学号和姓名。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sno,sname from student where sno not in(select sno from score );
/**********End**********/
第3关:列子查询(any/all)
任务描述
本关任务:求比数学系中全体学生年龄大的学生的姓名和系
相关知识
列子查询中,当某字段与列子查询返回的集合进行比较运算时,要用比较运算符+any/all,也可以在子查询中使用MAX()和MIN()函数。
编程要求
根据提示,在右侧编辑器补充代码,求比数学系中全体学生年龄大的学生的姓名和系。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sname,sdept,birthday from student where birthday <all(select birthday from student where sdept='数学');
/**********End**********/
第4关:相关子查询(exists)
任务描述
本关任务:求选修了004课程的学生的姓名和系。
相关知识
相关子查询是指查询条件依赖于父查询的查询,相交子查询一般使用EXISTS关键字。
编程要求
根据提示,在右侧编辑器补充代码,求选修了004课程的学生的姓名和系。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sname,sdept from student where sno in (select sno from score where cno='004');
/**********End**********/
第5关:相关子查询(not exists+表子查询)
任务描述
本关任务:求选修了'刘东明' 同学选修的全部课程的学生的学号。
相关知识
本任务要实现一个除法运算,要完成本任务要用到两个知识点:
- 相关子查询中使用否定(not exists)之否定(not exists)实现除法运算;
- 用表子查询返回刘东明同学选修的全部课程
编程要求
在右侧窗口补充代码,求选修了'刘东明' 同学选修的全部课程的学生的学号。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sno from student a where a.sname<>'刘东明' and not exists
(select cno from(select cno from score join student on student.sno=score.sno where sname='刘东明')b where not exists (select *from score where sno=a.sno and cno=b.cno));
/**********End**********/
第6关: 相关子查询(not exists)
任务描述
本关任务:求选修了全部课程的学生的学号。
相关知识
相关子查询中使用否定(not exists)之否定(not exists)实现除法运算。
编程要求
根据提示,在右侧编辑器补充代码, 求选修了全部课程的学生的学号。
测试说明
开始你的任务吧,祝你成功
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
select sno from student where not exists(select *from course where not exists (select * from score where student.sno=score.sno and cno =course.cno));
/**********End**********/
更多推荐
所有评论(0)