数据库期末考试试卷答案
五年级上册语文期末试卷-安全教育材料
上机实验Ⅳ~Ⅵ CODE
1.分别查询学生表和学生修课表中的全部数据。
SELECT * FROM
student
SELECT * FROM sc
2.查询计算机系的学生的姓名、年龄。
SELECT 姓名,年龄 FROM
student WHERE 所在系='计算机系'
3.查询选修了c01号课程的学生的学号和成绩。
SELECT 学号,成绩 FROM
sc WHERE 课程号='c01'
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
SELECT
学号,课程号,成绩 FROM sc WHERE 成绩 BETWEEN 70 AND 80
5.查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
SELECT
姓名,年龄 FROM student WHERE 年龄 BETWEEN 18 AND 20 AND
性别='男' AND 所在系='计算机
系'
6.查询0412101号学生的修课情况。
SELECT * FROM sc WHERE 学号='0412101'
7.查询c01号课程成绩最高的分数。
SELECT MAX(成绩) as 最高分
FROM sc WHERE 课程号='c01'
8.查询学生都选修了哪些课程,要求列出课程号。
SELECT DISTINCT 课程
FROM sc
9.查询Northwind数据库中orders表的OrderlD、Custo
merID和OrderDate,并将最新 的定购日期
(OrderDate)列在前边。
USE Northwind
SELECT
orderdate,orderid,customerid FROM orders ORDER BY
orderdate DESC
10.查询Northwind数据库中orders表的ShipC
ountry列以B,C,D,F开始且第三个字符为“a”的OrderlD、
CustomerID
和ShipCountry的信息。
--select
OrderID,CustomerID,ShipCountry from orders where
ShipCountry like '[BCDF]_a%'
SELECT
orderid,customerid,shipcountry FROM orders
WHERE shipcountry LIKE 'B_a%' OR shipcountry
LIKE 'C_a%' OR shipcountry LIKE 'D_a%' OR
shipcountry LIKE 'F_a%'
11.查询Northwind数据库中
orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是
“a”
的OrderlD、CustomerlD和ShipCountry的信息。
SELECT
orderid,customerid,shipcountry FROM orders
WHERE shipcountry LIKE '[^ABCDEF]%a'
12.查询学生数据库中学生的最大年龄和最小年龄。
SELECT MAX(年龄)
最大年龄,MIN(年龄) 最小年龄 FROM student
13.查询修了c02号课程的所有学生的平均成绩、最高成绩和最低成绩。
SELECT
AVG(成绩) 平均成绩,MAX(成绩) 最高成绩,MIN(成绩) 最低成绩 FROM sc
WHERE 课程号='c02'
14.统计每个系的学生人数。
SELECT
所在系,COUNT(学号) 学生人数 FROM student GROUP BY 所在系
15.统计每门课程的修课人数和最高分
SELECT 课程号,COUNT(学号)
修课人数,MAX(成绩) 最高分 FROM sc GROUP BY 课程号
16.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
命题教师
熊曾刚 教研室主任 院系负责人
【第1页 共4页】
SELECT 学号,COUNT(课程号)
选课门数 FROM sc GROUP BY 学号
ORDER BY COUNT(课程号)
ASC
17. 查询哪些课程尚未考试。
SELECT 课程号 尚未考试的课程
FROM sc GROUP BY 课程号 HAVING COUNT(成绩)=0
18.列出计算机系年龄最大者及次大者的姓名。
SELECT TOP 2 姓名
FROM student WHERE 所在系='计算机系'
ORDER BY 年龄 DESC
19.统计各系的修课的学生总数和考试的平均成绩。
SELECT 所在系,
COUNT(DISTINCT sc.学号) 学生总数,AVG(成绩) 平均成绩
FROM
student,sc WHERE student.学号=sc.学号
GROUP BY
所在系
20.查询选课门数超过2门的学生的平均成绩和选课门数。
SELECT
学号,AVG(成绩) 平均成绩,COUNT(课程号) 选课门数
FROM sc
GROUP BY 学号 HAVING COUNT(课程号)>2
21.列出总成绩超过200分的学生,要求列出学号、总成绩。
SELECT
学号,SUM(成绩) 总成绩 FROM sc GROUP BY 学号
HAVING
SUM(成绩)>200
22·查询pubs数据库的titles表中每类图书的平均价格超过12
.O元的书的类型(Type)、
平均价格和最高价格,要求只计算有确定价格的图书的情况。
USE pubs
SELECT type,AVG(price)
平均价格,MAX(price) 最高价格
FROM titles GROUP BY type
HAVING AVG(price)>12.0
23·查询pubs数据库的titles表中版税(royalty)为10的每类书的平均价格。
SELECT type,AVG(price) 平均价格 FROM titles
WHERE royalty=10 GROUP BY type
24·查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。
SELECT type,SUM(price) 总价格 FROM titles
GROUP BY type HAVING COUNT(type)>3
25.查询选修了c02号课程的学生的姓名和所在系。
SELECT 姓名,所在系
FROM student,sc
WHERE student.学号=sc.学号 AND
sc.课程号='c02'
26·查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
SELECT 姓名,课程号,成绩 FROM student,sc
WHERE
student.学号=sc.学号 AND sc.成绩>80 ORDER BY sc.成绩 DESC
27.查询计算机系男生修了“数据库基础”的学生的姓名、性别、成绩。
SELECT
姓名,性别,成绩 FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号 AND
所在系='计算机系' AND 性别='男'
AND 课程名='数据库基础'
28·查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学
生的学号、姓名、修课号、修课成绩。
SELECT student.学号,姓名,课程号
修课号,成绩 修课成绩
FROM student left join sc on
(student.学号=sc.学号)
29.列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。
SELECT TOP 3 student.学号,姓名,所在系,成绩 考试成绩 FROM
student,sc,course
WHERE student.学号=sc.学号 AND
sc.课程号=course.课程号 AND 课程名='数据库基础'
ORDER BY
sc.成绩 DESC
30.查询哪些学生合选了一门课程,要求列出合选课程的学生的学号和课程号。
【第2页
共4页】
SELECT DISTINCT S1.学号, S1.课程号
FROM sc S1,sc S2
WHERE S1.课程号=S2.课程号 ORDER
BY S1.课程号
31.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
SELECT DISTINCT S1.姓名,S1.年龄 FROM student S1,
student S2
WHERE S1.年龄=S2.年龄 ORDER BY S1.年龄
32.查询哪些课程没有人选,要求列出课程号和课程名。
SELECT
course.课程号,course.课程名 FROM sc,course
WHERE
course.课程号=course.课程号 AND course.课程号 NOT IN
(SELECT 课程号 FROM sc)
33.
查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张
新的永久表(假设新表名为new sc)中,新表的列名分别为:Student_Name,Course_
Name,Grade。
SELECT 姓名 Student_Name,课程名
Course_Name,成绩 Grade INTO new_sc
FROM
student,sc,course
WHERE student.学号=sc.学号 AND
sc.课程号=course.课程号 AND sc.成绩 IS NOT NULL
34.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两
个查询结果合并成一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显
示各列。
SELECT student.所在系
系名,student.姓名,student.性别,course.课程名 修课名称,sc.成绩
修课成绩
FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号 AND
student.所在系='计算机系'
UNION
SELECT
student.所在系 系名,student.姓名,student.性别,course.课程名
修课名称,sc.成绩 修课成绩
FROM student,sc,course
WHERE student.学号=sc.学号 AND sc.课程号=course.课程号
AND student.所在系='信息系'
35.用子查询实现如下查询: .
(1)查询选修了c01号课程的学生的姓名和所在系。
SELECT 姓名,所在系
FROM student
WHERE 学号 IN (SELECT 学号 FROM sc
WHERE 课程号='c01')
(2)查询数学系成绩80分以上的学生的学号、姓名。
SELECT 学号,姓名 FROM student
WHERE 学号 IN
(SELECT DISTINCT 学号 FROM sc WHERE 成绩>80) AND
所在系='数学系'
(3)查询计算机系学生所选的课程名。
SELECT
课程名 FROM course
WHERE 课程号 IN (SELECT 课程号 FROM
sc WHERE 学号 IN(SELECT 学号 FROM student WHERE
所在系
='计算机系'))
(4)查询课程考试成绩前三名的学生的学号、姓名、所在系。
SELECT 学号,姓名,所在系 FROM student
WHERE 学号 IN
(SELECT TOP 3 学号 FROM sc WHERE 课程号 IN (SELECT 课程号
FROM course WHERE 课
程名='VB') ORDER BY 成绩 DESC )
36.创建一个新表teSt_t,其结构为:(COLl,COL 2,COL 3),其中:
COLl:整型,允许空值,
COL2:字符型,长度为10,不允许空值,
C.OL3:字符型,长度为10,允许空值,
试写出按行插入如下数据的语句(空白处表示不提供值),并观察插入后表中的记
录值。
序号 COLl COL2 COL3
【第3页
共4页】
(1)
、
(2)
(3)
(4)
(
1
2
B1
BZ
B3
B4
C2
C4
●
CREATE TABLE test_t
COL1 INT,COL2 CHAR(10)
NOT NULL,COL3 CHAR(10)
)
INSERT
INTO
test_t VALUES(NULL,'b1',NULL)
INSERT
INTO
test_t VALUES('1','b2','c2')
INSERT
INTO
test_t VALUES('2','b3',NULL)
INSERT
INTO
test_t VALUES(NULL,'b4','c4')
37.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:
(1)在插入数据过程中建表。
SELECT sc.学号,sc.课程号,sc.成绩 INTO
new_Tab1 FROM sc,student
WHERE
sc.学号=student.学号 AND student.所在系='计算机系' AND
sc.成绩>80
(2)先建一个新表,然后再插入数据。
CREATE TABLE
new_Tab2
(学号 CHAR(10),课程号 CHAR(10),成绩
SMALLINT)
INSERT INTO new_Tab2
SELECT
sc.学号,sc.课程号,sc.成绩 FROM sc,student
WHERE
sc.学号=student.学号 AND student.所在系='计算机系' AND
sc.成绩>80
38.删除修课成绩小于50分的学生的修课记录
DELETE
FROM sc WHERE 成绩<50
39.删除信息系修课成绩小于50、分的学生的修课记录,分别用子查询和连接查询实现。
--_(1)子查询
DELETE FROM sc WHERE 成绩<50 AND
学号 IN (SELECT 学号 FROM student WHERE 所在系='信息系')
--_(2)连接查询
DELETE FROM sc FROM
sc,student
WHERE sc.学号=student.学号 AND 成绩<50
AND student.所在系='信息系'
40.将所有选修了课程的学生的成绩加10分。
UPDATE sc SET 成绩=成绩+10
WHERE 课程号='c01'
41.将计算机系所有选修了“计算机应用”课程的学生的成绩加10分,分别用子查询和
连接查询实现。
--_(1)子查询
UPDATE sc SET
成绩=成绩+10
WHERE 学号 IN (SELECT 学号 FROM student
WHERE 所在系='计算机系')
【第4页 共4页】
AND
课程号 IN (SELECT 课程号 FROM course WHERE 课程名='计算机应用')
--_(2)连接查询
UPDATE sc SET
成绩=成绩+10 FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号 AND
student.所在系='计算机系' AND
course.课程名='计算机应用'
42.创建信息系选修了“数据库基础”课程的学生视图stv1。
CREATE VIEW
stv1 AS
SELECT student.学号,sc.课程号,sc.成绩 FROM
student,sc,course
WHERE student.学号=sc.学号 AND
sc.课程号=course.课程号 AND student.所在系='信息系' AND
course.
课程名='数据库基础'
43.创建计算机系的学生视图stv2.
CREATE VIEW stv2 AS SELECT 学号,姓名,性别,年龄 FROM
student
WHERE 所在系='计算机系'
44.查询信息系选修“数据库基础”课程且成绩在80分以上的学生姓名。
SELECT
姓名 FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号 AND
所在系='信息系' AND 课程名='数据
库基础' AND 成绩>80
45.删除视图stv1。
DROP VIEW stv1
46.利用视图stv2,将计算机系的学生年龄加1.
UPDATE stv2 SET
年龄=年龄+1
--附加
--47
SELECT 姓名
FROM student
WHERE NOT EXISTS
(
)
--48
SELECT 课程名,课程号
FROM course
WHERE NOT EXISTS
【第5页 共4页】
SELECT *
FROM course
WHERE NOT EXISTS
(
SELECT *
FROM sc
WHERE 学号=student.学号
AND 课程号=course.课程号
)
(
)
--49
SELECT
姓名
FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号
AND
课程名='VB' AND student.学号 IN (
SELECT student.学号
FROM
student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号
AND 课程名='数据库基础'
)
--50
SELECT 姓名
FROM student,sc,course
WHERE
student.学号=sc.学号 AND sc.课程号=course.课程号
AND
课程名='VB' AND student.学号 NOT IN (
select student.学号
from
student,sc,course
where
student.学号=sc.学号 AND sc.课程号=course.课程号
AND 课程名='数据库基础'
)
题号
得分
一
二
三
四
总分
阅卷人
SELECT *
FROM student
WHERE NOT EXISTS
(
SELECT *
FROM sc
WHERE 学号=student.学号
AND
课程号=course.课程号
)
得分
一、 单项选择题( 每小题2分,共30分)
1. 关系范式从低到高依此是( D )
A.
4NF BCNF 3NF 2NF 1NF B. BCNF 4NF 3NF 2NF 1NF
C. 1NF 2NF 3NF 4NF BCNF D. 1NF 2NF 3NF BCNF
4NF
2. 数据库模型提供了两级映象, 它们的作用是( D )
【第6页
共4页】
A. 控制数据的冗余度 B. 实现数据的共享
C.
使数据结构化 D. 实现数据的独立性
3. 下列SQL
Server语句中出现语法错误的是( D )。
A. CREATE TABLE
Student B. SELECT * FROM Student
C.
CREATE DATABASE XSGL D. DELETE * FROM Student
4. SQL中的视图机制属于DBS的( B )。
A.完整性措施
B.安全性措施 C.恢复措施 D.并发性措施
5.
关系代数运算是以( C )为基础的运算。
A. 关系运算 B.
谓词演算 C. 集合运算 D. 代数运算
6.
关系数据库系统中所使用的数据结构是( D )
A. 树 B.图
C. 表格 D. 二维表
7. 设有关系R和S,关系代数表达式R-(R-S)表示的是(
A )
A. R∩S B. R-S C. R∪S
D. R÷S
8. 在关系模型中,一个关键字( C )
A.
可由多个关系任意属性组成 B. 至多由一个属性组成
C. 可由一个或多个能唯一识别关系模式中任何元组的属性组成 D. 以上都不对
9. 要查询XS表中姓“王”且单名的学生情况,可用( A )命令
A.
SELECT * FROM XS WHERE 姓名 LIKE „王_‟
B. SELECT
* FROM XS WHERE 姓名 LIKE „王%‟
C. SELECT * FROM
XS WHERE 姓名 = „王%‟
D.
SELECT * FROM XS
WHERE 姓名 = „王_‟
10.
SQL语言中,SELECT语句的中FROM子句指出的是查询的( A )
A. 数据来源 B. 条件 C. 输出数据项 D.
分组依据
11 如果一关系模式是3NF,则该关系模式必定是( A )
A.
2NF B. BCNF C.4NF D.5NF
12
下列说法中不正确的是( C)。
A、任何一个包含两个属性的关系模式一定满足3NF
B、任何一个包含两个属性的关系模式一定满足BCNF
C、任何一个包含三个属性的关系模式一定满足3NF
D、任何一个关系模式都一定有码
13. 若用如下的SQL语句创建表S:
CREATE TABLE S(S#
CHAR(6)PRIMARY KEY,
SNAME CHAR(8)NOT NULL,SEX
CHAR(2),AGE INTEGER)
并且S表中已经有两行:
(‘022345’,‘李明芳’,‘女’,23)和(‘021876’,‘张为’,‘男’,32)
今欲向S表插入新元组:
Ⅰ.(‘022345’,‘彭明芳’,‘女’,23)
Ⅱ.(‘020746’,‘杨云’,NULL,NULL)
Ⅲ.
(‘020721’,‘张为’,‘女’,21).
可以被成功插入的元组是( C )
A. 全部 B. Ⅰ和Ⅱ C. Ⅱ和Ⅲ D. Ⅰ和Ⅲ
【第7页
共4页】
14.
下面列出的关于“视图(View)”的条目中,哪一条是不正确的( C )。
A.
视图是外模式 B. 视图是虚表
C. 使用视图可以加快查询语句的执行速度
D. 使用视图可以简化查询语句的编写
15. SQL Server 2000或SQL
Server 2005中的文件包括: 主数据文件、辅助数据文件和( B )
A.
索引文件 B. 日志文件 C. 备份文件 D. 程序文件
得分
二、填空题(每空1分,共10分)。
1. 模式内模式映像为数据提供了数据的_____物理____________独立性。
2. 关系代数中专门的关系运算包括:选择、投影、__连接_______和除法。
3.
关系中主码的取值必须惟一且非空,这条规则是____实体_____________完整性规则。
4. SQL语言提供___数据定义______、数据查询、_数据操纵____
___、数据控制等功能。
5. 关系规范化理论是设计__关系数据库______的指南和工具。
6. 实现概念模型最常用的表示方法是___E-R图________。
7.
设关系模式R是第一范式,且每个非主属性都不传递依赖于R的候选键,则称R是__3NF_____
范
式。
8. SELECT语句中进行查询 , 若希望查询的结果不出现重复元组 ,
应在SELECT子句中使用___
Distinct ______保留字。
得分
三、简答题 (每小题10分,共30分)。
1.
简述数据库系统的体系结构特点。
数据库系统的体系结构,包括数据库管理系统的三级模式结构和两级映象。
数据库系统的三级结构是指数据库系统由外模式(子模式)、模式、内模式三级构成。
外模式
(又称子模式、用户模式):是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是
数据
库用户的数据视图,是与某一应用有关的数据的逻辑表示。
数据库管理系统在三级模式之间提供了两层映象:外模式 模式映象、模式
内模式映象两级映象保证
了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
2.简要说明数据的完整性约束条件的含义。关系有哪三类完整性约束?
数据的完
整性约束条件是一组完整性规则。这些规则是给定的数据模型中数据及其联系所具有的制
【第8页
共4页】
约和依存规则,用以限定符合数据模型的数据库状态及状态的变化,以保证数
据的正确、有效和相容。
关系有实体完整性、参照完整性和自定义完整性等三类完整性。
3.
笛卡尔积、等值连接、自然连接三者有什么区别?
笛卡尔积是关系代数中的一个基本操作,
而等值连接和自然连接是关系代数中的组合操作。等值连
接是在笛卡尔积的基础上选择满足两个关系中给
定属性相等的元组的集合。自然连接是在两个关系
的相同属性上的等值连接,并且自然连接要在结果中把
重复的属性去掉,而等值连接则不必.
等值连接中有笛卡尔积运算;
自然连接是一种等值连接,它是两个关系中所有公共属性进行等值连接的结果。
得分
四、设计题(每小题3分,共30分)
表1
学生信息表:student
数据类型 长度
字符(文本)型
字符(文本)型
字符(文本)型
整数(数值)型
字符型
10
10
2
4
Tru现有学生选课关系数据库如表1-表3:
列名
sno
sname
ssex
sage
sdept
是否允许为空值
否
否
否
是
否
表2 课程信息表:course
列名
cno
cname
credit
pcno
数据类型
字符(文本)型
字符(文本)型
整数(数值)型
字符(文本)型
【第9页
共4页】
长度
3
30
3
是否允许为空值
否
否
是
是
表3 学生选课表:sc
列名
sno
cno
数据类型
字符(文本)型
字符(文本)型
整数(数值)型
长度
10
30
是否允许为空值
否
否
是
grade
用关系代数表达式实现下列1-2小题:
∏
sno0name
(σ
1、求成绩在90分以上的学生的学生号和姓名;
grade>=90
(Student▕╳︳SC))
2、查询至少选修了一门其直接先修课为005号课程的学生名。
∏
sname
(σ
pcno=‟005‟
(Course ▕╳︳SC
▕╳︳Student))
用SQL语言实现下列3-10小题:
3、 查询年龄在20岁以下的学生的姓名及其年龄;
select sname,
sage from student where sage<20
4、查询年龄在20-30岁直接的学生的姓名, 姓名, 所在系:;
select sname, ssex, sdept from student where sage
between 20 and 30
5、查找所有姓‟李‟的学生的姓名, 学号和性别;
select sname,
sno, ssex from student where sname like '李%'
6、查询全体学生的情况,查询结果按所在系号升序排列,
同一系中的学生按年龄降序排列;
select * from student order
by sdept ASC, sage DESC
7、查询每个学生的学号, 姓名, 选修的课程名和成绩;
select ,
sname, cname, grade from student S, course C, sc
SC where = and =
8、计算1号课程的学生的平均成绩,
最高分和最低分;
select avg(grade) as 平均成绩,max(grade)
as 最高分, min(grade) as 最低分
from scwhere cno='1'
9、查询‟信息系‟(IS)学生”数据结构”课程的平均成绩;
select avg(grade) from student, course, sc
where = and
= and sdept='IS' and cname='数据结构
【第10页 共4页】
10、创建信息系选修了1号课程的学生的视图IS_S1。 N
create view
IS_S1 as select , cno, grade from student, sc
where = and
sdept='IS' and cno='1'
【第11页共4页】
命题教师 熊曾刚 教研室主任
【第1页 共4页】
院系负责人