niusouti.com

单选题学生表:S(学号,姓名,性别)和选课成绩表:SC(学号,课程号,成绩),用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(  )。A SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC;WHERE S.学号=SC.学号;GROUP BY S.学号,姓名 HAVING COUNT(*)>=5 ORDER BY 3 DESCB SELECT S.学号,姓名,AVG(成绩) FROM S,SC;WHERE S.学号=SC.学

题目
单选题
学生表:S(学号,姓名,性别)和选课成绩表:SC(学号,课程号,成绩),用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(  )。
A

SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC;
WHERE S.学号=SC.学号;
GROUP BY S.学号,姓名 HAVING COUNT(*)>=5 ORDER BY 3 DESC

B

SELECT S.学号,姓名,AVG(成绩) FROM S,SC;
WHERE S.学号=SC.学号 AND COUNT(*)>=5;
GROUP BY 学号,姓名 ORDER BY 3 DESC

C

SELECT S.学号,姓名,AVG(成绩) 平均成绩 FROM S,SC;
WHERE S.学号=SC.学号 AND COUNT(*)>=5;
GROUP BY S.学号,姓名 ORDER BY 平均成绩 DESC

D

SELECT S.学号,姓名,平均成绩 FROM S,SC;
WHERE S.学号=SC.学号;
GROUP BY S.学号,姓名 HAVING COUNT(*)>=50RDER BY 平均成绩 DESC


