查询选修 C2 课程号的学生姓名,下列 SQL 语句中错误是A)SELECT 姓名 FROM S WHERE EXISTS (

题目

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

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

使用如下3个数据库表: 学生表:S(学号,姓名,性别,出生日期,院系) 课程表:C(课程号,课程名,学时) 选课成绩表:SC(学号,课程号,成绩) 在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是______。

A.SELECT学号,姓名FROM S WHERE NOT EXISTS; (SELECT*FROM SC WHERE SC.学号=S.学号AND成绩<85)

B.SELECT学号,姓名FROM S WHERE NO TEXISTS; (SELECT*FROM SC WHERE SC.学号=S.学号AND成绩>=85)

C.SELECT学号,姓名FROMS,SC; WHERE S.学号=SC.学号AND成绩>=85

D.SELECT学号,姓名FROMS,SC; WHERE S.学号=SC.学号AND ALL成绩>=85


正确答案:A
解析:本题建立的是SELECT—SQL命令的嵌套查询语句s在这个命令中要用到两个SELECT—FROM— WHERE查询块,即内层查询块和外层查询块,通过查询块检索选修的每门课程的成绩都高于或等于85分的记录,即选修的每门课程的成绩中都不存在85分以下的记录。

第2题:

查询选修课程号为“101”课程得分最高的同学,正确的SQL语句是 ______。

A.SELECT 学生.学号,姓名FROM 学生,选课WHERE 学生.学号=选课.学号 AND 课程号=“101” AND 成绩>=ALL (SELECT 成绩 FROM 选课)

B.SELECT 学生.学号,姓名FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=ALL(SELECT 成绩 FROM 选课 WHERE 课程号=“101”)

C.SELECT 学生. 学号,姓名 FROM 学生,选课 WHERE 学生. 学号=选课.学号 AND 成绩>=ANY (SELECT 成绩 FROM 选课 WHERE 选课号=“101”)

D.SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号=“101”AND 成绩>= ALL(SELECT 成绩 FROM 选课 WHERE课程号=“101”)


正确答案:D
解析:选项A中的子查询并没有限定选择“课程号”为“101”,则此命令选择出来的结果是“101”课程得分大于等于所有科目成绩的记录,如果其余课目的成绩有记录大于“101”科目的最高成绩,则此查询无结果,此选择错误。
选项B中的查询并没有限定选择“课程号”为“101”,则此命令选择出来的结果是所有课程得分大于等于所有“101”科目成绩的记录,如果其余课目的成绩有记录大于“101”科目的最高成绩,则此查询将查询出错误结果,此选项错误。
选项C中的查陶并没有限定选择“课程号”为“101”,则此命令选择出来的结果是所有课程得分大于等于任意“101”科目成绩的记录,此查询将查询出错误的结果,此选项错误。

第3题:

第(34)~(35)题使用如下3个数据库表: 学生表:S(学号,姓名,性别,出生日期,院系)

课程表:C(课程号,课程名,学时)

选课成绩表:SC(学号,课程号,成绩)

在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。

第34题:用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是( )。

A.SELECT 学号,姓名 FROM S WHERE NOT EXISTS;

(SELECT * FROM SC WHERE SC.学号=S.学号 AND 成绩<85)

B.SELECT 学号,姓名 FROM S WHERE NOT EXISTS;

(SELECT * FROM SC WHERE SC.学号=S.学号 AND 成绩>=85)

C.SELECT 学号,姓名 FROM S,SC;

WHERE S.学号=SC.学号 AND 成绩>=85

D.SELECT 学号,姓名 FROM S,SC;

WHERE S.学号=SC.学号 AND ALL 成绩>=85


正确答案:A

第4题:

现有某高校的选修课记录(SC):学号、姓名、课程名称、成绩,要查询没有选修课成绩的学生和课程,正确的SQL语句是( )。

A. SELECT学号,课程号FROM sc WHERE成绩=””

B. SELECT学号,课程号FROM sc WHERE成绩=NULL

C. SELECT学号,课程号FROM SC WHERE成绩IS NULL

D. SELECT学号,课程号FROM SC WHERE成绩


正确答案:C
利用空值查询,查询空值时要使用“Is NULL”,而=“”、=NULL都是无效的,因为空值是一个不确定的值,所以不能用“=”进行比较。

第5题:

查询选修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学号FRM SC WHERE课程号=’C2’)


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

