数据库技术(SQLServer)习题与参考答案概要 下载本文

select 书名,出版单位,单价 from 图书

where 单价between 10.00 and 20.00 order by 出版单位,单价asc

5)查找书名以计算机打头的所有图书和作者。 select 书名,作者 from 图书

where 书名like '计算机%'

6)检索同时借阅了总编号为112266和449901两本书的借书证号。 select 借阅.总编号,借书证号 from 图书,借阅

where 图书.总编号=借阅.总编号and 借阅.总编号in ('112266','449901') 7)查找所有借了书的读者的姓名及所在单位。 select distinct 姓名,单位 from 读者inner join 借阅 on 借阅.借书证号=读者.借书证号

8)找出李某所借图书的所有图书的书名及借书日期。 select 书名,姓名,借书日期 from 图书inner join 借阅 on 图书.总编号=借阅.总编号 join 读者

on 借阅.借书证号=读者.借书证号 where 读者.姓名like '李%'

9)查询1997年10月以后借书的读者借书证号、姓名和单位。 select distinct 读者.借书证号,姓名,单位 from 借阅inner join 读者 on 借阅.借书证号=读者.借书证号 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月以后没有借书的读者借书证号、姓名及单位。 select distinct 借书证号,姓名,单位 from 读者

where 借书证号not in (select 借书证号 from 借阅

where 借书日期>='1997-07-01' ) 2.完成下面SQL高级查询:

13)求科学出版社图书的最高单价、最低单价、平均单价。

select max(单价) 最高单价,min(单价) as 最低单价,avg(单价) as 平均单价 from 图书

where 出版单位='科学出版社'

14)求信息系当前借阅图书的读者人次数。 select count(借书证号) from 借阅

where 借书证号in (select 借书证号 from 读者

where 单位='信息系')

15)求出各个出版社图书的最高价格、最低价格和册数。

select 出版单位,max(单价) 最高价格,min(单价) as 最低价格,count(*) 册数 from 图书 group by 出版单位

16)分别找出各单位当前借阅图书的读者人数。 select 单位,count(借阅.借书证号) from 借阅,读者

where 借阅.借书证号in (select 借书证号 from 读者) group by 单位

17)找出当前至少借阅了2本图书的读者及所在单位。

select 姓名,单位 from 读者

where 借书证号in (select 借书证号 from 借阅 group by 借书证号 having count(*)>=2) 18)分别找出借书人次超过1人次的单位及人次数。 select 单位,count(*) as 超过人次 from 借阅,读者

where 读者.借书证号=借阅.借书证号 group by 单位 having count(*)>=2

19)找出藏书中各个出版单位的册数、价值总额。 select 出版单位,count(*) 册数,sum(单价) 总价 from 图书 group by 出版单位

20)查询经济系是否还清所有图书。如果还清,显示该系所有读者的姓名、所在单位和职称 select 姓名,单位,职称 from 读者

where 单位='经济系' and not exists (select * from 读者,借阅

where 读者.借书证号=借阅.借书证号and 单位='经济系') 3、为什么说视图是虚表?视图的数据存在什么地方?

答:视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据。视图通过定义从基表中搜集数据,并展现给用户。数据存储在对应的数据表中。

4、创建视图用 CREATE VIEW 语句,修改视图用ALTER VIEW语句,删除视图用DROP VIEW语句。查看视图中的数据用SELECT语句。查看视图的基本信息用sp_helptext存储过程,查看视图的定义信息用 EXEC sp_helptext 存储过程,查看视图的依赖关系用EXEC sp_ depends存储过程。 5、说明视图的优缺点。

答:优点:(1)视图能简化用户的操作;(2)视图机制可以使用户以不同的方式查询同一数据;(3)视图对数据库重构提供了一定程度的逻辑独立性;(4)视图可以对机密的数据提供安全保

护。

