Visual FoxPro数据库程序设计

单选题查询选修课程号为“101”课程得分最高的同学,正确的SQL语句是(  )。A SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号AND课程号=101AND成绩>=ALL(SELECT成绩FROM选课)B SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号AND成绩>=ALL(SELECT成绩FROM选课WHERE课程号=101)C SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号AND成绩>=ANY(SELECT成

题目
单选题
查询选修课程号为“101”课程得分最高的同学,正确的SQL语句是(  )。
A

SELECT学生.学号,姓名FROM学生,选课WHERE学生.学号=选课.学号AND课程号=101AND成绩>=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课程号=101AND成绩>=(SELECT成绩FROM选课WHERE课程号=101)

参考答案和解析
正确答案: A
解析:
ALL表示所有子查询中的所有行都使结果为真时,结果才为真;而ANY表示子查询中有一行能使结果为真,则结果就为真,要求查询选修课程号为“101”的课程得分最高的同学,应用条件短语:成绩>=ALL(SELECT成绩FROM选课WHERE课程号="101")。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

学生表:Student 学生表 (学号,姓名,性别,年龄,组织部门)

Course 课程表 (编号,课程名称)

Sc 选课表 (学号,课程编号,成绩)

表结构如下:

(1).写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名

(2).写一个SQL语句,查询’周星驰’同学选修了的课程名字

(3).写一个SQL语句,查询选修了5门课程的学生学号和姓名


正确答案:

  select sno,sname

  from student

  where sno in (

  select sno

  from sc

  where cno = (

  select cno

  from course

  where cname=计算机原理

  )

  )

  (2)

  select cname

  from course

  where cno in (

  select cno

  from sc

  where sno =

  (

  select sno

  from student

where sname=周星驰

  )

  )

  (3) select sno,sname

  From student

  Where sno in (

  select sno

  from scgroup by sno having count(sno)=5

  )

第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题:

(一)编写SQL语句

以下各小题题基于教学数据库的三个基本表

学生 S(S#,SNAME,AGE,SEX)

学习 SC(S#,C#,GRADE)

课程 C(C#,CNAME,TEACHER)

1. 试用元组表达式和关系代数表达式表示下列查询语句:检索年龄小于23岁的男同学的姓名和学号。

2. 试用SQL的查询语句表达下列查询: 检索"王兰"同学不学的课程的课程号。

3. 试用SQL的查询语句表达下列查询: 检索全部学生都选修的课程的课程号与课程名。

4.试用SQL更新语句表达以下更新操作:把低于总平均成绩的女同学成绩提5%。


答案:

  1. 元组表达式:{t|(?u)(S(u)∧u[3]<23∧u[4]='男'∧t[1]=u[1]∧t[2]=u[2])}

    关系代数表达式:πS#,SNAMEAGE<23SEX='男'(S))

  2. select C# from C where C# not in(select C# from SC where S# in(select S# from S where SNAME='王兰'))

  3. select C#,CNAME from C where not exists(select * from S where not exists(select * from SC where SC.S#=S.S# and SC.C#=C.C#))

  4. update SC set GRADE=GRADE*1.05 where GRADE<(select AVG(GRADE) from SC) and S# in(select S# from S where SEX='女')


第4题:

已知表S(学号,姓名,年龄)

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

C(课程号,课程名,教师名)

试用SQL查询语句表达下列对教学数据库中的三个基本表S、SC、C的查询:

(1)统计有学生选修的课程门数.

(2)求选修C4课程的学生的平均年龄.

(3)求王平老师所授课程的每门课程的学生平均成绩.

(4)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数.

(5)查询姓名以WANG开头的所有学生的姓名和年龄.


正确答案:
(1)SELECT  COUNT(DISTINCT课程号)
      ROM  SC;
(2)SELECT  AVG(年龄)
      FROM  S,SC
      WHERE课程号=“C4”AND S.学号=SC.
      学号;
(3)SELECTSC.课程号,课程名,AVG(成绩)
      FROM  SC,C
      WHERE  SC.课程号=C.课程号AND
      C.教师名=“王平”
       GROUP  BY  SC.课程号;
(4)SELECT课程号,COUNT(学号)
       FROM  SC
      GROUP  BY课程号
       HAVING  COUNT(*)>10;
(5)SELECT 姓名,年龄
        FROM  S
       WHERE 姓名 LIKE“WANG*”:

第5题:

若有如下SQL查询语句: SELECT课程名称,开课系名,COUNT(学号)AS选修人数; FROM成绩,课程; WHERE课程.课程编号=成绩.课程编号; GROUP BY课程名称; HAVING COUNT(*)>3 上述语句所表示的含义是( )。

A.检索开课在3门以上的开课系名、课程名称和选修人数

B.检索选修了3门课程以上的学生记录,显示结果包括课程名称、开课系名和选修人数

C.检索每门课程中,有3人以上选修该课程的记录,显示结果包括课程名称、开课系名和选修人数

D.检索选修人数最多的3门课程的记录,显示结果包括课程名称、开课系名和选修人数


正确答案:C
解析:在分组与计算查询语句中,使用HAVING子句可以对分组进一步加以控制。用这个子句定义这些组所必须满足的条件,以便将其包含在结果中。当WHERE子句、GROUP BY子句和HAVING子句同时出现的时候,首先执行WHERE子句,从表中选择符合条件的行:然后由GROUP BY子句对选取的行进行分组;再执行计算函数;最后执行HAVING子句选取满足条件的分组。本题中,WHERE子句中指定的是两表连接的条件:接着通过GROUP BY子句指明按“课程名称”对记录分组;然后执行函数COUNT()统计分组后,可以确定每

第6题:

设有关系SC(SNO,CNO,GRADE),其中SNO、CNO分别表示学号和课程号(两者均为字符型),GRADE表示成绩(数值型)。若要把学号为“S101”的同学,选修课程号为:“C11”,成绩为98分的记录插入到表SC中,正确的语句是______。

A.INSERT INTO SC(SNO,CNO,GRADE) VALUES('S101','C11','98')

B.INSERT INTO SC(SNO,CNO,GRADE) VALUES(S101,C11,98)

C.INSERT ('S101','C11','98') INTO SC

D.INSERT INTO SC VALUES ('S101','C11',98)


正确答案:D
解析:INSERT—SQL命令格式:INSERT INTO 表名[(字段名1[,字段名2,...])] VALUES(表达式1[,表达式 2,...])。

第7题:

在“查询选修课程号为4,且成绩在80分以上的所有学生的学号”的SQL语句中,将使用的表是( )。

A)学生信息表s

B)学生信息表s和课程信息表c,

C)学生信息表s、课程信息表c和学生选课信息表sc

D)学生选课信息表sc


