第1关:基本知识
任务描述
本关任务:根据复杂查询相关知识介绍,完成相关选择题。
知识要求
为了完成本关任务,你需要掌握:
- 基于多个表或视图的SELECT语法结构;
- 包括自然连接、普通连接、自身连接在内的各种连接查询使用场景及语法要点;
- 包括左外连接、右外连接和全外连接的外连接查询使用场景及语法要点;
- 包括相关子查询和不相关子查询的嵌套查询使用场景及语法要点;
- 包括并集、交集和差集的集合查询使用场景及语法要点。
- 基于派生表的查询。
知识链接
关于SELECT语句在复杂查询中的使用场景、语法要点等相关内容和分类示例请参看:4-1 实验导引
测试说明
本关主要介绍的是概念性知识,因此测试以选择题的形式对本关介绍的知识进行测试。
开始你的任务吧,祝你成功!
1、关于自身连接,下面说法正确的有:(ABC)
A、自身连接的表必须取别名
B、自身连接的目标列表达式必须带上表的别名
C、自身连接往往用于查询同一个表中不同属性之间满足某种比较条件的结果
D、自身连接也可以使用相同属性值的比较条件的作为连接条件
2、关于自然连接,下面说法正确的有:(ABC)
A、自然连接可以理解为是主外码值相等且目标列表达式去掉外码保留主码的连接
B、两个表即便没有参照完整性也可以有自然连接
C、自然连接的两个表中必然要有两组相同的属性名及其数据类型和宽度
D、自然连接就是自身连接
3、关于嵌套查询,下面说法正确的有:(ABCD)
A嵌套查询就是查询的条件表达式中含有查询块的查询
B、不相关子查询的执行顺序从层查询开始逐级向上一层查询推进,查询的结果放在上一层查询的条件表达式的常量部分
C、相关子查询一定有WHERE子句,而且都会带有父查询的某个属性作为条件表达式中常量部分的内容
D、某些嵌套子查询也可以用连接查询来实现
4、关于集合查询,下面说法正确的有:(ABCD)
A、集合查询就是把表的查询操作当集合操作理解的查询
B、集合查询要求参与运算的子查询的目标列表达式必须个数相同且能按对应顺序进行比较
C、有些集合查询也可以用嵌套查询或连接查询替代
D、集合查询的查询表目标列表达式为第一个子查询的目标列表达式
5、关于基于派生表的查询,下面说法正确的有:(ABD)
A、派生表就是子查询放到WHERE语句中作为查询对象的查询表
B、派生表在SELECT语句中必须使用别名
C、派生表的目标列表达式必须也使用别名
D、派生表的目标列表达式只有在含有聚集函数、计算表达式等情况下才必须使用别名
第2关:连接查询(含普通连接、自然连接和外连接)
SET NOCOUNT ON
GO
USE JX
GO
----------------------BEGIN-------------------
--*****1、查询选修了‘3’号课程且成绩在70分以上的学生信息*****
select Student.*
from Student,SC
where Student.Sno=SC.Sno and Cno='3' and Grade>70
--*****2、查询选修了‘3’课程的学生姓名,成绩及任课教师姓名*****
select Sname,Grade,Tname
from Student,SC,Teacher
where Student.Sno=SC.Sno and Teacher.Tno=SC.Tno and Cno= '3'
--*****3、列出所有参加了"操作系统"课程考试的学生姓名和成绩*****
select Sname,Grade
from Student,SC,Course
where Student.Sno= SC.Sno AND SC.Cno=Course.Cno and Cname='操作系统'
--*****4、查询已开出课程中选课人数不足4人的课程号及人数信息*****
select Cno 课程号,count(*) 选课人数
from Student,SC
where Student.Sno=SC.Sno
GROUP BY SC.Cno HAVING count(*)<4
--*****5、查询有间接先修课的课程信息,以‘课程名’、‘间接先修课名’作列名*