第6题:

设有 S ( 学号,姓名,性别 ) 和 SC ( 学号,课程号,成绩 ) 两个表,如下 SQL 语句检索选修的每门课程的成绩都高于或等于 85 分的学生的学号、姓名和性别,正确的是

A)SELECT 学号 , 姓名 , 性别 FROM s WHERE EXISTS

(SELECT * FROM sc WHERE SC. 学号 = S . 学号 AND 成绩 <=85)

B)SELECT 学号 , 姓名 , 性别 FROM s WHERE NOT EXISTS

(SELECT * FROM sc WHERE SC. 学号 = S . 学号 AND 成绩 <=85)

C)SELECT 学号 , 姓名 , 性别 FRO M s WHERE EXISTS

(SELECT * FROM sc WHERE SC. 学号 =S. 学号 AND 成绩 >85)

D)SELECT 学号 , 姓名 , 性别 FROM s WHERE NOT EXISTS

(SELECT * FROM sc WHERE SC. 学号 =S. 学号 AND 成绩 <85)


正确答案:D

第7题:

查询选修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是错误的。

第8题:

●已知基本表:学生(学号,姓名,性别,年龄,系名)

选课(学号,课程号,成绩)

要检索所有比"王华"年龄大的学生姓名、年龄和性别,正确的语句是 (25) ,要检索学生姓名及其所选修课程的课程号和成绩,正确的语句是 (26) 。

(25) A.SELECT姓名,年龄,性别

FROM学生

WHERE AGE>(SELECT 年龄

FROM 学生

WHERE 姓名 ="王华")

B.SELECT姓名,年龄,性别

FROM学生

WHERE姓名="王华"

C.SELECT姓名,年龄,性别

FROM学生

WHERE AGE>(SELECT年龄

WHERE姓名="王华")

D.SELECT姓名,年龄,性别

FROM学生

WHERE AGE>"王华"

(26) A.SELECT 学生.姓名,选课.课程号,选课.成绩

FROM学生

WHERE学生 学号=课程.学号

B.SELECT学生.姓名,选课.课程号,选课.成绩

FROM选课

WHERE学生.学号=课程.学号

C.SELECT学生.姓名,选课.课程号,选课.成绩

FROM学生,选课

WHERE学生.学号=课程.学号

D.SELECT学生.姓名,选课.课程号,选课.成绩

FROM学生.学号


正确答案:A,C
【解析】分句WHERE AGE>(SELECT 年龄 FROM 学生 WHERE 姓名 ="王华")限定了结果记录年龄比王华大。B、C、D项该分句均不正确。26题考查了连接操作,A、B的FROM字段错误。D项缺少连接字段。

第9题:

查询选修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。【解析】选项D中的内查询SELECT学号FRMSCwHERE课程号=”C2”的查询结果有可能为多个,而选项D中的外层查询WHERE子句后面的逻辑表达式使用“=”,这样会导致产生错误的结果。

第10题:

学生(学号(C,8),姓名(C,6),性别(C,2),出生日期(D))选课(学号(C,8),课程号(C,3),成绩(N,5,1)) 查询选修课程号为“007”课程得分最高的学生,正确的SQL语句是( )。

A. SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号 AND课程号=”007”AND成绩 >=ALL(SELECT成绩FROM选课)

B. SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号 AND成绩 >=ALL(SELECT成绩FROM选课WHERE课程号=”007”)

C. SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号 AND成绩 >=ANY(SELECT成绩FROM选课WHERE课程号=”007”)

D. SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号AND 课程号=”007”AND成绩>=ALL(SELECT成绩FROM选课WHERE课程号=”007”)


正确答案:D
所有选项都是通过嵌套查询来实现题目的要求,因此来看关键字:ALL要求子查询中的所有行结果为真,结果才为真;ANY只要子查询中有一行能使结果为真,则结果就为真。最高分应该为成绩>=ALL(…),要查询选课号为“007”的同学,所以内外查询中都要用到条件:课程号=”007”。

更多相关问题