设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL命令是______。
A.SELECT 学号,姓名,课程名,成绩 FROM S,SC,C WHERE 学号=S学号 AND S学号=学号
B.SELECT 学号,姓名,课程名,成绩 FROM(S JOIN SC ON 学号=S学号) JOIN C ON S课程号=课程号
C.SELECT 学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON 学号=S学号 ON S课程号=课程号
D.SELECT 学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON S课程号=课程号 ON 学号=S学号
参考答案:D
解析:[知识点] SQL的数据查询功能:联接查询[评析] 此题是一个联接查询,联接查询是一种基于多个关系的查询。在SQL查询语句中建立两表间的连接可使用JOIN关键字连接其左右两个<表名>所指的表,JOIN为普通连接,在Visual FoxPro中称为内部连接,即只有满足连接条件的记录才出现在查询结果中。用ON子句指定连接条件:也可以一次性在WHERE子句中指定连接条件和筛选条件。格式如下: SELECT <目标列表达式> FROM[[<表名1>|<视图名1>][[INNE] JOIN <表名2>|<视图名1>]...ON<连接条件>]... FROM[[<数据库名>]<owner>{<表名>|<视图名>} [,[[<数据库名>.]<owner>{<表名>|<视图名>}... [WHERE<条件表达式>] [GROUP BY<列名1> [HAVING<内部函数表达式>]] [ORDER BY<列名2> {ASC/DESC}]所以A、B选项错误,如果先连接学生表S和学生选课表SC,会造成结果中有不符合要求的多余记录,所以C选项错误。