查询选修C2课程号的学生姓名,下列SQL语句中错误是

admin2017-04-26  32

问题 查询选修C2课程号的学生姓名,下列SQL语句中错误是

选项 A、SELECT 姓名 FROM S WHERE EXISTS(SELECT*FROM SC WHERE 学号=S.学号 AND 课程号=’C2’)
B、SELECT 姓名 FROM S WHERE 学号 IN(SELECT 学号 FROM SC WHERE 课程号=’C2’、)
C、SELECT 姓名 FROM S JOIN SC ON S.学号=SC.学号 WHERE 课程号=’C2’
D、SELECT 姓名 FROM S WHERE 学号=(SELECT 学号 FROM SC WHERE 课程号=’C2’)

答案D

解析 选项A)中,使用EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:首先在外查询中,从S表中取出第一条记录,再在内查询中,针对该记录,在SC表中逐条记录判断是否存在符合where条件(即“选修C2课程号的学生”)的记录,如果存在,则从外查询的S表中查找出该记录对应的“姓名”值;然后依次类推,从S表中取出第二条记录,在内查询中与SC表中的所有记录进行比较,直到将S表中的所有记录都处理完毕。选项B)是嵌套查询,先在内查询中从SC表中获得选修了C2课程号的学生的“学号”,再在外查询中从S表中查找出这些“学号”对应学生的“姓名”,由于选修了C2课程号的学生可能不止一个,因此在内查询中获得的“学号”是一个集合,因此应该使用运算符IN。
选项C)是联接查询,将S表和SC表以“学号”字段相等为条件进行联接,查找出选修了C2课程号的学生。
转载请注明原文地址:https://jikaoti.com/ti/cUk0FFFM
0

最新回复(0)