查询学生选修课程成绩小于60分的学号,正确的SQL语句是 ______。 查询选修C2课程号的学生姓名,下列SQL语句中错误的是 ______。

admin2010-01-24  17

问题 查询学生选修课程成绩小于60分的学号,正确的SQL语句是 ______。
查询选修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

解析 要求查询选修C2课程号的学生的姓名,姓名字段在S表中,而课程号在SC表中,可知查询的结果来自一张表,而条件来自另一张表,所以这里可以用简单的连接查询或者用嵌套查询。
   选项A使用谓语EXISTS进行查询,EXISTS或NOT EXISTS是用来检查在子查洵中是否有结果返回(即存在元组或不存在元组)。选项A先查询出SC表中选修了C2课程的所有信息,并指定SC表和S表通过学号公共字段建立联系,接着查询出姓名字段所对应的值,这种查询是可以达到目的的。
   选项B是一个嵌套查询,首先在SC表中查出选修了C2课程的学生的学号,接着找出这些学号在S表中所对应的学生的姓名,从而查询出选修了C2课程的学生的姓名。
   选项C是一个连接查询,SC表和S表首先通过学号字段建立连接,再找出选修了C2课程的学生的姓名。
   选项D中先找出选修了C2课程的学生的学号,因为选修C2课程的学生可能不止一个,因此不能直接用“=”号,而应该用“IN",IN相当于集合运算符∈,所以选项D是错误的。
转载请注明原文地址:https://kaotiyun.com/show/Iu7Z777K
0

最新回复(0)