设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL命令是( )。
A) SELECT 学号,姓名,课程名,成绩 FROM S,SC,C;
WHERE S.学号=SC.学号 AND SC.学号=C.学号
B) SELECT 学号,姓名,课程名,成绩;
FROM(S JOIN SC ON S.学号=SC.学号) JOIN C ON SC.课程号=C.课程号
C) SELECT S 学号,姓名,课程名,成绩;
FROM S JOIN SC JOIN C ON S.学号=SC.学号 ON SC.课程号=C.课程号
D) SELECT S.学号,姓名,课程名,成绩;
FROM S JOIN SC JOIN C ON SC.课程号=C.课程号 ON S.学号=SC.学号
参考答案:D
解析: 此题考查SQL语句进行多表查询的操作知识。
在进行多表联合查询时,如果SELECT列表中的字段名在多个表中都有,则必须要在列表中指定所引用字段的来源,选项A)及选项B)均未指定“学号”字段的来源表,所以错误。
选项C)有一定的迷惑性,由于JOIN ON后面紧跟联接的条件,所以“FROM S JOIN SC JOIN C”应当理解为“SC表与C表联接后,再与S表联接”,所以第一个ON后面应当紧跟SC与S表联接条件,而第二个ON后面才是SC表与S表的联接条件。所以选项D)正确。