缺点:(1)降低性能,通过视图查询起来需要花费时间;(2)视图是只读的,更新时需要更新原表,对用户来说很麻烦。 6、通过视图修改数据要注意哪些限制? 答:对视图进行的修改操作有以下限制:

(1)若视图的字段来自表达式或常量,则不允许对该视图执行INSERT和UPDATE操作,但允许执行DELETE操作。

(2)若视图的字段来自集合函数,则此视图不允许修改操作。 (3)若视图定义中含有GROUP BY 子句,则此视图不允许修改操作。 (4)若视图定义中含有DISTINCT短语,则此视图不允许修改操作。 (5)一个不允许修改操作视图上定义的视图,也不允许修改操作。 第五章:

1、什么是批处理?批处理的结束标志是什么?

答:批处理就是一个或多个Transact-SQL语句的集合,用GO语句作为一个批处理的结束。 2、一些SQL语句不可以放在一个批处理中进行处理,它们需要遵守什么规则? 答:一些SQL语句不可以放在一个批处理中进行处理,它们需要遵守以下规则:

(1)大多数CREATE命令要在单个批命令中执行,但CREATE DATABASE、CREATE TABLE和CREATE INDEX例外。

(2)调用存储过程时,如果它不是批处理中的第一个语句,则在其前面必须加上EXECUTE,或简写为EXEC。

(3)不能把规则和默认值绑定到表的字段或用户定义数据类型上之后,在同一个批处理中使用它们。

(4)不能在给表字段定义了一个CHECK约束后,在同一个批处理中使用该约束。 (5)不能在修改表的字段名后,在同一个批处理中引用该新字段名。 3、常量和变量有哪些种类?

答:常量有字符串常量、数值常量、日期常量。变量主要有局部变量和全局变量。 4、什么是用户自定义函数?它有哪些类型?建立、修改和删除用户自定义函数使用什么命令?

答:用户定义的函数是由一个或多个Transact-SQL语句组成的子程序。用户定义的函数类

型有标量函数、内嵌表值函数、多语句表值函数。建立、修改、删除用户自定义函数命令分别是CREATE FUNCTION、ALTER FUNCTION和DROP FUNCTION。 5、使用游标访问数据包括哪些步骤?

答:使用游标访问数据包括的步骤有声明游标、打开游标、从游标中获取数据、关闭游标、释放游标。 第六章:

1、创建索引的好处主要有哪些?

答:创建索引好处主要是加快数据查询和加快表的连接、排序和分组工作。

2、按照索引值的特点分类,可将索引分为__惟一__索引和_非惟一_索引;按照索引结构的特点分类,可将索引分为_聚集__索引和__非聚集__索引。 3、聚集索引与非聚集索引之间有哪些不同点?

答:聚集索引会对表进行物理排序,而非聚集索引不会对表进行物理排序。

4、在哪些情况下SQL Server 2005会自动建立索引?这些索引能否用DROP INDEX语句来删除?如果不能,应当用什么方法来删除?

答:在创建或修改表时,如果添加了一个主键或惟一键约束,则系统将自动在该表上,以该键值作为索引列,创建一个惟一索引。对于通过主键和唯一约束创建的索引是不能够通过DROP INDEX来删除的。删除方法是通过删除主键约束(或唯一约束)来自动删除由该主键约束(或唯一约束)创建出来的索引。 第七章:

1、简述使用存储过程有哪些优缺点? 答:优点:

(1)通过本地存储、代码预编译和缓存技术实现高性能的数据操作。

(2)通过通用编程结构和过程重用实现编程框架。如果业务规则发生了变化,可以通过修改存储过程来适应新的业务规则,而不必修改客户端应用程序。 (3)通过隔离和加密的方法提高了数据库的安全性。 缺点:移植性较差,增加数据库服务器压力。

2、创建存储过程有哪些方法?执行存储过程使用什么命令?

答:创建存储过程有两种方法,可用通过SQL命令建立或者通过SQL Server Management