多选题 以下是课程(CLASS)表和教师(INSTRUCTOR)表中的数据:
CLASS
CLASS_ID CLASS_NAME HOURS_CREDIT INSTRUCTOR_ID
1 Introduction to Accounting 3 4
2 Computer Basics 3 1
3 Tax Accounting Principles 3 4
4 American History 3 2
5 Basic Engineering 3
INSTRUCTOR
INSTRUCTOR_ID
LAST_NAME
FIRST_NAME
1
Chao
Ling
2
Vanderbilt
Herbert
3
Wigley
Martha
4
Page
Albert
要生成一个包括每个教师所教课程的报表,该报表必须包括所有的教师,即使那些目前没有任课的教师也要包括在报表中。请问,应使用以下查询语句中的哪两个?
【正确答案】 C、D
【答案解析】[解析] 这一题看上去比较复杂,该题测试对外连接的熟悉程度。首先,仔细阅读本题的要求——该报表必须包括所有的教师,即使那些目前没有任课的教师也要包括在报表中,从这一要求可知所需要的连接只能是外连接,所以选项A可以排除,因为它是笛卡尔乘积。
根据有关外连接的介绍,可知外连接的连接运算符为“(+)”而且该运算符一定要放在缺少相应信息的那一边,所以选项C肯定是正确的而选项E是错误的,因为class(别名为c)中可能缺少某些教师的信息(即这些教师没有任课)。根据有关左外连接的介绍,我们可以确定选项D也是正确的。
选项B的左外连接SQL语句将列出所有的课程,其中也包括了那些没有教师任课的课程,所以选项B肯定是错误的。
根据有关使用ON子句连接的介绍,可知NATURAL JOIN子句和ON子句是互斥的,所以选项F可以排除。