🌟 各位看官好,我是maomi_9526

🌍 种一棵树最好是十年前,其次是现在!

🚀 今天来学习C语言的相关知识。

👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦

目录

第1关:标量子查询

第2关:列子查询([not] in) 

第3关:列子查询(any/all)

第4关:相关子查询(exists)

第5关:相关子查询(not exists+表子查询) 

第6关: 相关子查询(not exists) 


第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+表子查询) 

任务描述
本关任务:求选修了'刘东明' 同学选修的全部课程的学生的学号。

相关知识
本任务要实现一个除法运算,要完成本任务要用到两个知识点:

  1. 相关子查询中使用否定(not exists)之否定(not exists)实现除法运算; 
  2. 用表子查询返回刘东明同学选修的全部课程

编程要求
在右侧窗口补充代码,求选修了'刘东明' 同学选修的全部课程的学生的学号。

测试说明
编写代码后,点击测评即可。


开始你的任务吧,祝你成功!

 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**********/

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