国家开放大学

有以下3个数据表: 写出下列功能的SQL语句:  ①插入一个新课程记录(课程号:A001;课程名:英语1;学分:5); ②修改学号为“95020”,课程号为“A001”的成绩为85; ③查询所有学生的基本信息,使用中文作为查询结果的各字段的名称; ④统计出各个班级的人数; ⑤查询出学号为“95020”所选修的课程名和成绩,以及姓名。

题目
有以下3个数据表: 写出下列功能的SQL语句:  ①插入一个新课程记录(课程号:A001;课程名:英语1;学分:5); ②修改学号为“95020”,课程号为“A001”的成绩为85; ③查询所有学生的基本信息,使用中文作为查询结果的各字段的名称; ④统计出各个班级的人数; ⑤查询出学号为“95020”所选修的课程名和成绩,以及姓名。
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若有如下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()统计分组后,可以确定每

第2题:

假设某数据库中含有表student(学号、姓名、性别、出生日期、专业)、course(课程号、课程名、学时数、学分)和grade(学号、课程号、成绩)等,需做以下检索:

(1) 从中检索至少有一名女学生的专业和该专业女学生的人数的记录。试列出查询条件。

(2) 从中检索计算机专业学生英语课程的成绩,显示姓名、课程名和成绩,要求成绩由高到低排序显示。试列出查询条件。


正确答案:
(1) SELECT专业,COUNT(性别)AS女生人数
FROM student
WHERE性别="女"
CROUP BY专业HAVING COUNT (性别)>=1;
(2) SELECT[姓名],[课程名],[成绩]
FROM student,course,grade
WHERFA[student].[学号]=[grade].[学号]
AND[course].[课程号]=[grade].[课程号]
AND[course].[课程名]="英语"AND
[student].[专业]="计算机"
ORDER BY[grade].[成绩]DESC

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

在“学生.mdb”数据库中有课程、课程成绩、学生和成绩优秀学生四张表。

(1)以学生和课程成绩表为数据源,创建追加查询“优秀学生”,将成绩>=90的学生所有信息和成绩字段添加到成绩优秀学生表中。

(2)以课程、课程成绩、学生表为数据源,创建分组查询“学分统计”,结果显示学生姓名和已修学分字段,已修学分=Sum([课程].[学分])。查询结果如图所示。


正确答案:

第5题:

已知表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*”:

第6题:

编写程序“cx.prg”,用SQL语句查询“school”数据库中参加了课程编号为“0002”的学生的“学号”“姓名”“课程编号”和“成绩”。 (2)在"schoo1,,数据库中统计每门课程考试的平均成绩,并将结果(课程编号、课程名称、平均成绩)放在表“result”中。


正确答案:
【考点指引】本大题主要考查了SQL语句的查询和统计命令,这里要用到分组命令,注意用INTO TABLE将结果保存到表中。
(1)【操作步骤】
①在命令窗口中输入命令:MODI COMM cx(回车执行),打开程序文件“CX.prg”编辑窗口,在程序文件编辑窗口中输入以下代码:
SELECT student.学号,姓名,course.课程编号,成绩FROM score,course,student WHERE score.课程编号=course.课程编号AND score.学号=student.学号AND course.课程编号=”0002” 关闭程序文件编辑窗口并保存程序文件。
②在命令窗口中输入命令:DO cx(回车执.吁亍),执行程序文件。
(2)【操作步骤】
①在命令窗口中输入命令:
SELECT course.课程编号,课程名称,AVG(成绩)AS平均成绩INTO TABLE resuIt FROM score. course WHERE score.课程编号=course.课程编号GROUP BY course.课程编号,课程名称
②在命令窗13中输入命令:DO cx(回车执行),执行程序文件,结果将自动保存到表"resuIt"中。

第7题:

查询所有选修了“计算机网络”的学生成绩,结果显示该学生的“姓名”、“系名”和“数据库原理”的“成绩”,并按成绩由高到低的顺序排列,下列语句中正确的是 ( )。

A.SELECT学生.姓名,学生.系名,成绩.成绩FROM学生,课程,成绩; FOR学生.学号=成绩.学号; AND课程.课程编号=成绩.课程编号; AND课程.课程名称="计算机网络"; ORDER BY成绩.成绩DESC

B.SELECT 学生.姓名.学生.系名.成绩.成绩JOIN学生,课程,成绩; ON学生.学号=成绩.学号; ON课程.课程编号=成绩.课程编号; AND课程.课程名称="计算机网络"; ORDER BY成绩.成绩DESC

C.SELECT学生.姓名,学生.系名,成绩.成绩 FROM 学生,课程,成绩; WHERE学生.学号=成绩.学号; OR课程.课程编号=成绩.课程编号; OR课程.课程名称="计算机网络"; ORDER BY 成绩.成绩 DESC

D.SELECT 学生.姓名,学生.系名,成绩.成绩FROM学生,课程,成绩; WHERE 学生.学号=成绩.学号; AND 课程.课程编号=成绩.课程编号; AND 课程.课程名称="计算机网络"; ORDER BY成绩.成绩 DESC


正确答案:D
解析:本题是一个多表连接查询的SQL语句,关键要注意表间连接条件的使用,如果使用超连接方式查询,则正确的语句格式为:
SELECT……
FROM数据库表1>INNER JOIN数据库表2>
ON连接条件>
WHERE……
其中,INNER JOIN等价于JOIN,为普通的连接,在Visual FoxPro中称为内部连接;ON连接条件>指定两个进行表连接的条件字段。
如果使用的是普通的连接方式,则只需在FROM短语中指定查询的数据表,各表名之间用逗号隔开,而各表之间的连接放在WHERE短语后面,设计两个连接条件时,用AND短语连接这两个条件。

第8题:

学生表: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

  )

第9题:

现有某高校的选修课记录(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都是无效的,因为空值是一个不确定的值,所以不能用“=”进行比较。

第10题:

为管理岗位业务培训信息,建立3个表:

S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄

C (C#,CN ) C#,CN 分别代表课程编号、课程名称

SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

要求实现如下5个处理:

1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

5. 查询选修了课程的学员人数

6. 查询选修课程超过5门的学员学号和所属单位


正确答案:
 

更多相关问题