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

admin2017-06-19  38

问题 查询选修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/a5X0FFFM
0

最新回复(0)