基于学生表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
解析:A、B、C均可。D中,由于是判断学号是否是后面集合的子集,而不是和一个具体的数值做比较。所以应该像B选项一样用IN,而不是=。