数据库系统概论试题及答案 版

9. 检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是 D 。 A.SELECT S# FORM SC

WHERE C#=“C2” AND GRAD>=

(SELECT GRADE FORM SC WHERE C#=“C2”) B.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE IN

(SELECT GRADE FORM SC

C.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE NOT IN (SELECT GRADE FORM SC WHERE C#=“C2”) D.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE>=ALL

(SELECT GRADE FORM SC

WHERE C#=“C2”)

WHERE C#=“C2”)

10. 检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是 C 。 A.SELECT S.SN,SC.C#,SC.GRADE FROM S WHERE S.S#=SC.S#

B.SELECT S.SN,SC.C#,SC.GRADE FROM SC

WHERE S.S#=SC.GRADE

C.SELECT S.SN,SC.C#,SC.GRADE FROM S,SC

WHERE S.S#=SC.S#

D.SELECT S.SN,SC.C#,SC.GRADE FROM

S

SC

11. 检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正

SELECT

D

A.SELECT S#,SUM(GRADE)FROM SC WHERE GRADE>=60 GROUP BY S# ORDER BY 2 DESC

HAVING COUNT(*)>=4

WHERE C#=“C2” AND GRADE>=

(SELECT GRADE FORM SC WHERE C#=“C2”) B.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE IN

(SELECT GRADE FORM SC WHERE C#=“C2”)

C.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE NOT IN (SELECT GRADE FORM SC WHERE C#=“C2”) D.SELECT S# FORM SC

WHERE C#=“C2” AND GRADE>=ALL (SELECT GRADE FORM SC WHERE

C#=

C2

)

二、填空题

1. SQL是 结构化查询语言 。

2. 视图是一个虚表,它是从 一个或几个基本表 中导出的表。在数据库中,只存放视图的 定义 ,

不存放视图的 视图对应的数据 。 3. 设有如下关系表R:

R(No,NAME,SEX,AGE,CLASS) 主关键字是NO

其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。 写出实现下列功能的SQL语句。

①插入一个记录(25,“李明”,“男”,21,“95031”); 。 ②插入“95031”班学号为30、姓名为“郑和”的学生记录; 。 ③将学号为10的学生姓名改为“王华”; 。 ④将所有“95101”班号改为“95091”; 。 ⑤删除学号为20的学生记录; 。 ⑥删除姓“王”的学生记录; 。

答案:

①INSERT INTO R VALUES(25,“李明”,“男”,21,“95031”) ②INSERT INTO R(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”) ③UPDATE R SET NAME=“王华”WHERE NO=10

④UPDATE R SET CLASS=“95091”WHERE CLASS=“95101” ⑤DELETE FROM R WHERE NO=20

⑥DELETE FROMR WHERE NAME LIKE“王%”

三、简答题

1. SQL的特点有哪些?

答:SQL集数据查询、数据操作、数据定义、数据控制功能于一体,主要特点包括:

① 综合统一 ② 高度非过程化 ③ 面向集合的操作方式

④ 以同一种语法结构提供多种使用方式 ⑤ 语言简洁,易学易用

2. 视图的作用有哪些?

答:

① 视图能够简化用户的操作

② 视图使用户以多种角度看待同一数据

③ 视图对重构数据库提供一定程度的逻辑独立性 ④ 视图能对机密数据提供安全保护 ⑤ 适当的利用视图可以更清晰的表达查询

第3章书面作业

1、设学生课程数据库中有三个关系:

学生关系S(S#,SNAME,AGE,SEX) 学习关系SC(S#,C#,GRADE) 课程关系C(C#,CNAME)

其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。

用SQL语句表达下列操作

(1)检索选修课程名称为“MATHS”的学生的学号与姓名 (2)检索至少学习了课程号为“C1”和“C2”的学生的学号

(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄 (4)检索平均成绩超过80分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名 (

6

答案:

(1)SELECT SNAME,AGE FROM S,SC,C WHERE #=# AND #=#

AND CNAME=’ MATHS’ (2) SELECT S# FROM SC

WHERE CNO=’C1’ AND S# IN(

SELECT S# FROM SC

WHERE CNO=’C2’) (3)SELECT S#,SNAME,AGE FROM S WHERE AGE BETWEEN 18 AND 20 (4) SELECT S#,AVG(GRADE) ‘平均成绩’

FROM SC

GROUP BY S# HAVING AVG(GRADE)>80 (5) SELECT SNAME FROM S

WHERE NOT EXISTS

(SELECT * FROM C

WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=#

AND C#=#))

(6) SELECT SNAME FROM S,SC

WHERE #=#

GROUP BY SNAME HAVING COUNT(*)>3

2、设学生-课程数据库中包括三个表:

学生表:Student (Sno,Sname,Sex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredit) 学生选课表:SC(Sno,Cno,Grade)

其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。 试用SQL语言完成下列项操作:

(1)查询选修课程包括“1042”号学生所学的课程的学生学号

(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别; (3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平

(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。答案:

(1) SELECT DISTINCT SNO FROM SC SCX

WHERE NOT EXISTS

(SELECT * FROM SC SCY

WHERE Sdept=’CS’

(3)UPDATE S_CS_VIEW SET SNAME =‘王慧平’ WHERE SNAME =‘王平’ (4) CREATE VIEW datascore_view

AS

SELECT SNO 学号,SNAME 姓名,

GRADE 成绩

SNO,SNAME,SEX

FROM

FROM STUDENT,SC,COURSE WHERE = AND =

AND CNAME=’ 数据库’

WHERE = ' 1042'

AND NOT EXISTS

(SELECT * FROM SC SCZ

WHERE = AND =);

(2) CREATE VIEW S_CS_VIEW

AS SELECT STUDENT

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4