相似考题
更多“单选题学生表:S(学号,姓名,性别)和选课成绩表:SC(学号,课程号,成绩),用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(  )。A SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC;WHERE S.学号=SC.学号;GROUP BY S.学号,姓名 HAVING COUNT(*)=5 ORDER BY 3 DESCB SELECT S.学号,姓名,AVG(成绩) FROM S,SC;WHERE S.学号=SC.学号”相关问题
  • 第1题:

    用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是A)SELECT S.学号,姓名,平均成绩FROM S,SC; WHERE S.学号=SC.学号; GROUP BY S.学号HAVING GOUNT(*)>=5 ORDER BY平均成绩DESCB)SELECT学号,姓名,AVG(成绩)FROM S,SC; WHERE S.学号SC.学号AND COUNT(*)>=5; GROUP BY学号ORDER BY 3 DESCC)SELECT S.学号,姓名,AVG(成绩)平均成绩FROM S,SC; WHERE S.学号=SC.学号AND COUNT(*)>=5; GROUP BY S.学号ORDER BY平均成绩DESCD)SELECT S.学号,姓名,AVG(成绩)平均成绩FROM S,SC; WHERE S.学号=SC.学号; GROUP BY S.学号HAVING COUNT(*)=5 ORDER BY 3 DESC


    正确答案:D
    本题考查使用COUNT()函数来构造复杂查询,显示”平均成绩”不是表中字段,不能直接显示,用函数来实现表示方法为:AVG(成绩)平均成绩。因选项A,选项B表示错误可排除;在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组,也就是说先写WHERE子句,然后是GROUP,最后用HAVING子句对GROUP分组限定条件。选项C这两个选项中错误在于COUNT(*)>=5分组限定条件写在WHERE之后。故选项D为正确答案。

  • 第2题:

    使用如下3个数据库表: 学生表:S(学号,姓名,性别,出生日期,院系) 课程表:C(课程号,课程名,学时) 选课成绩表:SC(学号,课程号,成绩) 在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是______。

    A.SELECTS.学号,姓名,平均成绩FROM S,SC; WHERE S.学号=SC.学号; GROUP BY S.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC

    B.SELECT学号,姓名,AVG(成绩)FROMS,SC; WHERE S.学号=SC.学号AND COUNT(*)>=5; GROUP BY学号ORDER BY 3 DESC

    C.SELECTS.学号,姓名,AVG(成绩)平均成绩FROM S,SC; WHERE S.学号;SC.学号AND COUNT(*)>=5; GROUP BY S.学号ORDER BY平均成绩DESC

    D.SELECTS.学号,姓名,AVG(成绩)平均成绩FROMS,SC, WHERE S.学号:SC.学号; GROUP BYS.学号HAVING COUNT(*)7=5 ORDER BY 3 DESC


    正确答案:D
    解析:Visual FoxPro的SELECT—SQL命令的一般语法格式如下:
       SELECT[ALL|DISTINCT]目标列表达式>[,目标列表达式>]…
       FROM基本表(或视图)>[,基本表(或视图)>]…
       [WHERE条件表达式>]
       [GROUPBY列名1>[HAVING内部函数表达式>))
       [ORDERBY列名2>[ASC|DESC]];
    说明:
    ①SELECT子句:ALL表示选出的记录中包括重复记录,这是缺省值;DISTINCT则表示选出的记录中不包括重复记录。
    ②FROM子句及其选项:用于指定查询的表,可以对单个表或多个表进行查询。
    ③WHERE子句:说明查询条件,即筛选元组的条件。
    ④GROUP BY子句:对记录按列名1>值分组,常用于分组统计。
    ⑤HAVING子句:当含有GROUP BY子句时,HAVING子句可用作记录查询的限制条件;无GROUP BY子句时HAVING子句的作用如同WHERE子句。
    ⑥ORDER BY子句:指定查询结果中记录按列名2>排序,默认升序。选项ASC表示升序,DESC表示降序。

  • 第3题:

    设有 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

  • 第4题:

    设有学生表S(学号,姓名,性别,年龄)、课程表 (课程号。课程名,学分)和学生选课表SC(学号,课程号,绩).检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL语句是( )。

    A.SELECT学号,姓名,课程名,成绩FROM S,SC,CWHERE S.学号=SC.学号AND SC.学号=C.学号

    B.SELECT学号,姓名,课程名,成绩 FROM(S JOIN SC ON S.学号=SC.学号)JOIN C0N SC.课程号=C.课程号

    C.SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON S.学号=SC.学号 ON SC.课程号=C.课程号

    D.SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN c ON SC.课程号=C.课程 号ON S.学号=SC.学号


    正确答案:D
    D。【解析】连接查询中JOIN用来连接两个表,而ON是指定两表连接的关键字。

  • 第5题:

    设学生表S、课程表C和学生选课表SC的结构如下:

    S(学号,姓名,年龄,系别)

    C(课程号,课程名)

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

    查询学生姓名及所选修课程的课程号和成绩,实现此功能的SELECT语句是______。

    A.SELECTS.姓名,SC课程号,SC成绩FROM S WHERE S.学号=SC.学号

    B.SELECTS.姓名,SC课程号,SC成绩FROM SC WHERE S.学号=SC.成绩

    C.SELECTS.姓名,SC课程号,SC成绩FROMS,SC WHERE S.学号=SC.学号

    D.SELECTS.姓名,SC课程号,SC成绩FROM S,SC


    正确答案:C

  • 第6题:

    学生表:student(学号,姓名,性别,出生日期,院系)

    课程表:course(课程号,课程名,学时)

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

    其中出生日期的数据类型为日期型,学时和成绩为数值型,其他均为字符型。

    查询“计算机系’’学生的学号、姓名、学生所选课程的课程名和成绩,正确的命令是

    A.SELECT s.学号,姓名,课程名,成绩 FROM studentS,score SC,course C WHERE s.学号=sc.学号,sc.课程号=c.课程号,院系=‘计算机系’

    B.SELECT学号,姓名,课程名,成绩 FROM student S,score SC,course c WHERE s.学号=sc.学号AND sc.课程号=c.课程号AND院系=‘计算机系’

    C.SELECT s.学号,姓名,课程名,成绩 FROM(student s JOIN score sc ON s.学号=sc.学号). JOIN course c ON sc.课程号=c.课程号 WHERE院系=‘计算机系’

    D.SELECT学号,姓名,课程名,成绩 FROM(student s JOIN score sc‘ON s.学号=sc.学号) JOIN course c ON sc.课程号=c.课程号 WHERE院系=‘计算机系’


    正确答案:C

  • 第7题:

    查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是

    A.SELECT s.学号,姓名,平均成绩FROM student s,score sc WHERE s.学号=sc.学号 GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC

    B.SELECT学号,姓名,AVG(成绩)FROM student s,score sc WHERE s.学号=sc.学号AND COUNT(*)>=5 GR0UP BY学号ORDER BY 3 DESC

    C.SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc wHERE s.学号=sc.学号AND COUNT(*)>=5 GROUP BY s.学号ORDER BY平均成绩DESC

    D.SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc WHERE s.学号=sc.学号 GROUP BY s.学号HAVING COUNT(*)>=5ORDER BY 3 DESC


    正确答案:D
    解析:HAVING短语必须跟随GROUP BY使用,它用来限定分组必须满足 的条件,所以本题正确答案为D。

  • 第8题:

    以下2题使用如下三个数据库表学生表: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 NOT EXISTS; (SELECT*FROM SC WHERE SC.学号=S.学号AND成绩>=85)

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

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


    正确答案:A
    解析:EXISTS是谓词,EXISTS或NOTEXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。其本身并没有进行任何运算或比较,只用来返回子查询结果。选项B)和c)返回的结果都是只要有任意一门选修课程成绩大于等于85的学生学号和姓名,而本题要求返回的是所有选修课程大于等于85的学生学号和姓名,选项D)中的ALL短语无实际意义。

  • 第9题:

    设有s(学号,姓名,性别)和sc(学号,课程号,成绩)两个表,下面SQL的SELECT语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别。

    SELECT学号,姓名,性别FROM s WHERE__________(SELECT木FROM sc WHERE sc.学号=s.学号AND成绩<85)


    正确答案:
    NOTEXISTS
    查询操作使用SELECT命令,本题是联接查询和嵌套查询的结合使用,内层查询是将s表和SC表通过学号联接起来,查询的结果是所有至少有一门成绩低于85分信息的集合,外层查询S表中不在内层查询结果中出现的学号、姓名和单位,在WHERE条件短语中要用NOT EXISTS谓词。EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。&

  • 第10题:

    用SQL语句检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是( )。

    A)SELECT S.学号,姓名,平均成绩FROM S,SC;

    WHERE S.学号=SC.学号;

    GROUP BY S.学号HAVING COUNT(﹡)>=5 0RDER BY平均成绩DESC

    B)SELECT学号,姓名,AVG(成绩)FROM S,SC;

    WHERE S.学号=SC.学号AND COUNT(﹡)>=5;

    GROUPBY学号ORDERBY 3 DESC

    C)SELECT S.学号,姓名,AVG(成绩)平均成绩FROM S,SC;

    WHERE S.学号=SC.学号AND COUNT(﹡)>=5;

    GROUP BY S.学号ORDER BY平均成绩DESC

    D)SELECT S.学号,姓名,AVG(成绩)平均成绩FROM S,SC;

    WHERE S.学号=SC.学号;

    GROUP BY S.学号HAVING COUNT(﹡)>=5 0RDER BY 3 DESC


    正确答案:D
    题干中需要显示的“平均成绩”不是表中字段,不能直接显示,用函数来实现表示方法为:AVG(成绩)平均成绩。在查询中先用WHERE子句,然后是GROUP予句,最后用HAVING子句对分组限定条件,故COUNT(*)>=5分组限定条件应该写在HAVING之后。&

  • 第11题:

    单选题
    学生表:S(学号,姓名,性别)和选课成绩表:SC(学号,课程号,成绩),用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(  )。
    A

    SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC;
    WHERE S.学号=SC.学号;
    GROUP BY S.学号,姓名 HAVING COUNT(*)>=5 ORDER BY 3 DESC

    B

    SELECT S.学号,姓名,AVG(成绩) FROM S,SC;
    WHERE S.学号=SC.学号 AND COUNT(*)>=5;
    GROUP BY 学号,姓名 ORDER BY 3 DESC

    C

    SELECT S.学号,姓名,AVG(成绩) 平均成绩 FROM S,SC;
    WHERE S.学号=SC.学号 AND COUNT(*)>=5;
    GROUP BY S.学号,姓名 ORDER BY 平均成绩 DESC

    D

    SELECT S.学号,姓名,平均成绩 FROM S,SC;
    WHERE S.学号=SC.学号;
    GROUP BY S.学号,姓名 HAVING COUNT(*)>=50RDER BY 平均成绩 DESC


    正确答案: A
    解析:
    题目要求查找选修课程在5门以上(含5门)的学生,则应该用HAVING COUNT(*)>=5进行限定。使用HAVING子句可以定义这些组所必须满足的条件以进行限定。GROUP BY将查询结果按指定列分成集合组。AVG可以计算对每个学生分组后的平均成绩,即AVG(成绩)。A项正确,ORDER BY 3 DESC指按查询结果中第三列数据降序排列,即ORDER BY平均成绩DESC。

  • 第12题:

    单选题
    设学生表S(学号,姓名,性别,年龄),课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程名及成绩,正确的SQL命令是(  )。
    A

    SELECT学号,姓名,课程名,成绩FROM S,SC,C
    WHERE S.学号=SC.学号AND SC.学号=C.学号

    B

    SELECT学号,姓名,课程名,成绩
    FROM(S JOIN SC ON S.学号=SC.学号)JOIN C ON SC.课程号=C.课程号

    C

    SELECT S.学号,姓名,课程名,成绩
    FROM S JOIN SC JOIN C ON S.学号=SC.学号ON SC.课程号=C.课程号

    D

    SELECT S.学号,姓名,课程名,成绩
    FROM S JOIN SC JOIN C ON SC.课程号=C.课程号ON S.学号=SC.学号


    正确答案: A
    解析:
    这是一个简单查询语句,用WHERE短语将三个表连接起来。JOIN为超连接查询。

  • 第13题:

    使用如下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分以下的记录。

  • 第14题:

    设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL命令是______。

    A.SELECT 学号,姓名,课程名,成绩 FROM S,SC,C WHERE S.学号=SC.学号 AND SC.学号=C.学号

    B.SELECT 学号,姓名,课程名,成绩 FROM(S JOIN SC ON S.学号=SC.学号) JOIN C ON SC.课程号=C.课程号

    C.SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON S.学号=SC.学号 ON SC.课程号=C.课程号

    D.SELECT S.学号,姓名,课程名,成绩 FROM S JOIN SC JOIN C ON SC.课程号=C.课程号 ON S.学号=SC.学号


    正确答案:D
    解析:此题是一个联接查询,联接查询是一种基于多个关系的查询。在SQL查询语句中建立两表间的连接可使用JOIN关键字连接其左右两个表名>所指的表,JOIN为普通连接,在Visual FoxPro中称为内部连接,即只有满足连接条件的记录才出现在查询结果中。用ON子句指定连接条件:也可以一次性在WHERE子句中指定连接条件和筛选条件。格式如下:
      SELECT 目标列表达式>
      FROM[[表名1>|视图名1>][[INNE]
      JOIN 表名2>|视图名1>]...ON连接条件>]...
      FROM[[数据库名>]owner>{表名>|视图名>}
      [,[[数据库名>.]owner>{表名>|视图名>}...
      [WHERE条件表达式>]
      [GROUP BY列名1>
      [HAVING内部函数表达式>]]
      [ORDER BY列名2> {ASC/DESC}]
    所以A、B选项错误,如果先连接学生表S和学生选课表SC,会造成结果中有不符合要求的多余记录,所以C选项错误。

  • 第15题:

    查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是( )。

    A.SELECT学号,姓名FROM student s WHERE NOT EXISTS (SELECT*FROM score se WHERE SC.学号=s.学号码AND成绩<85)

    B.SELECT学号,姓名FROM student S WHERE NOT EXISTS (SELECT*FROM score sc WHERE SC.学号=s.学号码AND成绩>=85)

    C.SELECT学号,姓名FROM student s,score sc WHERE s.学号=sc.学号AND成绩>=85

    D.SELECT学号,姓名FROM student s,score sc WHERE S.学号=sc.学号AND ALL成绩>=85


    正确答案:B
    B。【解析】由题可得,所查询的成绩是大于等于85分的学生的学号和姓名,其中成绩和学号、姓名不在一个表内,所以要用嵌套查询。而其中的成绩是大于等于85分,所以答案选择B。

  • 第16题:

    现有表:s(学号,姓名,性别,年龄),c(课程号,课程名,学分),SC(学号,课程号,成绩)。检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL命令是( )。

    A. SELECT学号,姓名,课程名,成绩FROM S,SC,C; WHERE S.学号=SC.学号AND SC.课程号=C.课程号

    B. SELECT学号,姓名,课程名,成绩; FROM(S JOIN SC ON S.学号=SC.学号)JOIN C ON SC.课程号=C.课程号

    C. SELECT S.学号,姓名,课程名,成绩; FROM S JOIN SC JOIN C ON S.学号=SC.学号ON SC.课程号=C.课程号

    D. SELECT S.学号,姓名,课程名,成绩; FROM S JOIN SC JOIN C ON SC.课程号=C.课程号0N S.学号=SC.学号


    正确答案:D
    用JOIN连接格式连接多个表时JOIN的顺序和ON的顺序应该是相反的,否则会影响到最终的查询结果。

  • 第17题:

    查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是( )。

    A.SELECT学号,姓名FROM student s WHERE NOT EXISTS (SELECT*FROM score se WHERE SC.学号=s.学号码AND成绩<85) from="" student="" s="" where="" not="" exists="" score="" sc="">=85)

    C.SELECT学号,姓名FROM student s,score sc WHERE s.学号=sc.学号AND成绩>=85

    D.SELECT学号,姓名FROM student s,score sc WHERE S.学号=sc.学号AND ALL成绩>=85


    正确答案:B
    B。【解析】由题可得,所查询的成绩是大于等于85分的学生的学号和姓名,其中成绩和学号、姓名不在一个表内,所以要用嵌套查询。而其中的成绩是大于等于85分,所以答案选择B。

  • 第18题:

    查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是

    A.SELECT学号,姓名FROM student s WHERE NOT EXISTS (SELECT*FROM score sc WHERE sc.学号=s.学号AND成绩<85)

    B.SELECT学号,姓名FROM Student s WHERE NOT EXISTS (SELECT*FROM score sc WHERE sc.学号=s.学号AND成绩>=85)

    C.SELECT学号,姓名FROM student s,score sc WHERE s.学号=sc.学号AND成绩>=85

    D.SELECT学号,姓名FROM student s,score sc WHERE s.学号=sc.学号AND ALL成绩>=85


    正确答案:A

  • 第19题:

    查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是( )。

    A.SELECT S.学号,姓名,平均成绩FROM student s,score sc WHERE S.学号=sc.学号 GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC

    B.SELECT s.学号,姓名,AVG(成绩)FROM student s,score sc WHERE s.学号=SC.学号AND COUNT(*)>=5 GRoUP BY学号0RDER BY 3 DESC

    C.SELECT S.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc WHERE s.学号=SC.学号AND COUNT(*)>=5 GROUP BY s.学号ORDER BY平均成绩DESC

    D.SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc WHERE s.学号=sc.学号 GROUP BY s.学号HAVING COUNT(*)>=5 0RDER BY 3 DESC


    正确答案:D
    D。【解析】由条件可知所要查询的是所选课程数大于等于5的学生的学号、姓名和平均成绩,其ee成绩是在sc表中,所以s.学号=sc.学号,而必须是成绩大于等于5所以COUNT(*)>=5。所以,正确的SQL语句为SELECTs.学号,姓名,AVG(成绩)平均成绩FROMstudents,scorescWHEREs.学号=sc.学号GROUPBYs.学号HAVINGCOUNT(*)>=50RDERBY3DESC,答案为D。

  • 第20题:

    用SQL语言检索选修课程在5门以上(含5门)的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是

    A.SELECT S.学号,姓名,平均成绩FROM S,SC; WHERE S.学号=SC.学号; GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 平均成绩 DESC

    B. SELECT 学号,姓名,AVG(成绩)FROM S,SC; WHERE S.学号=SC.学号AND COUNT(*)>=5; GROUP BY 学号 ORDER BY 3 DESC

    C.SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC; WHERE S.学号=SC.学号AND COUNT(*)>=5; GROUP BY S.学号 ORDER BY平均成绩 DESC

    D.SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,SC; WHERE S.学号;SC,学号; GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 3 DESC


    正确答案:D
    解析:本题中通过分组计算查询语句,查找满足条件的记录,利用HAV- ING子句做进一步的分组限制条件设置。在该SQL语句中首先通过s表和sc表中的学号字段进行联接,利用AVG()函数可求指定字段的平均值,然后通过GROUP BY子句,按S表的学号进行分组,利用HAVING子句限定分组条件为选修课程大于等于5的学生记录,即COUNT(*)>=5,最后利用ORDER BY子句将结果按指定顺序排列。

  • 第21题:

    第 29~30 题使用如下3个数据库表:

    学生表:S(学号,姓名,性别,出生日期,院系)

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

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

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

    第 29 题 用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
    本题属于多表查询,使用联接查询或嵌套查询,选项C)和选项D)使用联接查询,使用时学号字段前要表明所属的表,写法都不完整;选项A)和选项B)中的EXISTS
    属于SQL查询谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组,子查询要用圆括号括起来。选项A)中的子查询查询的是“SC”表中“学号”等于…S表中“学号”并且成绩小于85的数据,然后在外层查询中检索…S表中的“学号”是否存在于子查询的查询结果中,将不存在的“学号”显示其“学号”和“姓名”的信息。 

  • 第22题:

    单选题
    设有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学号,姓名,性别 FROM 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)


    正确答案: A
    解析:
    EXISTS或NOT EXISTS用来检查在子查询中是否有结果返回。查询成绩高于或等于85的条件,在EXISTS下是“成绩>=85”,在NOT EXISTS 下是“成绩<85”。

  • 第23题:

    单选题
    查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是(  )。
    A


    SELECT学号,姓名FROM student s WHERE NOT EXISTS
    SELECT*FROM score sc WHERE sc.学号=s.学号AND成绩<85)

    B


    SELECT学号,姓名FROM student s WHERE NOT EXISTS
    SELECT*FROM score sc WHERE sc.学号=s.学号AND成绩>=85)

    C


    SELECT学号,姓名FROM student s.score sc
    WHERE s.学号=sc.学号AND成绩>=85

    D


    SELECT学号,姓名FROM student s.score sc
    WHERE s.学号=sc.学号AND ALL成绩>=85


    正确答案: D
    解析:
    要查找所修课程成绩都大于等于85分的学生的学号和姓名,意思就是没有一门课程的成绩低于85分。B项表示没有一门课程的成绩高于85分,与题意相悖。C项表示只要有一门课程的成绩低于85就成立,D项中ALL用法错误。

  • 第24题:

    单选题
    查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是(  )。
    A


    SELECT s.学号,姓名,平均成绩FROM student s.score sc
    WHERE s.学号=sc.学号
    GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC

    B


    SELECT学号,姓名,AVG(成绩)FROM student s,score sc
    WHERE s.学号=sc.学号AND COUNT(*)>=5
    GROUP BY学号ORDER BY 3 DESC

    C


    SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score so
    WHERE s.学号=sc.学号AND COUNT(*)>=5
    GROUP BY s.学号ORDER BY平均成绩DESC

    D


    SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc
    WHERE s.学号=sc.学号
    GROUP BY s.学号HAVING COUNT(*)=5 ORDER BY 3 DESC


    正确答案: A
    解析:
    要查询选修课程在5门以上(含5门)的学生信息,必须要找到每个学号在成绩表中的出现次数(换句话说就是记录条数),为此需要根据学号进行分组,分组条件是COUNT(*)>=5,所以D项正确。B项中COUNT(*)>=5使用位置不对,结果造成不是统计每个学号下的记录个数,而是统计符合条件的所有记录个数。