以下给出teachingdb的所有表以及内容:

course:
cno	cname	ctime	credit
001	数学分析	64	4.0
002	普通物理	64	4.0
003	微机原理	56	3.5
004	数据结构	64	4.0
005	操作系统	56	3.5
006	数据库原理	56	3.5
007	编译原理	48	3.0
008	程序设计	32	2.0
-----------------------------------------------------------------------------------------
score:
sno	cno	tno	grade
96001	001	052503	77.5
96001	002	052504	85.0
96001	003	052501	89.0
96001	004	052502	86.0
96001	005	052505	82.0
96001	006	052505	75.0
96001	007	052506	55.0
96001	008	052507	90.0
96002	001	052504	88.0
96002	003	052502	92.5
96002	006	052507	90.0
96003	001	052504	69.0
96003	003	052501	91.0
96004	001	052503	87.0
96005	004	052502	92.0
96005	005	052505	90.0
96005	006	052505	89.0
96005	007	052507	78.0
97001	001	052504	96.0
97001	008	052505	95.0
97002	003	052502	91.0
97002	004	052505	NULL
97002	006	052507	92.0
97004	005	052502	90.0
97004	006	052501	85.0
-----------------------------------------------------------------------------------------
student:
sno	sname	sdept	sclass	ssex	birthday	totalcredit
96001	马小燕	计算机	01	女	2000-01-02	0.0
96002	黎明	计算机	01	男	2000-03-05	0.0
96003	刘东明	数学	01	男	2000-10-05	0.0
96004	赵志勇	信息	02	男	2000-08-08	0.0
96005	司马志明	计算机	02	男	2001-11-23	0.0
97001	马蓉	数学	02	女	2001-03-04	0.0
97002	李成功	计算机	01	男	2001-09-10	0.0
97003	黎明	信息	03	女	2002-02-08	0.0
97004	李丽	计算机	02	女	2002-01-05	0.0
-----------------------------------------------------------------------------------------
teach:
tno	tname	tsex	tdept
052501	王成刚	男	计算机
052502	李正科	男	计算机
052503	严敏	女	数学
052504	赵高	男	数学
052505	刘玉兰	女	计算机
052506	王成刚	男	信息
052507	马悦	女	计算机

第1关:标量子查询

任务描述
本关任务:使用不相关子查询求年龄大于'刘东明' 的所有学生的姓名与出生日期。

相关知识
为了完成本关任务,你需要掌握:
1.什么叫子查询,
2.比较运算符结合标量子查询的使用。

子查询
子查询是指出现在其他SQL语句内的SELECT子句。

例如:

SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);
子查询指嵌套在查询内部,且必须始终出现在圆括号内,子查询可以分为四类:

标量子查询:返回单一值的标量,最简单的形式;

列子查询:返回的结果集是 N 行一列;

行子查询:返回的结果集是一行 N 列;

表子查询:返回的结果集是 N 行 N 列。

编程要求
在右侧编辑器补充代码,使用不相关子查询求年龄大于'刘东明' 的所有学生的姓名与出生日期。

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

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

 use teachingdb;
 select sname, birthday from student
 where birthday < (select birthday from student where sname = '刘东明');

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

任务描述
本关任务:求未选修任何课程的学生的学号和姓名。

相关知识
列子查询是指子查询返回为一列多行的集合。本例中先考虑使用子查询将选修课程学生的学号返回,使用外部查询判断哪个学生的学号不在这个集合,返回其学号和姓名。

编程要求
根据提示,在右侧编辑器补充代码,求未选修任何课程的学生的学号和姓名。

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

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

 use teachingdb;
 select sno, sname from student
 where sno not in (select sno from score);

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

任务描述
本关任务:求比数学系中全体学生年龄大的学生的姓名和系

相关知识
列子查询中,当某字段与列子查询返回的集合进行比较运算时,要用比较运算符+any/all,也可以在子查询中使用MAX()和MIN()函数。

编程要求
根据提示,在右侧编辑器补充代码,求比数学系中全体学生年龄大的学生的姓名和系。 

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

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

 use teachingdb;
 select sname, sdept, birthday from student
 where birthday < all(select birthday from student where sdept = '数学');

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

任务描述
本关任务:求选修了004课程的学生的姓名和系。

相关知识
相关子查询是指查询条件依赖于父查询的查询,相交子查询一般使用EXISTS关键字。

编程要求
根据提示,在右侧编辑器补充代码,求选修了004课程的学生的姓名和系。

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

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

 use teachingdb;
 select sname, sdept from student
 where sno in (select sno from score where cno = 004);

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

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

相关知识
本任务要实现一个除法运算,要完成本任务要用到两个知识点:
(1)相关子查询中使用否定(not exists)之否定(not exists)实现除法运算; 
(2) 用表子查询返回刘东明同学选修的全部课程

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

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

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

 use teachingdb;
 select sno from score
 where cno in
 (
    select cno from score
    where sno = 
    (
        select sno from student
        where sname = '刘东明'
    )
)
and score.sno != 
(
    select sno from student
    where sname = '刘东明'
)
group by sno having count(cno) >= 2;

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

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

相关知识
相关子查询中使用否定(not exists)之否定(not exists)实现除法运算。 

编程要求
根据提示,在右侧编辑器补充代码, 求选修了全部课程的学生的学号。

测试说明
开始你的任务吧,祝你成功!

 use teachingdb;
 select sno from score
 group by sno
 having count(cno) = 
 (select count(*) from course);

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