数据库原理及应用(第2版)习题参考答案
第1章 数据概述 一.选择题
1.下列关于数据库管理系统的说法,错误的是 C
A.数据库管理系统与操作系统有关,操作系统的类型决定了能够运行的数据库管理系统的类型 B.数据库管理系统对数据库文件的访问必须经过操作系统实现才能实现 C.数据库应用程序可以不经过数据库管理系统而直接读取数据库文件 D.数据库管理系统对用户隐藏了数据库文件的存放位置和文件名 2.下列关于用文件管理数据的说法,错误的是 D A.用文件管理数据,难以提供应用程序对数据的独立性
B.当存储数据的文件名发生变化时,必须修改访问数据文件的应用程序 C.用文件存储数据的方式难以实现数据访问的安全控制
·1· D.将相关的数据存储在一个文件中,有利于用户对数据进行分类,因此也可以加快用户操作数据的效率 3.下列说法中,不属于数据库管理系统特征的是 C A.提供了应用程序和数据的独立性
B.所有的数据作为一个整体考虑,因此是相互关联的数据的集合 C.用户访问数据时,需要知道存储数据的文件的物理信息
D.能够保证数据库数据的可靠性,即使在存储数据的硬盘出现故障时,也能防止数据丢失 5.在数据库系统中,数据库管理系统和操作系统之间的关系是 D A.相互调用
B.数据库管理系统调用操作系统 C.操作系统调用数据库管理系统 D.并发运行
6.数据库系统的物理独立性是指 D A.不会因为数据的变化而影响应用程序 B.不会因为数据存储结构的变化而影响应用程序 C.不会因为数据存储策略的变化而影响数据的存储结构 D.不会因为数据逻辑结构的变化而影响应用程序
7.数据库管理系统是数据库系统的核心,它负责有效地组织、存储和管理数据,它位于用户和操作系统之间,属于 A
A.系统软件 C.应用软件
B.工具软件 D.数据软件
8.数据库系统是由若干部分组成的。下列不属于数据库系统组成部分的是 B A.数据库 C.应用程序
B.操作系统
D.数据库管理系统
9.下列关于客户/服务器结构和文件服务器结构的描述,错误的是 D
A.客户/服务器结构将数据库存储在服务器端,文件服务器结构将数据存储在客户端
B.客户/服务器结构返回给客户端的是处理后的结果数据,文件服务器结构返回给客户端的是包含客户所需数据
1
·2· 的文件
C.客户/服务器结构比文件服务器结构的网络开销小
D.客户/服务器结构可以提供数据共享功能,而用文件服务器结构存储的数据不能共享
数据库是相互关联的数据的集合,它用综合的方法组织数据,具有较小的数据冗余,可供多个用户共享,具有
较高的数据独立性,具有安全控制机制,能够保证数据的安全、可靠,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和完整性。
10.下列关于数据库技术的描述,错误的是 B
A.数据库中不但需要保存数据,而且还需要保存数据之间的关联关系
B.由于数据是存储在磁盘上的,因此用户在访问数据库数据时需要知道数据的存储位置 C.数据库中数据存储结构的变化不会影响到应用程序 D. 数据库中的数据具有较小的数据冗余
二.填空题
1.数据管理的发展主要经历了_______和_______两个阶段。文件管理 数据库管理 2.在利用数据库技术管理数据时,所有的数据都被_______统一管理。数据库管理系统
3.数据库管理系统提供的两个数据独立性是_______独立性和_______独立性。 物理 逻辑 4.数据库系统能够保证进入到数据库中的数据都是正确的数据,该特征称为_______。数据完整性 5.在客户/服务器结构中,数据的处理是在________端完成的。 服务器
6.数据库系统就是基于数据库的计算机应用系统,它主要由________、________和________三部分组成。 据库、数据库管理系统和应用程序
7.与用数据库技术管理数据相比,文件管理系统的数据共享性________,数据独立性________。 差 低
8.在数据库技术中,当表达现实世界的信息内容发生变化时,可以保证不影响应用程序,这个特性称为______。 逻辑独立性
9.当数据库数据由于机器硬件故障而遭到破坏时,数据库管理系统提供了将数据库恢复到正确状态,并尽可能使数据不丢失的功能,这是数据库管理系统的______特性保证的。
可靠性
10.数据库中的数据是相互关联的数据集合,具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性,且具有安全性和可靠性,这些特征都是由______保证的。 数据库管理系统
数
2
第2章 数据模型与数据库系统结构 一.选择题
1.数据库三级模式结构的划分,有利于
A. 数据的独立性 C. 建立数据库
A
·3· B. 管理数据库文件 D. 操作系统管理数据库
B
2.在数据库的三级模式中,描述数据库中全体数据的逻辑结构和特征的是
A.内模式 B.模式 C. 外模式
D. 其他
3.数据库系统中将数据分为三个模式,从而提供了数据的独立性,下列关于数据逻辑独立性的说法,正确的是
A. B. C. D.
C
当内模式发生变化时,模式可以不变 当内模式发生变化时,应用程序可以不变 当模式发生变化时,应用程序可以不变 当模式发生变化时,内模式可以不变
4.为最大限度地保证数据库数据的正确性,关系数据库实现了三个完整性约束,下列用于保证实体完整性的是
B
B.主码
C. CHECK约束
D
D. UNIQUE约束
A. 外码
5.下列关于关系中主属性的描述,错误的是
A. 主码所包含的属性一定是主属性 B. 外码所引用的属性一定是主属性 C. 候选码所包含的属性都是主属性
D. 任何一个主属性都可以唯一地标识表中的一行数据
6.设有关系模式销售(顾客号,商品号,销售时间,销售数量),若允许一个顾客在不同时间对同一个产品购买多
次,则此关系模式的主码是 A.顾客号
C.(顾客号,商品号)
D
B.产品号
D.(顾客号、商品号、销售时间)
B
7.关系数据库用二维表来存储数据。下列关于关系表中记录的说法,正确的是
A.顺序很重要,不能交换 C.按输入数据的顺序排列
B.顺序不重要 D.一定是有序的
C
8.下列模式中,用于描述单个用户数据视图的是
A.内模式 C.外模式
B.概念模式 D.存储模式
9.在利用概念层数据模型描述数据时,一般要求模型要满足三个要求。下列描述中,不属于概念层数据模型应满足的要求的是
A
B.能够真实地模拟现实世界 D.能够方便地在计算机上实现
A.能够描述并发数据
C.容易被业务人员理解
B
10.数据模型三要素是指
A.数据结构、数据对象和数据共享
3
·4· B.数据结构、数据操作和数据完整性约束
C.数据结构、数据操作和数据的安全控制 D.数据结构、数据操作和数据的可靠性
11.下列关于实体联系模型中联系的说法,错误的是 D
A.一个联系可以只与一个实体有关 B.一个联系可以与两个实体有关 C.一个联系可以与多个实体有关 D.一个联系也可以不与任何实体有关
12.数据库系统中的三级模式以及模式间的映像提供了数据的独立性。下列关于两级映像的说法,正确的是
C
A.外模式到模式的映像是由应用程序实现的,模式到内模式的映像是由DBMS实现的 B.外模式到模式的映像是由DBMS实现的,模式到内模式的映像是由应用程序实现的 C.外模式到模式的映像以及模式到内模式的映像都是由DBMS实现的 D.外模式到模式的映像以及模式到内模式的映像都是由应用程序实现的
D
13.下列不属于数据完整性约束的是
A.实体完整性 C.域完整性
B.参照完整性
D.数据操作完整性
A
14.下列关于关系操作的说法,正确的是
A.关系操作是非过程化的
B.在进行关系操作时,用户需要知道数据的存储位置 C.在进行关系操作时,用户需要知道数据的存储结构 D.用户可以在关系上直接进行行定位操作 14.下列关于概念层数据模型的说法,错误的是
C
A.概念层数据模型应该采用易于用户理解的表达方式 B.概念层数据模型应该比较易于转换成组织层数据模型
C.在进行概念层数据模型设计时,需要考虑具体的DBMS的特点 D.在进行概念层数据模型设计时,重点考虑的内容是用户的业务逻辑
15.下列关于外码的说法,正确的是
A.外码必须与其所引用的主码同名 B.外码列不允许有空值
C
C.外码和所引用的主码名字可以不同,但语义必须相同 D.外码的取值必须要与所引用关系中主码的某个值相同
16.下列关于关系的说法,错误的是
二.填空题
D
A.关系中的每个属性都是不可再分的基本属性 B.关系中不允许出现值完全相同的元组 C.关系中不需要考虑元组的先后顺序
D.关系中属性顺序的不同,关系所表达的语义也不同
1.数据库可以最大限度地保证数据的正确性,这在数据库中被称为______。 数据完整性 2.实体-联系模型主要包含______、______和______三部分内容。实体 属性 联系
4
3.如果实体A与实体B是一对多联系,则实体B中的一个实例最多可对应实体A中的______实例。
一个
4.数据完整性约束包括______完整性、______完整性和______完整性。 实体 参照 用户定义 5.关系数据模型的组织形式是______。 二维表
6.数据库系统的______和______之间的映像,提供了数据的物理独立性。 7.数据的逻辑独立性是指当______变化时可以保持______不变。 内模式 模式
8.数据模型三要素包括______、______和______。 数据结构 数据操作 数据完整性约束 9.实体联系模型属于______层数据模型,它与具体的DBMS______。概念 无关 10.关系操作的特点是基于______的操作。 集合
·5· 11.当数据的物理存储位置发生变化时,通过调整______映像,可以保证______不变化,从而保证数据的物理独立性。 模式/内模式 模式
12.参照完整性约束是通过______保证的。 外码
5
·6· 第3章 SQL语言基础及数据定义功能 一.选择题
1.下列关于SQL语言特定的叙述,错误的是 B
A.使用SQL语言访问数据库,用户只需提出做什么,而无需描述如何实现 B.SQL语言比较复杂,因此在使用上比较难
C.SQL语言可以在数据库管理系统提供的应用程序中执行,也可以在DOS环境下执行 D.使用SQL语言可以完成任何数据库操作 2.下列所述功能中,不属于SQL语言功能的是 D A.数据库和表的定义功能 B.数据查询功能 C.数据增、删、改功能
D.提供方便的用户操作界面功能
3.设某职工表中有用于存放年龄(整数)的列,下列类型中最合适年龄列的是 C A.int C.tinyint
B.smallint D.bit
4.SQL Server数据库是由文件组成的。下列关于数据库所包含的文件的说法,正确的是 D A.一个数据库可包含多个主数据文件和多个日志文件 B.一个数据库只能包含一个主数据文件和一个日志文件
C.一个数据库可包含多个次要数据文件,但只能包含一个日志文件 D.一个数据库可包含多个次要数据文件和多个日志文件
5.在SQL Server中创建用户数据库,其主数据文件的大小必须大于 B A.master数据库的大小 C.msdb数据库的大小
B.model数据库的大小 D.3MB
6.在SQL Server系统数据库中,存放用户数据库公共信息的是 D A.master
C.msdb数据库的大小
B.model D.tempdb
7.在SQL Server中创建用户数据库实际就是定义数据库所包含的文件以及文件的属性。下列不属于数据库文件属性的是 C A.初始大小 C.文件结构
B.物理文件名 D. 最大大小
8.在SQL Server中创建用户数据库实际就是定义数据库所包含的文件以及文件的属性。下列不属于数据库文件属性的是 C A.初始大小 C.文件结构
B.物理文件名 D. 最大大小
9.下列约束中用于限制列的取值范围的约束是 B A.PRIMARY KEY C.DEFAULT
B.CHECK D. UNIQUE
10.下列约束中用于限制列的取值不重的约束是 D A.PRIMARY KEY
B.CHECK 6
C.DEFAULT
D. UNIQUE
·7· 11.下列约束中用于实现实体完整性的约束是 A A.PRIMARY KEY C.DEFAULT
B.CHECK D. UNIQUE
12.下列关于DEFAULT约束的说法,错误的是 D A.一个DEFAULT约束只能约束表中的一个列 B.在一个表上可以定义多个DEFAULT约束 C.DEFAULT只能定义在列级完整性约束处
D.在列级完整性约束和表级完整性约束处都可以定义DEFAULT约束
7
·8· 第 4 章 数据操作语句 一. 选择题
1. 当关系R和S进行连接操作时,如果R中的元组不满足连接条件,在连接结果中也会将这些记录保留下来的操
作是 A A.左外连接 C.内连接 C
A.Grade IS NOT NULL C.Grade = NULL
B.Grade IS NULL D.NOT (Grade IS NULL) D
B.MAX(列名)
D.COUNT(*)
A
B.右外连接 D.自连接
2. 设在某SELECT语句的WHERE子句中,需要对Grade列的空值进行处理。下列关于空值的操作,错误的是
3. 下列聚合函数中,不忽略空值的是
A.SUM(列名) C.AVG(列名)
4.SELECT … INTO …FROM语句的功能是
A. 将查询结果插入到一个新表中 C. 合并查询的结果
D. 向已存在的表中添加数据 5.下列利用SC表的查询语句中,错误的是
B. 将查询结果插入到一个已建好的表中
B
A. SELECT Sno, COUNT(*) FROM SC GROUP BY Sno
B. SELECT Sno FROM SC GROUP BY Sno WHERE COUNT(*) > 3 C. SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) > 3 D. SELECT Sno FROM SC GROUP BY Sno
6.现要利用Student表查询年龄最小的学生姓名和年龄。下列实现此功能的查询语句中,正确的是
A. SELECT Sname, MIN(Sage) FROM Student
B. SELECT Sname, Sage FROM Student WHERE Sage = MIN(Sage) C. SELECT TOP 1 Sname, Sage FROM Student
D. SELECT TOP 1 Sname, Sage FROM Student ORDER BY Sage
7.设SC表中记录成绩的列为:Grade,类型为int。若在查询成绩时,希望将成绩按‘优’、‘良’、‘中’、‘及格’和‘不及格’形式显示,正确的Case函数是
A.
Case Grade
When 90~100 THEN '优' When 80~89 THEN '良' When 70~79 THEN '中' When 60~69 THEN '及格' Else '不及格' End B.
Case
When Grade between 90 and 100 THEN Grade = '优' When Grade between 80 and 89 THEN Grade = '良'
8
C
D
When Grade between 70 and 79 THEN Grade = '中' When Grade between 60 and 69 THEN Grade = '及格' Else Grade = '不及格' End C.
Case
When Grade between 90 and 100 THEN '优' When Grade between 80 and 89 THEN '良' When Grade between 70 and 79 THEN '中' When Grade between 60 and 69 THEN '及格' Else '不及格' End D.
Case Grade
When 90~100 THEN Grade = '优' When 80~89 THEN Grade = '良' When 70~79 THEN Grade = '中' When 60~69 THEN Grade = '及格' Else Grade = '不及格'
End
8.下述语句的功能是将两个查询结果合并为一个结果。其中正确的是 Order by sage Union
select sno,sname,sage from student where sdept = 'is' Order by sage
B.select sno,sname,sage from student where sdept = 'cs' Union
select sno,sname,sage from student where sdept = 'is' Order by sage
C.select sno,sname,sage from student where sdept = 'cs' Union
select sno,sname from student where sdept = 'is' Order by sage
D.select sno,sname,sage from student where sdept = 'cs' Order by sage Union
select sno,sname,sage from student where sdept = 'is' 9.下列SQL语句中,用于修改表数据的语句是
A.ALTER C.UPDATE
C
B.SELECT D.INSERT
B
·9· A.select sno,sname,sage from student where sdept = 'cs'
10.设有Teachers表,该表的定义如下:
CREATE TABLE Teachers( Tno CHAR(8) PRIMARY KEY,
Tname VARCHAR(10) NOT NULL,
9
·10· Age TINYINT CHECK(Age BETWEEN 25 AND 65) )
下列插入语句中,不能正确执行的是
D
A.INSERT INTO Teachers VALUES('T100','张鸿',NULL)
B.INSERT INTO Teachers(Tno,Tname,Age) VALUES('T100','张鸿',30) C.INSERT INTO Teachers(Tno,Tname) VALUES('T100','张鸿') D.INSERT INTO TeachersVALUES('T100','张鸿')
11.设数据库中已有表4-1至4-3所示的Student、Course和SC表。现要查询学生选的第2学期开设课程的情况,只需列出学号、姓名、所在系和所选的课程号。该查询涉及到的表是 D
A.仅Student表
C.仅Student和Course表
B.仅Student和SC表 D.Student、SC和Course表
12.删除计算机系学生(在student表中)的修课记录(在SC表中)的正确的语句是表是 B
A.DELETE FROM SC JOIN Student b ON S.Sno = b.Sno WHERE Sdept = '计算机系'
B.DELETE FROM SC FROM SC JOIN Student b ON SC.Sno = b.Sno WHERE Sdept = '计算机系'
C.DELETE FROM Student WHERE Sdept = '计算机系' D.DELETE FROM SC WHERE Sdept = '计算机系'
二. 填空题
1. 在相关子查询中,子查询的执行次数是由_________决定的。外层表的行数
2. 对包含基于集合测试子查询的查询语句,是先执行_________层查询,在执行_________层查询。内,外 3. 对包含相关子查询的查询语句,是先执行_________层查询,在执行_________层查询。外,内 4. 聚合函数COUNT(*)是按_________统计数据个数。行
5. 设Grade列目前有三个值:90、80和NULL,则AVG(Grade)的值是_________,MIN(Grade)的值是_________。
85,80
6. 设有学生表(学号,姓名,所在系)和选课表(学号,课程号,成绩),现要建立统计每个系的选课人数。请补
全下列语句: COUNT(DISTINCT 选课表.学号) SELECT 所在系, _________ FROM 选课表 JOIN 学生表 ON 选课表.学号 = 学生表.学号 GROUP BY 所在系
7. 设有选课表(学号,课程号,成绩),现要查询考试成绩最高的三个学生的学号、课程号和成绩,包括并列情况。
请补全下列语句: TOP 3 WITH TIES, ORDER BY 成绩 DESC SELECT _________ 学号,课程号,成绩 FROM 选课表 _________
8. UNION操作用于合并多个查询语句的结果,如果在合并结果时不希望去掉重复的数据,则在用UNION操作时
应使用_________关键字。 起别名
10. FROM A LEFT JOIN B ON …语句表示在连接结果中不限制_________表数据必须满足连接条件。 A 11. 对分组后的统计结果再进行筛选使用的子句是_________。HAVING
12. 若SELECT语句中同时包含WHERE子句和GROUP子句,则先执行的是_________子句。WHERE
三. 简答题 1.
在聚合函数中,哪个函数在统计时不考虑NULL。
10
ALL
9. 进行自连接操作的两个表在物理上为一张表。通过_________方法可将物理上的一张表在逻辑上成为两张表。
答:COUNT(*) 2. 3. 4.
WHERE Sdept NOT IN (‘CS’,’IS’,’MA’),查找的数据是什么? 5.
自连接与普通内连接的主要区别是什么? 6.
外连接与内连接的主要区别是什么? 7.
在使用UNION合并多个查询语句的结果时,对各个查询语句的要求是什么? 8.
相关子查询与嵌套子查询在执行方面的主要区别是什么? 答:各个查询语句的列个数必须相同,对应列的语义相同,类型兼容。
答:自连接中进行连接操作的表在物理上是一张表,而普通内连接进行连接的表在物理上是两张表。 答:查找‘CS’,’IS’,’MA’三个系之外的其他系
WHERE Age BETWEEN 20 AND 30子句,查找的Age范围是多少? 答:Age大于等于20并且小于等于30
在LIKE运算符中“%”的作用是什么? 答:匹配0个或多个字符。
·11· 答:进行外连接的两个表中,可以有一张表不满足连接条件,而进行内连接的两个表必须都满足连接条件。
答:相关子查询的执行过程是先外后内,而嵌套子查询的执行过程是先内后外。而且相关子查询中必须有与外层查询的关联,而嵌套子查询中,内、外层查询之间没有关联关系。
9.
执行SELECT … INOT 表名 FROM …语句时,对表名的要求是什么?
10. 对统计结果的筛选应该使用哪个子句完成? 答:使用HAVING子句
11. 在排序子句中,排序依据列的前后顺序是否重要?ORDER BY C1,C2子句对数据的排序顺序是什么? 答:重要,系统会按列的先后顺序进行排序。
先按C1列进行排序,在C1列值相同时再按C2列进行排序。
12. TOP 子句的作用是什么?
答:在查询结果产生后,提取结果的前若干行数据。
四.上机练习
1.查询学生选课表中的全部数据。 答:select * from SC
2.查询计算机系的学生的姓名、年龄。
答:select sname,sage from student where sdept = '计算机系'
3. 查询成绩在70~80分之间的学生的学号、课程号和成绩。
11
答:必须是一个不存在的新表名。
·12· 答:select sno,cno,grade from sc on where grade between 70 and 80
4. 查询计算机系年龄在18~20之间且性别为“男”的学生的姓名、年龄。 答:select sname,sage from student
where sdept = '计算机系' and sage between 18 and 20 and ssex = '男'
5. 查询“C001”号课程的最高分。
答:select max(grade) from sc where cno = 'C001'
6. 查询计算机系学生的最大年龄和最小年龄。
答:select max(sage) as max_age, min(sage) as min_age from student where sdept = '计算机系'
7. 统计每个系的学生人数。
答:select sdept,count(*) from student group by sdept
8. 统计每门课程的选课人数和考试最高分。
答:select cno, count(*),max(grade) from sc group by cno
9. 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。 答:select sno,count(*), sum(grade) from sc group by sno
order by count(*) asc
10. 查询总成绩超过200分的学生,要求列出学号和总成绩。 答:select sno,sum(grade) from sc group by sno
having sum(grade) > 200
11. 查询选课门数超过2门的学生的学号、平均成绩和选课门数。
答:select sno, avg(grade), count(*) from sc having count(*) > 2
12. 查询选了“C002”课程的学生的姓名和所在系。
答:select sname,sdept from student s join sc on s.sno = sc.sno where cno = 'C002'
13. 查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。
答:select sname,cno,grade from student s join sc on s.sno = sc.sno where grade > 80 order by grade desc
14. 查询计算机系男生修了“数据库基础”的学生的姓名、性别和成绩。
答:select sname,ssex,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno
where sdept = '计算机系' and ssex = '男' and cname = '数据库基础'
15. 查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号、姓名、课程号
和考试成绩。
12
答:select s.sno,sname,cno,grade from student s
left join sc on s.sno = sc.sno
16. 查询哪些课程没有人选,要求列出课程号和课程名。
答:select c.cno,cname from course c left join sc on c.cno = sc.cno
where sc.cno is null
17.查询计算机系没有选课的学生,列出学生姓名。
答:select sname from student s left join sc on s.sno = sc.sno Where sdept = '计算机系' and sc.sno is null
18. 列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。 答:select top 3 s.sno, sname, sdept, grade from Student s join SC on s.Sno = SC.Sno join Course c on c.Cno = SC.Cno where cname = '数据库基础' order by grade desc
19.查询VB考试成绩最低的学生的姓名、所在系和VB成绩。
答:select top 1 with ties sname,sdept,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'VB' order by grade asc
·13· 20. 查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张新的永久表中,假设新表
名为new_sc。
答:select sname, cname, grade into new_sc from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where grade is not null
21. 分别查询信息管理系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两个查询结果合并成
一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
答:select sdept 系名, sname 姓名, ssex 性别, cname 修课名称, grade 修课成绩 from student s join sc on s.sno=sc.sno join course c on c.cno=sc.cno where sdept = '信息管理系'
UNION
select sdept , sname, ssex, cname, grade from student s join sc on s.sno=sc.sno join course c on c.cno=sc.cno where sdept = '计算机系'
22.查询选了VB的学生学号、姓名、所在系和成绩,并对所在系进行如下处理:
13
·14· 当所在系为“计算机系”时,显示“CS”; 当所在系为“信息管理系”时,显示“IS”; 当所在系为“通信工程系”时,显示“CO”;
对其他系,均显示“OTHER”。
答:select s.sno 学号,sname 姓名, case sdept when '计算机系' then 'CS' when '信息系' then 'IS' when '数学系' then 'CO' else 'OTHER'
end as 所在系,grade 成绩
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'vb'
23. 用子查询实现如下查询:
(1)查询选了“C001”课程的学生姓名和所在系。
答:select sname,sdept from student where sno in( select sno from sc where cno = ' C001')
(2)查询通信工程系成绩80分以上的学生学号和姓名。 答:select sno,sname from student where sno in( select sno from sc where grade > 80) and sdept = '通信工程系'
(3)查询计算机系考试成绩最高的学生姓名。
答:select sname from student s join sc on s.sno = sc.sno where sdept = '计算机系' and grade = (
select max(grade) from sc join student s on s.sno = sc.sno where sdept = '计算机系')
(4)查询年龄最大的男生的姓名和年龄。 答:select sname,sage from student
Where sage = (select max(sage) from student and ssex = '男') and ssex = '男'
(5)查询“C001”课程的考试成绩高于“C001”课程的平均成绩的学生的学号和“C001”课程成绩。 答:select sno,grade from sc where cno = ' C001'
And grade > (select avg(grade) from sc where cno = ' C001')
24. 创建一个新表,表名为test_t,其结构为:(COL1, COL 2, COL 3),其中:
COL1:整型,允许空值。
COL2:字符型,长度为10 ,不允许空值。 COL3:字符型,长度为10 ,允许空值。
试写出按行插入如下数据的语句(空白处表示空值)。
14
COL1 1 2 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(COL1, COL2) values(2, 'B3')
25. 将 “C001”课程的考试成绩加10分。
答:update sc set grade = grade + 10 where cno = 'C001'
B1 B2 B3 COL2 C2 COL3 ·15· 答:create table test_t (
26. 将计算机系所有选修了“计算机文化学”课程的学生成绩加10分,分别用子查询和多表连接形式实现。 答:(1)子查询
update sc set grade = grade + 10 where sno in(
select sno from student where sdept = '计算机系') and cno in(
select cno from course where cname = '计算机文化学')
(2)多表连接
update sc set grade = grade + 10
from sc join student s on sc.sno = s.sno join course c on c.cno = sc.cno
where sdept = '计算机系' and canem = '计算机文化学'
27. 删除修课成绩小于50分的学生的选课记录。 答:delete from sc where grade < 50
28. 删除信息管理系考试成绩小于50分的学生的该门课程的修课纪录,分别用子查询和多表连接形式实现。 答:(1) 用连接查询实现
delete from sc from sc join student s on s.sno=sc.sno where sdept = '信息管理系' and grade < 50 (2)用子查询实现
delete from sc where sno in (
select sno from student where sdept = '信息管理系' ) and grade < 50
29.删除VB考试成绩最低的学生的VB修课记录。 答:delete from sc
15
·16· where grade = (
select min(grade) from sc
join course c on c.cno = sc.cno where cname = 'vb') and cno in(
select cno from course where cname = 'vb')
16
第5章 视图和索引 一. 选择题
1.下列关于视图的说法,正确的是 B
A.视图与基本表一样,也存储数据
B.对视图的操作最终都转换为对基本表的操作 C.视图的数据源只能是基本表
D.所有视图都可以实现对数据的增、删、改、查操作 2.在视图的定义语句中,只能包含
A
A.数据查询语句 B.数据增、删、改语句 C.创建表的语句
D.全部都可以
3.视图对应数据库三级模式中的_________。
A. 外模式 B. 内模式 C. 模式 D. 其他
4.下列关于通过视图更新数据的说法,错误的是 A
A.如果视图的定义涉及到多张表,则对这种视图一般情况下允许进行更新操作 B.如果定义视图的查询语句中含有GROUP BY子句,则对这种视图不允许进行更新操作 C.如果定义视图的查询语句中含有统计函数,则对这种视图不允许进行更新操作 D.如果视图数据来自单个基本表的行、列选择结果,则一般情况下允许进行更新操作 5.下列关于视图的说法,正确的是
B
A.通过视图可以提高数据查询效率
B.视图提供了数据的逻辑独立性 C.视图只能建立在基本表上
D.定义视图的语句可以包含数据更改语句 6.创建视图的主要作用是
D
A.提高数据查询效率 B.维护数据的完整性约束 C.维护数据的一致性 D.提供用户视角的数据
7.建立索引可以加快数据的查询效率。在数据库的三级模式结构中,索引属于 A
A.内模式 B.模式 C.外模式
D.概念模式
8.设有学生表(学号,姓名,所在系)。下列建立统计每个系的学生人数的视图语句中,正确的是A.CREATE VIEW v1 AS
SELECT 所在系, COUNT(*) FROM 学生表 GROUP BY 所在系 B.CREATE VIEW v1 AS
SELECT 所在系, SUM(*) FROM 学生表 GROUP BY 所在系 C.CREATE VIEW v1(系名,人数) AS
SELECT 所在系, SUM(*) FROM 学生表 GROUP BY 所在系 D.CREATE VIEW v1(系名,人数) AS
SELECT 所在系, COUNT(*) FROM 学生表 GROUP BY 所在系
17
·17· D
·18·
A
9.设用户在某数据库中经常需要进行如下查询操作:
SELECT * FROM T WHERE C1=’A’ ORDER BY C2
设T表中已在C1列上建立了主码约束,且该表只建有该约束。为提高该查询的执行效率,下列方法中可行的是
C
A.在C1列上建立一个聚集索引,在C2列上建立一个非聚集索引 B.在C1和C2列上分别建立一个非聚集索引 C.在C2列上建立一个非聚集索引
D.在C1和C2列上建立一个组合的非聚集索引 10.下列关于索引的说法,正确的是
C
A.只要建立了索引就可以加快数据的查询效率
B.当一个表上需要创建聚集和非聚集索引时,应该先创建非聚集索引,然后再创建聚集索引,这种顺序会使创建索引的效率比较高
C.在一个表上可以建立多个唯一的非聚集索引
D.索引会影响数据插入和更新数据的执行效率,但不会影响删除数据的执行效率
11.下列关于CREATE UNIQUE INDEX IDX1 ON T(C1,C2)语句作用的说法,正确的是 D
A.在C1和C2列上分别建立一个唯一聚集索引 B.在C1和C2列上分别建立一个唯一非聚集索引 C.在C1和C2列的组合上建立一个唯一聚集索引 D.在C1和C2列的组合上建立一个唯一非聚集索引
二. 填空题
1.对视图的操作最终都转换为对_____操作。 基本表
2.视图是虚表,在数据库中只存储视图的_____,不存储视图的数据。 定义 3.修改视图定义的语句是_____。 ALTER VIEW 4.视图对应数据库三级模式中的_____模式。 外
5.在一个表上最多可以建立_____个聚集索引,可以建立_____个非聚集索引。 一 ,多
6.当在T表的C1列上建立聚集索引后,数据库管理系统会将T表数据按 _____ 列进行 _____。
C1 物理排序
7.索引建立的合适,可以加快数据_____操作的执行效率。 查询
8.在employees表的phone列上建立一个非聚集索引的SQL语句是_____
CREATE INDEX IDX1 ON employees(phone)
或:CREATE NONCLUSTERED INDEX IDX1 ON employees(phone)
9.设有student表,结构为Student(Sno,Sname,Sdept)。现要在该表上建立一个统计每个系的学生人数的视图,视图名为V_dept,视图结构为(系名,人数)。请补全下列定义该视图的SQL语句 V_dept (系名,人数) , GROUP BY Sdept CREATE VIEW _____ AS
SELECT Sdept, COUNT(*) _____
10.非聚集索引的B-树中,叶级节点中每个索引行由索引键值和_____组成。 行指示器
三. 简答题
18
1. 试说明使用视图的好处。
·19· 答:利用视图可以简化客户端的数据查询语句,使用户能从多角度看待同一数据,可以提高数据的安全性,视图对应数据库三级模式中的外模式,因此提供了一定程度的逻辑独立性。
2. 试说明哪类视图可实现更新数据的操作,哪类视图不可实现更新数据的操作。
答:一般只涉及到一张表的行列子集,且不含分组、统计计算等操作的视图是可更新数据的,其他情况一般都不能实现数据的更新操作。
3. 使用视图可以加快数据的查询速度,这句话对吗?为什么?
答:不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,即从外模式到模式的转换。
4. 索引的作用是什么?
答:索引可以加快数据的查询效率。
5. 索引分为哪几种类型?分别是什么?它们的主要区别是什么
答:分为聚集索引和非聚集索引两种。聚集索引会对数据进行物理排序,非聚集索引不对数据进行物理排序。
6. 聚集索引一定是唯一性索引,对吗?反之呢? 答:不对。反之也不对。
7. 在建立聚集索引时,数据库管理系统首先要将数据按聚集索引列进行物理排序。对吗? 答:对。
8. 在建立非聚集索引时,数据库管理系统并不对数据进行物理排序。对吗? 答:对。
9. 不管对表进行什么类型的操作,在表上建立的索引越多越能提高操作效率。对吗? 10. 答:不对。
11. 适合建立索引的列是什么? 答:适合建立索引的情况:
? ? ? ?
四.上机练习
1. 写出创建满足下述要求的视图的SQL语句,并执行这些语句。将所写语句保存到一个文件中。 (1) 查询学生的学号、姓名、所在系、课程号、课程名、课程学分。 答:Create view v1 As
Select s.sno,sname,sdept,c.cno,cname,credit From student s join sc on s.sno = sc.sno Join course c on c.cno = sc.cno
(2) 查询学生的学号、姓名、选修的课程名和考试成绩。
19
包含大量非重复值的列。
在WHERE子句中经常用于进行BETWEEN AND、>、>=、< 和 <=等操作的列。 经常被用作连接操作的列。
ORDER BY或GROUP BY子句中涉及的列。
·20· 答:Create view v2 As
Select s.sno,sname,cname,grade
From student s join sc on s.sno = sc.sno Join course c on c.cno = sc.cno
(3) 统计每个学生的选课门数,列出学生学号和选课门数。 答:Create view v3 As
Select sno,count(*) as total From sc group by sno
(4) 统计每个学生的修课总学分,列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学
分)。
答:Create view v4 As
Select sno,sum(credit) as total_credit From sno join course c on c.cno = sc.cno Where grade >= 60 Group by sno
2. 利用第1题建立的视图,写出完成如下查询的SQL语句,并执行这些语句,查看执行结果。将查询语句和执行
结果保存到一个文件中。
(1) 查询考试成绩大于等于90分的学生的姓名、课程名和成绩。 答:Select sname,cname,grade From v2 where grade >= 90
(2) 查询选课门数超过3门的学生的学号和选课门数。 答:Select * from v3 where total >= 3
(3) 查询计算机系选课门数超过3门的学生的姓名和选课门数。
答:Select sname,total from v3 join student s on s.sno = v3.sno Where sdept = ‘计算机系’ and total >= 3
(4) 查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。 答:Select v4.sno,sname,sdept,total_credit From v4 join student s on s.sno = v4.sno Where total_credit >= 10
(5) 查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。 答:Select sname,sage,sdept,total_credit From v4 join student s on s.sno = v4.sno Where sage >= 20 and total_credit >= 10
3. 修改第1题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。 答: Alter view v4 As
Select sno,sum(credit) as total_credit,count(*) as total_cno
From sc join course c on c.cno = sc.cno Group by sno
20
4. 写出实现下列操作的SQL语句,执行这些语句,并在SSMS工具中观察语句执行结果。 (1) 在Student表的Sdept列上建立一个按降序排序的非聚集索引,索引名为:Idx_Sdept。
答:Create index Idx_Sdept on student(Sdept DESC)
(2) 在Student表的Sname列上建立一个唯一的非聚集索引,索引名为:Idx_Sname。 答:Create unique index Idx_Sname on student(Sname)
(3) 在Course表上为Cname列建立一个非聚集索引,索引名为: Idx_Cname 答:Create index Idx_Cname on Course(Cname)
(4) 在SC表上为Sno和Cno建立一个组合的非聚集索引,索引名为:Idx_SnoCno。 答:Create index Idx_SnoCno on SC(Sno,Cno)
(5) 删除在Sname列上建立的Idx_Sname索引。 答:drop index Idx_Sname on Student
·21· 21
·22·
第6章 关系数据理论
一.选择题
1.对关系模式进行规范化的主要目的是
B
A.提高数据操作效率 B.维护数据的一致性
C.加强数据的安全性 D.为用户提供更快捷的数据操作
2.关系模式中的插入异常是指
D
A.插入的数据违反了实体完整性约束 B.插入的数据违反了用户定义的完整性约束 C.插入了不该插入的数据 D.应该被插入的数据不能被插入
3.如果有函数依赖X→Y,并且对X的任意真子集X’,都有X’
Y,则称 C
A.X完全函数依赖于Y B.X部分函数依赖于Y C.Y完全函数依赖于X
D.Y部分函数依赖于X
4.如果有函数依赖X→Y,并且对X的某个真子集X’,有X’→Y成立,则称 B
A.Y完全函数依赖于X B.Y部分函数依赖于X C.X完全函数依赖于Y
D.X部分函数依赖于Y
5.若X→Y和Y→Z在关系模式R上成立,则X→Z在R上也成立。该推理规则称为 C
A.自反规则 B.增广规则 C.传递规则
D.伪传递规则
6.若关系模式R中属性A仅出现在函数依赖的左部,则A为 A
A.L类属性 B.R类属性 C.N类属性
D.LR类属性
7.若关系模式R中属性A是N类属性,则A D
A.一定不包含在R任何候选码中 B.可能包含也可能不包含在R的候选码中 C.一定包含在R的某个候选码中 D.一定包含在R的任何候选码中
8.设F是某关系模式的极小函数依赖集。下列关于F的说法,错误的是
B
A.F中每个函数依赖的右部都必须是单个属性 B.F中每个函数依赖的左部都必须是单个属性 C.F中不能有冗余的函数依赖
D.F中每个函数依赖的左部不能有冗余属性
9.有关系模式:学生(学号,姓名,所在系,系主任),设一个系只有一个系主任,则该关系模式至少属于A.第一范式 B.第二范式 C.第三范式
D.BC范式
10.设有关系模式R(X, Y, Z),其F={Y→Z, Y→X, X→YZ},则该关系模式至少属于
D
A.第一范式
B.第二范式 22
B
C.第三范式
11.下列关于关系模式与范式的说法,错误的是
A.任何一个只包含两个属性的关系模式一定 B.任何一个只包含两个属性的关系模式一定 C.任何一个只包含两个属性的关系模式一定 D.任何一个只包含三个属性的关系模式一定
D.BC范式 D 属于3NF 属于BCNF 属于2NF 属于3NF
·23· 12.有关系模式:借书(书号,书名,库存量,读者号,借书日期,还书日期),设一个读者可以多次借阅同一本书,但对一种书(用书号唯一标识)不能同时借多本。该关系模式的主码是
A.(书号,读者号,借书日期) B. (书号)
二.填空题
1.在关系模式R中,若属性A只出现在函数依赖的右部,则A是_____类属性。 R 2.若关系模式R∈2NF,则R中一定不存在非主属性对主码的_____函数依赖。 部分 3.若关系模式R∈3NF,则R中一定不存在非主属性对主码的_____函数依赖。 传递
4.设有关系模式X(S, SN, D)和Y(D, DN, M),X的主码是S,Y的主码是D,则D在关系模式X中被称为_____。 外码
5.设有关系模式R(U, F),U={X, Y, Z, W},F={XY→Z, W→X},则(ZW)+ = _____,R的候选码为_____,该关系模式属于_____范式。XZW YW
第一
6.在关系模式R中,若属性A不在任何函数依赖中出现,则A是_____类属性。 N
7.在关系模式R中,若有X→Y,且Z?Y,则X→Z在R上也成立,该推理规则为Armstrong公理系统中的_____。分解规则
8.根据Armstrong公理系统中的自反规则,对关系模式R中的属性集X,若Y?X,则一定有_____。X→Y 9.关系数据库中的关系表至少都满足_____范式要求。 第一
10.关系规范化的过程是将关系模式从低范式规范化到高范式的过程,这个过程实际上是通过_____实现的。 模式分解
11. 若关系模式R的主码只包含一个属性,则R至少属于第_____范式。 二
12.若关系模式R中所有的非主属性都完全函数依赖于主码,则R至少属于第_____范式。 二
三.简答题
1. 关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么? 2.第一范式、第二范式和第三范式关系模式的定义分别是什么? 3.什么是部分函数依赖?什么是传递函数依赖?请举例说明。 4.第三范式的关系模式是否一定不包含部分函数依赖关系? 5.设有关系模式R(A, B, C, D),F={D→A, D→B} (1)求D。
(2)求R的全部候选码。 答:(1)D=DAB
(2)因为D是L类属性,因此D一定出现在R的任何候选码中; 因为C是N类属性,因此D一定出现在R的任何候选码中; (CD) = CDAB = R的全部属性,因此R的唯一候选码是CD。
6.设有关系模式R(W, X, Y, Z),F={X→Z, WX→Y},该关系模式属于第几范式,请说明理由。
解:R是1NF,R的候选码为WX,因此Y,Z是非主属性,又由于存在X→Z,因此F中存在非主属性对主码的部分函数
23
+
++
A
B.(书号,读者号) D.(读者号)
·24· 依赖,因此R不是2NF。
7.设有关系模式R(A, B, C, D),F = {A→C, C→A, B→AC, D→AC} (1)求B+,(AD)+。
(2)求R的全部候选码,判断R属于第几范式。 (3)求F的极小函数依赖集Fmin。 答:
(1) B+ = BAC
(AD)+ = ADC
(2) 由于B、D是L类属性,因此B、D会在任何候选码中;
(BD)+ = BDAC = R的全部属性,因此R的候选码是BD。 R是第1范式,因为存在部分函数依赖:
(3)① 将所有函数依赖的右边改为单个属性,得到:B→AC, D→AC
F1 = { A→C, C→A, B→A, B→C, D→A, D→C }
② 去掉函数依赖左部的多余属性:该关系模式的全部函数依赖集左部均为一个属性,因此不存在左部有多余
属性的情况。 ③ 去掉多余的函数依赖。
去掉A→C,得到F2 = { C→A, B→A, B→C, D→A, D→C }
A+F2 = AC,包含C,因此为多余函数依赖,应去掉;
去掉C→A,得到F3 = { B→A, B→C, D→A, D→C }
C+F3 = C,不包含A,因此C→A不是多余函数依赖;
去掉B→A,得到F4 = { C→A, B→C, D→A, D→C }
B+F4 = BCA,包含A,因此B→A是多余函数依赖,应去掉;
去掉B→C,得到F5 = { C→A, D→A, D→C }
B+F5 = B,不包含C,因此B→C不是多余函数依赖;
去掉D→A,得到F6 = { C→A, B→C, D→C }
D+F5 = DCA,不包含A,因此D→A是多余函数依赖,应去掉;
去掉D→C,得到F7 = { C→A, B→C }
D+F5 = D,不包含C,因此D→C不是多余函数依赖。
四. 设计题
1. 设有关系模式:学生修课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。设一个学生可以选多
门课程,一门课程可以被多名学生选。一个学生有唯一的所在系,每门课程有唯一的课程名和学分。每个学生对每门课程有唯一的成绩。 (1) 请指出此关系模式的候选码。 (2) 写出该关系模式的极小函数依赖集。 (3) 该关系模式属于第几范式?并简单说明理由。
(4) 若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 答:(1)候选码:(学号,课程号)
(2)学号→姓名,学号→所在系,学号→性别,课程号→课程名,课程号→学分, (学号,课程号)→成绩
(3)属于第二范式,因为存在部分函数依赖:学号→姓名。 (4)第三范式关系模式:
学生(学号,姓名,所在系,性别) 课程(课程号,课程名,学分)
24
最终Fmin ={C→A, B→C, D→C}
考试(学号,课程号,成绩),学号为引用学生的外码,课程号为引用课程的外码。
·25· 2. 设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个学生只在一个系的一个
班学习,一个系只有一个系主任,一个班只有一名班主任,一个系可以有多个班。 (1) 请指出此关系模式的候选码。 (2) 写出该关系模式的极小函数依赖集。 (3) 该关系模式属于第几范式?并简单说明理由。
(4) 若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 解:(1)候选码:学号
(2)学号→姓名,学号→所在系,学号→班号,班号→班主任,所在系→系主任 (3)第二范式,因为有:学号→班号,班号→班主任,因此存在传递函数依赖:
学号
传递班主任
(4)第三范式关系模式:
学生(学号,姓名,所在系,班号),班号为引用班的外码,所在系为引用系的外码。 班(班号,班主任) 系(系名,系主任)
3. 设有关系模式:教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:一门课程(由
课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。 (1) 指出此关系模式的候选码。 (2) 写出该关系模式的极小函数依赖集。 (3) 该关系模式属于第几范式?并简单说明理由
(4) 若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。 答:(1)候选码:(课程号,授课教师号)
(2)课程号→课程名,课程号→学分,授课教师号→教师名,(课程号,授课教师号)→授课时数 (3)属于第一范式。因为有:课程号→课程名,因此存在部分函数依赖关系:
(课程号,授课教师号)(4)第三范式关系模式:
课程(课程号,课程名,学分) 教师(教师号,教师名)
授课(课程号,教师号,授课时数),课程号为引用课程的外码,教师号为引用教师的外码。
P课程名
25
·26· 第7章 数据库设计 一. 选择题
1. 在数据库设计中,将E-R图转换为关系数据模型是下述哪个阶段完成的工作 A.需求分析阶段 C.逻辑设计阶段
B.概念设计阶段 D.物理设计阶段
D
C
2.在进行数据库逻辑结构设计时,不属于逻辑设计应遵守的原则的是 A.尽可能避免插入异常 C.尽可能避免数据冗余
B.尽可能避免删除异常 D.尽可能避免多表连接操作
A
3. 在进行数据库逻辑结构设计时,判断设计是否合理的常用依据是 A.规范化理论 C.数据字典
B.概念数据模型 D.数据流图
4.在将E-R图转换为关系模型时,一般都将m:n联系转换成一个独立的关系模式。下列关于这种联系产生的关系模式的主码的说法,正确的是
C
A.只需包含m端关系模式的主码即可 B.只需包含n端关系模式的主码即可 C.至少包含m端和n端关系模式的主码 D.必须添加新的属性作为主码
5. 数据流图是从“数据”和“处理”两方面表达数据处理的一种图形化表示方法,该方法主要用在数据库设计的
A
A.需求分析阶段 C.逻辑结构设计阶段
B.概念结构设计阶段 D.物理结构设计阶段
B
6. 在将局部E-R图合并为全局E-R图时,可能会产生一些冲突。下列冲突中不属于合并E-R图冲突的是 A.结构冲突 C.属性冲突
B.语法冲突 D.命名冲突
7. 一个银行营业所可以有多个客户,一个客户也可以在多个营业所进行存取款业务,则客户和银行营业所之间的联系是
D
B.一对多 D.多对多
B
A.一对一 C.多对一
8.在关系数据库中,二维表结构是 A.关系数据库采用的概念层数据模型 B. 关系数据库采用的组织层数据模型 C.数据库文件的组织方式 D.内模式采用的数据组织方式
9.设实体A与实体B之间是一对多联系。下列进行的逻辑结构设计方法中,最合理的是 A.实体A和实体B分别对应一个关系模式,且外码放在实体B的关系模式中 B. 实体A和实体B分别对应一个关系模式,且外码放在实体A的关系模式中 C.为实体A和实体B设计一个关系模式,该关系模式包含两个实体的全部属性
D.分别为实体A、实体B和它们之间的联系设计一个关系模式,外码在联系对应的关系模式中
A
26
·27· 10. 设有描述图书出版情况的关系模式:出版(书号,出版日期,印刷数量),设一本书可以被出版多次,每次出版都有一个出版数量。该关系模式的主码是 A.书号
C.(书号,印刷数量)
B
B.(书号,出版日期)
D.(书号,出版日期,印刷数量)
11. 设有描述学生借书情况的关系模式:借书(书号,读者号,借书日期,还书日期),设一个读者可在不同日期多次借阅同一本书,但不能在同一天对同一本书借阅多次。该关系模式的主码是 C A.书号
C.(书号,读者号,借书日期) 12. 设有如下两个关系模式
职工(职工号,姓名,所在部门编号)
部门(部门编号,部门名称,联系电话,办公地点)
为表达职工与部门之间的关联关系,需定义外码。下列关于这两个关系模式中外码的说法,正确的是 A.“职工”关系模式中的“所在部门编号”是引用“部门”的外码 B.部门关系模式中的“部门编号”是引用“职工”的外码 C.不能定义外码,因为两个关系模式中没有同名属性
D.将“职工”关系模式中的“所在部门编号”定义为外码,或者将“部门”关系模式中的“部门编号”定义为
外码均可
13. 在数据库设计中,进行用户子模式设计是下述哪个阶段要完成的工作 B A.需求分析阶段 C.逻辑结构设计阶段
14.下述不属于数据库物理结构设计内容的是 A.确定数据的存储结构 C.确定数据的存储分配
B.概念结构设计阶段 D.物理结构设计阶段 C
B.确定数据存储位置 D.确定数据库表结构
A
B.(书号,读者号)
D.(书号,读者号,借书日期,还书日期)
15.数据库物理结构设计完成后就进入到数据库实施阶段。下列不属于数据库实施阶段工作的 D A.调试应用程序 C.加载数据 二. 填空题
1. 一般将数据库设计分为______、______、______、______、______几个阶段。
需求分析 结构设计 行为设计 数据库实施 数据库运行和维护 2. 数据库结构设计包括______、______和______三个过程。
概念结构设计 逻辑结构设计 物理结构设计
3. 将局部E-R图合并为全局E-R图时,可能遇到的冲突有______、______和______。
属性冲突 命名冲突 结构冲突
4. 在数据库实施阶段除了创建数据库、关系表等之外,还包括两项重要的工作,一项是______,另一项是______。
加载数据 调试和运行应用程序
5. ______设计是将需求分析得到的用户需求进行概括和抽象,得到概念层数据模型。
概念(结构)
6. 将E-R图转换为某个数据库管理系统支持的组织层数据模型是______设计阶段完成的工作。
逻辑(结构)
7. 数据流图表达了数据库应用系统中______和______的关系。 数据 处理
8. 在数据库设计中,在需求分析阶段用文档来描述数据需求,包括对数据项、数据结构、数据流、数据存储和数
27
B.试运行应用程序 D.扩充系统功能
·28· 据处理过程的描述,通常将这个文档称为______。 数据字典
9. 采用E-R方法的概念结构设计通常包括______、______和______三个步骤。
设计局部E-R图,设计全局E-R图 优化全局E-R图
10. 根据应用要求确定在哪些表的哪个或哪些属性上建立索引的工作是在数据库设计的______阶段完成的。 物
理设计
三. 简答题
1.数据库设计分为哪几个阶段?每个阶段的主要工作是什么。 2.需求分析阶段的任务是什么?其中发现事实的方法有哪些? 3.概念结构应该具有哪些特点? 4.概念结构设计的策略有哪些?
5.什么是数据库的逻辑结构设计?简述其设计步骤。 6.把E-R模型转换为关系模式的转换规则有哪些? 7.数据模型的优化包含哪些方法?
8.简述数据库物理结构设计阶段的主要工作。 9. 简述数据库实施阶段的主要工作。 10.简述数据库行为设计包含的内容。 四. 设计题
1. 将给定的E-R图转换为符合3NF的关系模式,并指出每个关系模式的主码和外码。 (1)图7-25所示为描述图书、读者以及读者借阅图书的E-R图。
出版日期图书作者名借书日期联系电话所在单位图7-25 图书借阅E-R图
答:下列各关系模式中用下划线标识主码。
图书(书号,书名,出版日期,作者名) 读者(读者号,读者名,联系电话,所在单位)
书号m借阅n读者读者名 书名还书日期读者号借阅(书号,读者号,借书日期,还书日期),书号为引用图书关系模式的外码,读者号为引用读者关系模式的外码。
(2)图7-26所示为描述商店从生产厂家订购商品的E-R图。 答:下列各关系模式中用下划线标识主码。
商店(商店编号,商店名,联系电话)∈3NF
商品(商品编号,商品名称,库存量,商品分类)∈3NF 厂家(厂家编号,联系地址,联系电话)∈3NF
订购(商店编号,厂家编号,商品编号,订购日期,订购数量),商店编号为引用商店关系模式的外码,厂家编号为引用厂家关系模式的外码,商品编号为引用商品关系模式的外码。∈3NF
28
·29· 商店编号联系电话商店m订购日期订购订购数量n库存量商品分类商品商品编号商品名称
图7-26 商品订购E-R图
(3)图7-27为描述学生参加学校社团的E-R图。
商店名厂家编号p厂家联系地址联系电话性别学生专业m参加电话性质1社团学号姓名参加日期社团号社团名
图7-27 学生参加社团E-R图
答:下列各关系模式中用下划线标识主码。
社团(社团号,社团名,电话,性质)∈3NF
学生(学号,姓名,性别,专业,社团号,参加日期),社团号为引用社团的外码。∈3NF
成,不同的零件所用的原材料可以相同。零件按所属产品的不同被分别存放在不同的仓库中,一个仓库可以存放多种不同的零件。原材料按类别存放在若干仓库中,一个仓库也可以存放不同类别的材料。画出该工厂的E-R图(注:只画出实体和联系即可,不用标识属性)。
答:① 确定实体。本系统共有四个实体:产品、零件、材料、仓库。 因为只描述的是一个工厂的情况,因此不需要将工厂设为实体。
② 确定实体间的联系。 ? ? ? ?
产品与零件:多对多联系,可将联系命名为“组成”。 零件与材料:多对多联系,可将联系命名为“制成”。 零件与仓库:多对多联系,可将联系命名为“存放”。 材料与仓库:多对多联系,可将联系命名为“存放”。
2. 设某工厂生产若干产品,每种产品由若干零件组成,同一种零件可用在不同的产品上。零件由不同的原材料制
③ 绘制E-R图
29
·30· 材料mm制成nm存放零件m组成n产品存放n仓库n
3. 设要建立描述顾客在商店的购物情况的数据库应用系统,该系统有如下要求:一个商店可有多名顾客购物,一
个顾客可到多个商店购物,顾客每次购物有一个购物金额和购物日期。规定每个顾客每天在每个商店最多有一次购物,每次购物可购买多种商品。需要描述的“商店”信息包括:商店编号、商店名、地址、联系电话;需要描述的顾客信息包括:顾客号、姓名、住址、身份证号、性别。
请画出描述该应用系统的E-R图,并注明各实体的属性、标识属性以及联系的种类。 答:
顾客号性别姓名m购物日期n商店编号商店名商店地址顾客住址身份证号购物购物金额联系电话 4. 图7-28(a)~(d)所示为某企业信息管理系统中的局部E-R图,请将这些局部E-R图合并为一个全局E-R图,
并指明各实体以及联系的属性,标明联系的种类(注:为使图形简洁明了,在全局E-R图中可只画出实体和联系,属性单独用文字描述)。将合并后的E-R图转换为符合3NF要求的关系模式,并说明主码和外码。
职务职工性别m属于联系电话办公地点1部门职工编号姓名电话厂商地址m生产厂商号厂商名生产日期零件号零件名部门号部门名规格价格n零件 (b) (a) 30
·31· 单位号电话办公地点设备处1拥有性别年龄m工人姓名 (c)
1管理m设备设备号名称规格工人编号规格设备价格m装配规格价格(d)
图7-28 各局部E-R图
答:分析:
设备号设备名零件数量零件号零件名 n零件① 工人实体可以与职工实体合并,将工人的属性合并到职工实体中,并在职工实体中增加“身份”属性,来
标识是工人还是其他职工。
② 设备处可合并到部门实体中,因设备处也是一个部门。可在实现时增加约束:只有设备处才能管理设备。 ③ 合并后的设备实体属性是图(c)和(d)中设备属性的并集。
合并后的结果:
31
·32· 职务性别年龄职工m属于联系电话办公地点1部门1管理设备号设备名规格价格
关系模式(主码用下划线标识)
部门(部门号,部门名,联系电话,办公地点)
职工编号姓名身份地址部门号部门名电话厂商号厂商m生产nm装配n零件厂商名生产日期零件号零件名规格m设备零件数量价格 职工(职工编号,姓名,身份,职务,性别,年龄,所属部门号),所属部门号为引用部门的外码 设备(设备号,设备名,规格,价格,被管部门号),被管部门号为引用部门的外码 零件(零件号,零件名,规格,价格) 厂商(厂商号,厂商名,地址,电话)
装配(设备号,零件号,零件数量),设备号为引用设备的外码,零件号为引用零件的外码 生产(厂商号,零件号,生产日期)或 生产(厂商号,零件号,生产日期)
32
第8章 事务与并发控制 一. 选择题
1. 如果事务T获得了数据项A上的排他锁,则其他事务对A D
A.只能读不能写
B.只能写不能读
C.可以写也可以读
D.不能读也不能写
·33· 2. 设事务T1和T2执行如图8-15所示的并发操作,这种并发操作存在的问题是 B
时间 ① ② 事务T1 读A=100,B=10 读A=100 A=A*2=200 写回A=200 ③ ④ 计算A+B 读A=100,B=10 验证A+B 图8-15 并发操作
A.丢失修改 C.读脏数据
B.不能重复读 D.产生幽灵数据
C
事务T2 3. 下列关于数据库死锁的说法,正确的是
A.死锁是数据库中不可判断的一种现象
B.在数据库中防止死锁的方法是禁止多个用户同时操作数据库 C.只有允许并发操作时,才有可能出现死锁 D.当两个或多个用户竞争相同资源时就会产生死锁 4. 下列不属于事务特征的是
A.完整性 C.隔离性
A B.一致性 D.原子性
A
5. 若事务T对数据项D已加了S锁,则其他事务对数据项D
A.可以加S锁,但不能加X锁 B.可以加X锁,但不能加S锁 C.可以加S锁,也可以加X锁 D.不能加任何锁
6. 在数据库管理系统的三级封锁协议中,二级封锁协议的加锁要求是 C
A.对读数据不加锁,对写数据在事务开始时加X锁,事务完成后释放X锁 B.读数据时加S锁,读完即释放S锁;写数据时加X锁,写完即释放X锁
C.读数据时加S锁,读完即释放S锁;对写数据是在事务开始时加X锁,事务完成后释放X锁 D.在事务开始时即对要读、写的数据加锁,等事务结束后再释放全部锁 7. 在数据库管理系统的三级封锁协议中,一级封锁协议能够解决的问题是
A.丢失修改 C.读脏数据
B.不可重复读 D.死锁
A
8. 若系统中存在4个等待事务T0、T1、T2和T3,其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数
33
·34· 据项A2,T2正等待被T3锁住的数据项A3, B
A.活锁 C.封锁
B.死锁 D.正常
T3正等待被T0锁住的数据项A0。则此时系统所处的状态是
9. 事务一旦提交,其对数据库中数据的修改就是永久的,以后的操作或故障不会对事务的操作结果产生任何影响。
这个特性是事务的 A.原子性 C. 隔离性
D
B.一致性
D.持久性
10. 在多个事务并发执行时,如果事务T1对数据项A的修改覆盖了事务T2对数据项A的修改,这种现象称为
A
A.丢失修改 C.不可重复读
B.读脏数据 D.数据不一致
11. 在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”
数据是指
D
B.T1回滚后的数据 D.T2回滚后的数据
B
A.T1回滚前的数据 C.T2回滚前的数据
12. 在判断死锁的事务等待图中,如果等待图中出现了环路,则说明系统
A.存在活锁 C.事务执行成功
二. 填空题
B.存在死锁 D.事务执行失败
1.为防止并发操作的事务产生相互干情况,数据库管理系统采用加锁机制来避免这种情况。锁的类型包括______和______。 共享锁(或S锁)
排他锁(或X锁)
2.一个事务可通过执行______语句来取消其已完成的数据修改操作。 ROLLBACK 3.事务应对要读取的数据加______锁,对要修改的数据加______锁。
共享(或S) 排他(或X)
4.要求事务在读数据项之前必须先对数据项加S锁,直到事务结束才释放该锁的封锁协议是______级封锁协议。 三 5.假设有两个事务T1和T2,它们要读入同一数据并进行修改,如果T2提交的结果覆盖了T1提交的结果,导致T1修改的结果无效。这种现象称为______。 丢失修改 6.在数据库环境下,进行并发控制的主要方式是_____。 加锁
7.如果总是将事务为两个阶段,一个是加锁期,一个是解锁期,在加锁期不允许解锁,在解锁期不允许加锁,则将
该规定称为_____。 两段锁协议
8.如果并发执行的所有事务都遵守两段锁协议,则这些事务的任何并发调度一定是_____。 可串行化的 9.一个事务只要执行了_____语句,其对数据库的操作就是永久的。 COMMIT
10.在单CPU系统中,如果存在多个事务,则这些事务只能交叉地使用CPU,将这种并发方式称为_____。 交叉并
发 三. 简答题
5.设有如下三个事务:
T1:B = A + 1; T2:B = B * 2; T3:A = B + 1
(1)设A的初值为2,B的初值为1,如果这三个事务并发的执行,则可能的正确的执行结果有哪些?
T1?T2?T3:A=7, B=6
34
T1?T3?T2:A=4, B=8 T2?T1?T3:A=4, B=3 T2?T3?T1:A=3, B=4 T3?T1?T2:A=2, B=6 T3?T2?T1:A=2, B=3
(2)给出一种遵守两段锁协议的并发调度策略。
6.设有如图8-16所示的两个事务的调度过程,根据此图完成下列各题。 ·35· (1)写出事务T1和T2包含的操作。 T1:A = B+20
T2:B =A +30
(2)事务T1、T2开始之前B的初值是多少? B = 100
(3)设A的初值为20,则这两个事务所有可能的正确执行结果有哪些? T1?T2:A = 120,B = 150 T2?T1:A = 70,B = 50
(4)该调度方式是否遵守两段锁协议? 是
35
图8-16 事务调度图
·36· 第9章 数据库编程 一. 选择题
1.创建存储过程的用处主要是
A.提高数据操作效率 C.实现复杂的业务规则
2.下列关于存储过程的说法,正确的是
A
A
B.维护数据的一致性 D.增强引用完整性
A.在定义存储过程的代码中可以包含数据的增、删、改、查语句 B.用户可以向存储过程传递参数,但不能输出存储过程产生的结果 C.存储过程的执行是在客户端完成的 D.存储过程是存储在客户端的可执行代码段
3.设要定义一个包含2个输入参数和2个输出参数的存储过程,各参数均为整型。下列定义该存储过程的语句,正确的是
A.CREATE PROC P1 @x1, @x2 int,
@x3 , @x4 int output
B.CREATE PROC P1 @x1 int, @x2 int,
@x2, @x4 int output
C.CREATE PROC P1 @x1 int, @x2 int,
@x3 int, @x4 int output
D.CREATE PROC P1 @x1 int, @x2 int,
@x3 int output, @x4 int output t
4.设有存储过程定义语句:CREATE PROC P1 @x int, @y int output, @z int output。下列调用该存储过程的语句中,正确的是
B.EXEC P1 10, @a int, @b int output C.EXEC P1 10, @a output, @b output D.EXEC P1 10, @a, @b output
5.下列修改存储过程P1的语句,正确的语句是
A.ALTER P1 C.MODIFY P1
6. 下列删除存储过程P1的语句,正确的语句是
A.DELETE P1 C.DROP P1
7.定义触发器的主要作用是 D
A.提高数据的查询效率 C.加强数据的保密性
8.现有学生表和修课表,其结构为:
学生表(学号,姓名,入学日期,毕业日期) 修课表(学号,课程号,考试日期,成绩)
现要求修课表中的考试日期必须在学生表中相应学生的入学日期和毕业日期之间。下列实现方法中,正确的是
B
36
B.增强数据的安全性 D.实现复杂的约束
B
B.ALTER PROC P1 D.MODIFY PROC P1
D
B.DELETE PROC P1 D.DROP PROC P1 C
A.EXEC P1 10, @a int output, @b int output
D
A.在修课表的考试日期列上定义一个CHECK约束 B.在修课表上建立一个插入和更新操作的触发器 C.在学生表上建立一个插入和更新操作的触发器 D.在修课表的考试日期列上定义一个外码引用约束
·37· 9.设有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值范围与教师职称有关,比如,教授的基本工资是6000~10000,副教授的基本工资是4000~8000。下列实现该约束的方法中,可行的是 C
A. 可通过在教师表上定义插入和修改操作的触发器实现 B. 可通过在基本工资列上定义一个CHECK约束实现 C. A和B都可以 D. A和B都不可以
10.设在SC(Sno,Cno,Grade)表上定义了触发器:
CREATE TRIGGER tri1 ON SC INSTEAD OF INSERT … 当执行语句:INSERT INTO SC VALUES('s001', 'c01',90)
会引发该触发器执行。下列关于触发器执行时表中数据的说法,正确的是 D A.SC表和INERTED表中均包含新插入的数据 B.SC表和INERTED表中均不包含新插入的数据
C.SC表中包含新插入的数据,INERTED表中不包含新插入的数据 D.SC表中不包含新插入的数据,INERTED表中包含新插入的数据 11.设在SC(Sno,Cno,Grade)表上定义了触发器:
CREATE TRIGGER tri1 ON SC AFTER INSERT … 当执行语句:INSERT INTO SC VALUES('s001', 'c01',90)
会引发该触发器执行。下列关于触发器执行时表中数据的说法,正确的是 A A.SC表和INERTED表中均包含新插入的数据 B.SC表和INERTED表中均不包含新插入的数据
C.SC表中包含新插入的数据,INERTED表中不包含新插入的数据 D.SC表中不包含新插入的数据,INERTED表中包含新插入的数据
12.当执行由UPDATE语句引发的触发器时,下列关于该触发器临时工作表的说法,正确的是 C
A.系统会自动产生UPDATED表来存放更改前的数据 B.系统会自动产生UPDATED表来存放更改后的数据
C.系统会自动产生INSERTED表和DELETED表,用INSERTED表存放更改后的数据,用DELETED表存放更改前的数据
D.系统会自动产生INSERTED表和DELETED表,用INSERTED表存放更改前的数据,用DELETED表存放更改后的数据
13.下列关于游标的说法,错误的是 D
A.游标允许用户定位到结果集中的某行 B.游标允许用户读取结果集中当前行位置的数据 C.游标允许用户修改结果集中当前行位置的数据
D.游标中有个当前行指针,该指针只能在结果集中单向移动
14.对游标的操作一般包括声明、打开、处理、关闭、释放几个步骤,下列关于关闭游标的说法,错误的是
A.游标被关闭之后,还可以通过OPEN语句再次打开 B.游标一旦被关闭,其所占用的资源即被释放 C.游标被关闭之后,其所占用的资源没有被释放
37
B
·38· D.关闭游标之后的下一个操作可以是释放游标,也可以是再次打开该游标
二. 填空题
1.利用存储过程机制,可以_____数据操作效率。 提高
2.存储过程可以接受输入参数和输出参数,对于输出参数,必须用_____词来标明。 OUTPUT 3.执行存储过程的SQL语句是_____。 EXEC (EXECUTE)
4.调用存储过程时,其参数传递方式有_____和_____两种。按参数位置 按参数名 5.修改存储过程的SQL语句是_____。ALTER PROC
6.SQL Server支持两种类型的触发器,它们是_____触发型触发器和_____触发型触发器。 前 后 7.在一个表上针对每个操作,可以定义_____个前触发型触发器。 一
8.如果在某个表的INSERT操作上定义了触发器,则当执行INSERT语句时,系统产生的临时工作表是_____。 INSERTED
9.对于后触发型触发器,当触发器执行时,引发触发器的操作语句(已执行完/未执行)_____。 已执行完 10.对于后触发型触发器,当在触发器中发现引发触发器执行的操作违反了约束时,需要通过_____语句撤销已执行的操作。 ROLLBACK
11.打开游标的语句是_____。 OPEN cursor_name
12.在操作游标时,判断数据提取状态的全局变量_____。 @@fetch_status 四.上机练习
以下各题均利用第3、4章建立的Students数据库以及Student、Course和SC表实现。 1. 创建满足下述要求的存储过程,并查看存储过程的执行结果。 (1) 查询每个学生的修课总学分,要求列出学生学号及总学分。
create proc p1 as
select sno,SUM(credit) as 总学分
from SC join Course c on c.Cno=SC.Cno group by sno
(2) 查询学生的学号、姓名、修的课程号、课程名、课程学分,将学生所在系作为输入参数,默认值为“计算机
系”。执行此存储过程,并分别指定一些不同的输入参数值,查看执行结果。 create proc p2
@dept varchar(20) = '计算机系' as
select s.sno,sname,c.cno,cname,credit from Student s join SC on s.Sno=SC.Sno join Course c on c.Cno=SC.Cno
where Sdept = @dept 执行示例1:EXEC P2
执行示例2:EXEC P2 '通信工程系'
(3) 查询指定系的男生人数,其中系为输入参数,人数为输出参数。
create proc p3
@dept varchar(20),@rs int output as
select @rs = COUNT(*) from Student where Sdept = @dept and Ssex = '男'
38
(4) 删除指定学生的修课记录,其中学号为输入参数。
create proc p4 @sno char(7) as
delete from SC where Sno = @sno
(5) 修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。
create proc p5
@cno char(6),@x tinyint as
update Course set Semester = @x where Cno = @cno
2. 创建满足下述要求的触发器(前触发器、后触发器均可),并验证触发器执行情况。 (1) 限制学生的年龄在15~45之间。
create trigger tri1
on student after insert,update as
if exists(select * from inserted where sage not between 15 and 45) rollback
(2) 限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}
create trigger tri2
on student after insert,update as
if exists(select * from student where sdept not in ('计算机系','信息管理系','数学系','通信工程系'))
Rollback
(3) 限制每个学期开设的课程总学分在20~30范围内。
create trigger tri3
on course after insert,update as
if exists(select sum(credit) from course
where semester in (select semester from inserted ) having sum(credit) not between 20 and 30 ) Rollback
(4) 限制每个学生每学期选课门数不能超过6门(设只针对插入操作)。
create trigger tri4 on sc after insert as
if exists(select * from sc join course c on sc.cno = c.cno where sno in (select sno from inserted) group by sno,semester
39
·39· ·40· having count(*) > 6 ) rollback
3. 创建满足下述要求的游标,并查看游标的执行结果。
(1) 列出VB考试成绩最高的前2名和最后1名学生的学号、姓名、所在系和VB成绩。
declare @sno char(10),@sname char(10),@dept char(14),@grade char(4) declare c1 SCROLL cursor for select s.sno,sname,sdept,grade
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'vb' order by grade desc open c1
print ' 学号 姓名 所在系 VB成绩'
print '---------------------------------------' fetch next from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade
fetch next from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade
fetch last from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade close c1 deallocate c1
(2) 列出每个系年龄最大的名学生的姓名和年龄,将结果按年龄降序排序。
declare @sname char(10),@age char(4),@dept char(20) declare c1 cursor for select distinct sdept from student open c1
fetch next from c1 into @dept while @@FETCH_STATUS = 0 begin
print @dept
declare c2 cursor for
select top 2 with ties sname,sage from student where sdept = @dept order by sage desc open c2
fetch next from c2 into @sname ,@age if @@FETCH_STATUS = 0 print @sname + @age fetch next from c2 into @sname ,@age if @@FETCH_STATUS = 0 print @sname + @age print '' close c2 deallocate c2
fetch next from c1 into @dept
40
end close c1 deallocate c1
·41· 41
·42·
第10章 安全管理 一.选择题
1.下列关于SQL Server数据库用户权限的说法,错误的是
A
A.数据库用户自动具有该数据库中全部用户数据的查询权
B.通常情况下,数据库用户都来源于服务器的登录帐户 C.一个登录帐户可以对应多个数据库中的用户
D.数据库用户都自动具有该数据库中public角色的权限 2.下列关于SQL Server数据库服务器登录帐户的说法,错误的是
B
A.登录帐户的来源可以是Windows用户,也可以是非Windows用户
B.所有的Windows用户都自动是SQL Server的合法帐户
C.在Windows身份验证模式下,不允许非Windows身份的用户登录到SQL Server服务器 D.sa是SQL Server提供的一个具有系统管理员权限的默认登录帐户 3.下列关于SQL Server 2008身份认证模式的说法,正确的是
C A.只能在安装过程中指定身份认证模式,安装完成之后不能再修改 B.只能在安装完成后指定身份认证模式,安装过程中不能指定
C.在安装过程中可以指定身份认证模式,安装完成之后还可以再对其进行修改 D.身份认证模式是系统规定好的,在安装过程中及安装完成后都不能进行修改 4.下列SQL Server提供的系统角色中,具有数据库服务器上全部操作权限的角色是 D
A.db_owner B.dbcreator C.db_datawriter
D.sysadmin
5.下列角色中,具有数据库中全部用户表数据的插入、删除、修改权限且只具有这些权限的角色是 A.db_owner B.db_datareader C.db_datawriter
D.public
6.创建SQL Server登录帐户的SQL语句是 A
A.CREATE LOGIN B.CREATE USER C.ADD LOGIN
D.ADD USER 7. 下列SQL语句中,用于收回已授予用户权限的语句是 C
A.DROP B.DELETE C.REVOKE
D.ALTER
8.在SQL Server中,向数据库角色添加成员的SQL语句是 D
A.ADD member B.ADD rolemember C.sp_addmember
D.sp_addrolemember
9.下列关于数据库中普通用户的说法,正确的是
C
A.只能被授予对数据的查询权限
B.只能被授予对数据的插入、修改和删除权限 C.只能被授予对数据的操作权限 D.不能具有任何权限
10.下列关于用户定义的角色的说法,错误的是 A
42
C
A.用户定义角色可以是数据库级别的角色,也可以是服务器级别的角色 B.用户定义的角色只能是数据库级别的角色 C.定义用户定义角色的目的是简化对用户的权限管理 E. 用户角色可以是系统提供角色的成员 二.填空题
1. 数据库中的用户按操作权限的不同,通常分为_____、_____和_____三种。
系统管理员 数据库对象拥有者 普通用户
2. 在SQL Server 2008中,系统提供的具有管理员权限的角色是_____。 sysadmin 3.在SQL Server 2008中,系统提供的默认管理员帐户是_____。 sa
4.SQL Server 的身份验证模式有_____和_____两种。 仅Windows 混合模式 5.SQL Server 的登录帐户来源有_____和_____两种。 Windows 非Windows 6.在SQL Server 2008中,所的数据库用户都自动是_____角色的成员。 public
7.在SQL Server 2008中,系统提供的具有创建数据库权限的服务器角色是_____。 dbcreator 8.在SQL Server 2008中,创建用户定义角色的SQL语句是_____。 CREATE ROLE 9.SQL Server 2008将权限分为_____、_____和_____三种。 对象权限 语句权限 隐含权限 10.在SQL Server 2008中,角色分为种_____和_____两大类。 固定角色 用户角色
·43·
43
·44· 第11章 备份和恢复 一.选择题
1.备份数据库的主要目的是为了防止数据丢失。下列有可能造成数据丢失的是
A.存储数据的磁盘出现故障 B.存储数据的服务器出现故障 C.用户的不正常操作而更改了数据 D.数据库文件被移动
2.下列关于数据库备份的说法,正确的是
C
D
A.对系统数据库和用户数据库都应采用定期备份的策略 B.对系统数据库和用户数据库都应采用修改后即备份的策略
C.对系统数据库应采用修改后即备份的策略,对用户数据库应采用定期备份的策略 D.对系统数据库应采用定期备份的策略,对用户数据库应采用修改后即备份的策略 3.下列关于SQL Server备份设备的说法,正确的是 A
A.备份设备可以是磁盘上的一个文件
B.备份设备是一个逻辑设备,它只能建立在磁盘上 C.备份设备是一台物理存在的有特定要求的设备 D.一个备份设备只能用于一个数据库的一次备份 4.在简单恢复模式下,可以进行的备份是
A.仅完整备份 B.仅事务日志备份 C.仅完整备份和差异备份
D.完整备份、差异备份和日志备份 5.下列关于差异备份的说法,正确的是
B C
A.差异备份备份的是从上次备份到当前时间数据库变化的内容 B.差异备份备份的是从上次完整备份到当前时间数据库变化的内容 C.差异备份仅备份数据,不备份日志
D.两次完整备份之间进行的各差异备份的备份时间都是一样的 6.下列关于日志备份的说法,错误的是
A.日志备份仅备份日志,不备份数据
B.日志备份的执行效率通常比差异备份和完整备份高 C.日志备份的时间间隔通常比差异备份短 D.第一次对数据库进行的备份可以是日志备份 7.下列关于恢复数据库的说法,正确的是
A.在恢复数据库时不允许有用户访问数据库
B.恢复数据库时必须按照备份的顺序还原全部的备份 C.恢复数据库时,对是否有用户在使用数据库没有要求 D.首先进行恢复的备份可以是差异备份和日志备份
A D
44
8.设有如下备份操作:
日志 完整备份1 备份1 日志 备份2 差异 备份1 日志 备份3 日志 备份4 ·45· t 周日 0:00 周一 10:00 周一 15:00 周一 0:00 周二 10:00
周二 15:00 B
周二 17:00故障 现从备份中对数据库进行恢复,正确的恢复顺序为
A.完整备份1,日志备份1,日志备份2,差异备份1,日志备份3,日志备份4 B.完整备份1,差异备份1,日志备份3,日志备份4 C.完整备份1,差异备份1 D.完全备份1,日志备份4 二. 填空题
3. SQL Server 2008支持的三种恢复模式是_____、_____和_____。
简单恢复模式 完整恢复模式 大容量日志恢复模式
4. 对于数据库备份,SQL Server 2008支持的三种备份方式是_____、_____和_____。
完整备份 差异备份 日志备份
5. 第一次对数据库进行的备份必须是_____。完整备份
6. SQL Server 2008中,创建备份设备的系统存储过程是_____。sp_addumpdevice 7. SQL Server 2008中,当恢复模式为简单模式时,不能进行_____备份。日志 8. SQL Server 2008中,还原数据库的SQL语句是_____。RESTORE DATABASE 9. 通常情况下,完整备份、差异备份和日志备份中,备份时间最长的是_____。完整备份 10. SQL Server 2008中,在进行数据库备份时(允许/不允许)_____用户操作数据库。允许
45