正确答案:D
在学生选课信息表SC中,包括了本题所要涉及到的查询字段,因此,只要使用sc表就可以完成本题的查询。

第8题:

设有关系模式:成绩(学号,课程号,分数),则下列选项中,能正确描述SQL语句 “SELECT’学号FROM成绩GROUP BY 学号HAVING COUNT(*)>3”功能的是

A.查询选修了3门以上课程的学生的学号

B.查询1门课程有3个以上学生选修的学生学号

C.将学生按照学号分成了3组

D.将学生按照课程分成了3组


正确答案:A
解析:GROUP子句将结果按指定列名分组,每个组产生结果表中的一个元组。通常在每组中使用集函数,分组的附加条件用HAVING短语给出,只有满足内部函数表达式的组才能被输出。本题中即按照学号进行分组。

第9题:

利用SQL语句统计选修了“日语”课程的学生人数。请将下列的语句补充完整。SELECT______FROM 选课表 WHERE课程名="日语"


正确答案:COUNT(*)
COUNT(*) 解析:SQL不仅有一般的检索功能,而且还有计算方式的检索,用于计算检索的函数见下表。

第10题:

假定学号的第3、4位为专业代码,要计算各专业学生选修课程号为“1O1”课程的平均成绩,正确的SQL语句是( )。

A.SELECT专业AS SUBS(学号,3,2),平均分AS AVG(成绩)FROM选课 WHERE课程号=”101”GROUP BY专业

B.SELECT SUBS(学号,3,2)AS专业,AVG(成绩)AS 平均分FROM选课 WHERE课程号=”101”GROUP BY 1

C.SELECT SUBS(学号,3,2)AS专业,AVG(成绩)AS 平均分FROM选课 WHERE课程号=”101”ORDER BY专业

D.SELECT专业AS SUBS(学号,3,2),平均分AS AVG(成绩)FROM选课 WHERE课程号=”101”ORDER BY 1


正确答案:B
先用SQLSELECT中的GROUPBY把不同专业的学生进行分组,然后再利用AVG函数计算平均分。

更多相关问题