问题 单项选择题

下列各题基于学生表S和学生选课表SC两个数据库表,它们的结构如下:
S(学号,姓名,性别,年龄),其中学号、姓名和性别为C型字段,年龄为N型字段。
SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。

查询选修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

解析: 选项D中的内查询SELECT学号FROM SCWHERE课程号="C2"的查询结果有可能为多个,而选项D中的外层查询WHERE子句后面的逻辑表达式使用“=”,这样会导致产生错误的结果。

实验题
单项选择题