数据库技术SQLServer习题与参考答案Word格式文档下载.docx
《数据库技术SQLServer习题与参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库技术SQLServer习题与参考答案Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
SQLServer2005中采用以页为数据库存储的基本单位,数据文件的页按顺序编号,文件首页的页码是0。
每个文件都有一个文件ID号。
在数据库中惟一标识一页,需要同时使用文件ID和页码。
在每个文件中,第一页是包含文件特性信息的文件首页,在文件开始处的其他几个页中包含系统信息,如分配映射表。
系统页存储在主数据文件和第一个事务日志文件中,其中有一个系统页包含数据库属性信息,它是数据库的引导页。
3、SQLServer2005中创建、查看、打开、删除数据库的方法有哪些?
方法分别有两种,即可以通过SQLServerManagementStudio图形化界面实现,也可以通过SQL语句命令实现。
4、通过SQL语句,使用__CREATE_DATABASE_命令创建数据库,使用_EXECsp_helpdb_命令查看数据库定义信息,使用_EXECsp_dboption命令设置数据库选项,使用_ALTERDATABASE_命令修改数据库结构,使用_DROPDATABASE_命令删除数据库。
5、安装SQLServer2005时,系统自动提供的4个系统数据库分别是什么?
各起什么作用?
系统自动提供的4个系统数据库分别是master数据库、model数据库、msdb数据库、tempdb数据库。
作用参见教材3.2节。
第三章:
1、如何理解表中记录和实体的对应关系?
为什么说关系也是实体?
在表中如何表示?
实体是客观存在并且可以相互区别的事物,实体可以是具体的事物,也可以是抽象的事物。
不同的事物是用不同的特征决定的,用来描述实体的特性称为实体的属性。
表中每条记录对应一个实体,而每个字段保存着对应实体的属性值。
2、说明主键、惟一键和外键的作用。
说明它们在保证数据完整性中的应用方法。
主键是唯一识别一个表的每一记录,作用是将记录和存放在其他表中的数据进行关联,并与外键构成参照完整性约束。
惟一键用于指明创建惟一约束的列上的取值必须惟一。
外键用于建立和加强两个表数据之间的链接的一列或多列。
通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。
这个列就成为第二个表的外键。
外键约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。
3、参照完整性要求有关联的两个或两个以上表之间数据的_一致性_。
参照完整性可以通过建立_主键_和_外键_来实现。
4、创建表用__CREATETABLE__语句,向表中添加记录用_INSERTINTO_语句,查看表的定义信息用EXECUTEsp_help语句,修改表用ALTERTABLE语句,删除表用DROPTABLE语句。
5、SQLServer2005中有哪些类型数据?
参见教材表。
6、现有图书管理数据库的三个关系模式:
图书(总编号,分类号,书名,作者,出版单位,单价)
读者(借书证号,单位,姓名,性别,职称,地址)
借阅(借书证号,总编号,借书日期)
1)利用SQLServer2005创建图书管理库和图书、读者和借阅三个基本表的表结构:
2)利用SQLServer2005在三个表中分别插入以下所给元组:
图书:
总编号
分类号
书名
作者
出版单位
单价
445501
TP3/12
数据库导论
王强
科学出版社
17.90
445502
445503
332211
TP5/10
计算机基础
李伟
高等教育出版社
18.00
112266
FoxBASE
张三
电子工业出版社
23.60
665544
TS7/21
高等数学
刘明
20.00
114455
TR9/12
线性代数
孙业
北京大学出版社
20.80
113388
TR7/90
大学英语
胡玲
清华大学出版社
12.50
446601
TP4/13
数据库基础
马凌云
人民邮电出版社
22.50
446602
446603
449901
TP4/14
FoxPro大全
周虹
32.70
449902
118801
TP4/15
计算机网络
黄力钧
21.80
118802
读者:
借书证号
单位
姓名
性别
职称
地址
111
信息系
王维利
女
教授
1号楼424
112
财会系
李立
男
副教授
2号楼316
113
经济系
张三
讲师
3号楼105
114
周华发
1号楼316
115
赵正义
工程师
1号楼224
116
李明
1号楼318
117
计算机系
李小峰
助教
1号楼214
118
许鹏飞
助工
1号楼216
119
刘大龙
120
国际贸易
李雪
4号楼506
121
李爽
4号楼510
122
王纯
4号楼512
123
沈小霞
2号楼202
124
朱海
2号楼210
125
马英明
2号楼212
借阅:
借书日期
1997-3-19
1997-2-12
1997-8-21
1997-3-14
1997-10-21
1997-11-2
1997-10-18
1997-12-12
1997-10-23
1997-9-10
第四章:
第三章3.6有图书管理数据库的三个关系模式:
1.用SQL完成如下查询:
1)找出姓李的读者姓名和所在单位。
select姓名,单位
from读者
where姓名like'
李%'
2)列出图书库中所有藏书的书名及出版单位。
select书名,出版单位
from图书
3)查找高等教育出版社的所有图书及单价,结果按单价降序排序。
select出版单位,书名,单价
where出版单位='
高等教育出版社'
orderby单价desc
4)查找价格介于10元和20元之间的图书种类,结果按出版单位和单价升序排序。
select书名,出版单位,单价
where单价between10.00and20.00
orderby出版单位,单价asc
5)查找书名以计算机打头的所有图书和作者。
select书名,作者
where书名like'
计算机%'
6)检索同时借阅了总编号为112266和449901两本书的借书证号。
select借阅.总编号,借书证号
from图书,借阅
where图书.总编号=借阅.总编号and借阅.总编号in('
112266'
'
449901'
)
7)查找所有借了书的读者的姓名及所在单位。
selectdistinct姓名,单位
from读者innerjoin借阅
on借阅.借书证号=读者.借书证号
8)找出李某所借图书的所有图书的书名及借书日期。
select书名,姓名,借书日期
from图书innerjoin借阅
on图书.总编号=借阅.总编号
join读者
where读者.姓名like'
9)查询1997年10月以后借书的读者借书证号、姓名和单位。
selectdistinct读者.借书证号,姓名,单位
from借阅innerjoin读者
where借阅.借书日期>
='
1997-10-1'
10)找出借阅了FoxPro大全一书的借书证号。
select借书证号
from借阅
where总编号in(select总编号
from图书
where书名='
FoxPro大全'
11)找出与赵正义在同一天借书的读者姓名、所在单位及借书日期。
select姓名,单位,借书日期
from借阅,读者
where借阅.借书证号=读者.借书证号and借书日期=(select借书日期
from借阅,读者
where借阅.借书证号=读者.借书证号and姓名='
赵正义'
12)查询1997年7月以后没有借书的读者借书证号、姓名及单位。
selectdistinct借书证号,姓名,单位
where借书证号notin(select借书证号
from借阅
where借书日期>
1997-07-01'
)
2.完成下面SQL高级查询:
13)求科学出版社图书的最高单价、最低单价、平均单价。
selectmax(单价)最高单价,min(单价)as最低单价,avg(单价)as平均单价
科学出版社'
14)求信息系当前借阅图书的读者人次数。
selectcount(借书证号)
where借书证号in(select借书证号
from读者
where单位='
信息系'
15)求出各个出版社图书的最高价格、最低价格和册数。
select出版单位,max(单价)最高价格,min(单价)as最低价格,count(*)册数
groupby出版单位
16)分别找出各单位当前借阅图书的读者人数。
select单位,count(借阅.借书证号)
where借阅.借书证号in(select借书证号
from读者)
groupby单位
17)找出当前至少借阅了2本图书的读者及所在单位。
from借阅
groupby借书证号
havingcount(*)>
=2)
18)分别找出借书人次超过1人次的单位及人次数。
select单位,count(*)as超过人次
where读者.借书证号=借阅.借书证号
havingcount(*)>
=2
19)找出藏书中各个出版单位的册数、价值总额。
select出版单位,count(*)册数,sum(单价)总价
20)查询经济系是否还清所有图书。
如果还清,显示该系所有读者的姓名、所在单位和职称
select姓名,单位,职称
where单位='
经济系'
andnotexists(select*
from读者,借阅
where读者.借书证号=借阅.借书证号and单位='
3、为什么说视图是虚表?
视图的数据存在什么地方?
视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据。
视图通过定义从基表中搜集数据,并展现给用户。
数据存储在对应的数据表中。
4、创建视图用CREATEVIEW语句,修改视图用ALTERVIEW语句,删除视图用DROPVIEW语句。
查看视图中的数据用SELECT语句。
查看视图的基本信息用sp_helptext存储过程,查看视图的定义信息用EXECsp_helptext存储过程,查看视图的依赖关系用EXECsp_depends存储过程。
5、说明视图的优缺点。
优点:
(1)视图能简化用户的操作;
(2)视图机制可以使用户以不同的方式查询同一数据;
(3)视图对数据库重构提供了一定程度的逻辑独立性;
(4)视图可以对机密的数据提供安全保护。
缺点:
(1)降低性能,通过视图查询起来需要花费时间;
(2)视图是只读的,更新时需要更新原表,对用户来说很麻烦。
6、通过视图修改数据要注意哪些限制?
对视图进行的修改操作有以下限制:
(1)若视图的字段来自表达式或常量,则不允许对该视图执行INSERT和UPDATE操作,但允许执行DELETE操作。
(2)若视图的字段来自集合函数,则此视图不允许修改操作。
(3)若视图定义中含有GROUPBY子句,则此视图不允许修改操作。
(4)若视图定义中含有DISTINCT短语,则此视图不允许修改操作。
(5)一个不允许修改操作视图上定义的视图,也不允许修改操作。
第五章:
1、什么是批处理?
批处理的结束标志是什么?
批处理就是一个或多个Transact-SQL语句的集合,用GO语句作为一个批处理的结束。
2、一些SQL语句不可以放在一个批处理中进行处理,它们需要遵守什么规则?
一些SQL语句不可以放在一个批处理中进行处理,它们需要遵守以下规则:
(1)大多数CREATE命令要在单个批命令中执行,但CREATEDATABASE、CREATETABLE和CREATEINDEX例外。
(2)调用存储过程时,如果它不是批处理中的第一个语句,则在其前面必须加上EXECUTE,或简写为EXEC。
(3)不能把规则和默认值绑定到表的字段或用户定义数据类型上之后,在同一个批处理中使用它们。
(4)不能在给表字段定义了一个CHECK约束后,在同一个批处理中使用该约束。
(5)不能在修改表的字段名后,在同一个批处理中引用该新字段名。
3、常量和变量有哪些种类?
常量有字符串常量、数值常量、日期常量。
变量主要有局部变量和全局变量。
4、什么是用户自定义函数?
它有哪些类型?
建立、修改和删除用户自定义函数使用什么命令?
用户定义的函数是由一个或多个Transact-SQL语句组成的子程序。
用户定义的函数类型有标量函数、内嵌表值函数、多语句表值函数。
建立、修改、删除用户自定义函数命令分别是CREATEFUNCTION、ALTERFUNCTION和DROPFUNCTION。
5、使用游标访问数据包括哪些步骤?
使用游标访问数据包括的步骤有声明游标、打开游标、从游标中获取数据、关闭游标、释放游标。
第六章:
1、创建索引的好处主要有哪些?
创建索引好处主要是加快数据查询和加快表的连接、排序和分组工作。
2、按照索引值的特点分类,可将索引分为__惟一__索引和_非惟一_索引;
按照索引结构的特点分类,可将索引分为_聚集__索引和__非聚集__索引。
3、聚集索引与非聚集索引之间有哪些不同点?
聚集索引会对表进行物理排序,而非聚集索引不会对表进行物理排序。
4、在哪些情况下SQLServer2005会自动建立索引?
这些索引能否用DROPINDEX语句来删除?
如果不能,应当用什么方法来删除?
在创建或修改表时,如果添加了一个主键或惟一键约束,则系统将自动在该表上,以该键值作为索引列,创建一个惟一索引。
对于通过主键和唯一约束创建的索引是不能够通过DROPINDEX来删除的。
删除方法是通过删除主键约束(或唯一约束)来自动删除由该主键约束(或唯一约束)创建出来的索引。
第七章:
1、简述使用存储过程有哪些优缺点?
(1)通过本地存储、代码预编译和缓存技术实现高性能的数据操作。
(2)通过通用编程结构和过程重用实现编程框架。
如果业务规则发生了变化,可以通过修改存储过程来适应新的业务规则,而不必修改客户端应用程序。
(3)通过隔离和加密的方法提高了数据库的安全性。
移植性较差,增加数据库服务器压力。
2、创建存储过程有哪些方法?
执行存储过程使用什么命令?
创建存储过程有两种方法,可用通过SQL命令建立或者通过SQLServerManagementStudio图形界面建立。
执行存储过程使用EXECUTE命令。
3、执行存储过程时,在什么情况下可以省略EXECUTE关键字?
如果存储过程是批处理中的第一条语句,那么不使用
EXECUTE
关键字也可以执行该存储过程。
4、说明存储过程重新编译的作用和3种重新编译的方法。
通过对存储过程进行重新编译,可以重新优化存储过程的执行计划。
三种重新编译的方法分别是:
1)在创建存储过程时,使用WITHRECOMPILE子句来指示SQLServer2005不将该存储过程的查询计划保存在缓存中,而是在每次运行时重新编译和优化,并创建新的执行计划。
2)通过在执行存储过程时设定重新编译,可以让SQLServer2005在执行存储过程时重新编译存储过程。
3)通过系统存储过程sp_recompile设定重新编译标记,使存储过程和触发器在下次运行时重新编译。
5、简述使用触发器有哪些优缺点。
优点:
(1)多张表的级联修改。
触发器能实现各种级联操作,包括数据的修改、插入和删除。
(2)强于CHECK的复杂限制。
(3)比较数据修改前后的差别。
(4)强制表的修改要合乎业务规则。
(1)可移植性是触发器最大的缺点。
(2)占用服务器端太多的资源。
(3)不能做DDL。
(4)触发器排错困难,而且数据容易造成不一致,后期维护不方便。
6、说明创建触发器命令中FOR、AFTER、INSTEADOF各表示什么含义?
(1)FOR|AFTER。
FOR与AFTER同义,指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。
所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器,即为后触发。
(2)INSTEADOF。
指定执行触发器而不执行造成触发的SQL语句,从而替代造成触发的语句。
在表或视图上,每个INSERT、UPDATE或DELETE语句只能定义一个INSTEADOF触发器,替代触发。
7、TRUNCATETABLE语句是否会激活DELETE触发器?
在触发器中的SQL语句有哪些限制?
由于TRUNCATETABLE语句的操作不被记录到事务日志,所以它不会激活DELETE触发器。
所有建立和修改数据库及其对象的语句、所有DROP语句都不允许在触发器中使用。
第八章:
1、什么是备份设备?
物理设备标识和逻辑名之