数据库技术与应用第二版 课后答案资料 下载本文

答:在SELECT 语句中,定义一个区间范围的特殊运算符是BETWEEN,检查一个属性值是否属于一组值的特殊运算符是IN。

(4)在T-SQL语句中,与表达式“工资 BETWEEN 2000 AND 5000”功能相同的表达式如何写?

答:工资>=2000 AND 工资<=5000

(5)语句“SELECT * FROM 成绩表WHERE 成绩>(SELECT avg(成绩) FROM 成绩表)”的功能是什么?

答:查询成绩表中所有成绩大于平均成绩的记录 BDCBD CDACD

第5章 习题解答

1.思考题

(1)什么是聚集索引?什么是非聚集索引?它们的区别是什么?

答:聚集索引(Clustered)将数据行的键值在数据表内排序并存储对应的数据记录,使得数据表的物理顺序与索引顺序一致。非聚集索引(Non-clustered)具有完全独立于数据行的结构。数据存储在一个地方,索引存储在另一个地方。

聚集索引确定表中数据的物理顺序。非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

(2)一个表中的数据可以按照多种顺序来存储吗?一个表中能创建几个聚集索引?聚集索引一定是唯一索引吗?为什么?

答:一个表中的数据只能按照一种顺序来存储,所以一个表中只能创建一个聚集索引。 唯一索引是给所做的索引增加了唯一性的约束,添加,修改索引列中数据时,不允许出现重复值。聚集索引是唯一的,也可以不是唯一的,就看如何定义。

(3)视图和数据表的区别是什么?视图可以创建索引、创建主健、约束吗?为什么? 答:视图和数据表的区别:

1)视图是已经编译好的sql语句。而表不是。 2)视图没有实际的物理记录。而表有。 3)表是内容,视图是窗口。

4)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。 5)表是内模式,视图是外模式。

6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。 7)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 8)视图的建立和删除只影响视图本身,不影响对应的基本表。

(4)能不能基于临时表建立视图?由什么语句可建立临时表?在CREATE VIEW语句中能不能使用INTO关键字?为什么?

答:不能基于临时表建立视图。由SELECT INTO语句可建立临时表,在CREATE VIEW语句中不能使用INTO关键字。

(5)视图存储记录吗?对更新视图的操作最终都转化为对什么的更新操作?

答:视图的信息存放在系统表中,可以使用查询语句或系统存储过程进行查询。由于视图实际上并不存储记录,因此更新视图的操作最终都转化为对基表的更新操作。 ACCAA BCCAA

第6章 习题解答

1.思考题

(1)什么是存储过程?为什么要使用存储过程?

答:存储过程是SQL Server服务器中一组(预编译)的T-SQL语句的集合,是存储在数据库中的程序,这些程序是用来完成对数据库的指定操作。存储过程具有如下优点: 1) 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2) 当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而使用存储过程,只需要连接一次数据库就可以了。

3) 存储过程可以重复使用,可减少数据库开发人员的工作量。

4) 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 (2)系统存储过程和自定义存储过程有何区别?

答:最简单的区别就是系统存储过程是系统自带的,用户不可更改删除;而自定义的存储过程是用户自己编辑的。在自定义存储过程中可以调用系统存储过程。 (3)当某个表被删除后,该表上的所有触发器是否还存在?为什么?

答:因为触发器(trigger)是SQL Server数据库中一种特殊类型的存储过程,不能由用户直接调用,而且可以包含复杂的T-SQL语句。

触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。所以,当某个表被删除后,该表上的所有触发器将自动被删除。触发器主要用于强制复杂的业务规则或要求。

(4)存储过程和触发器有什么区别?什么时候用存储过程?什么时候用触发器? 答:存储过程和触发器,它们都是独立的数据库对象和存储在数据库上的特殊的程序。 存储过程由用户调用,完成指定的数据处理任务;触发器则由特定的操作触发,从而自动完成相关的处理任务。

使用触发器可以实现更强的数据完整性方面的约束。

(5)要求创建一个存储过程myproc,查询指定班级中选修指定课程的学生人数,并将查询结果通过参数返回。以下过程调用存储过程查询“材料科学0601”班中选修“C++程序设计基础”的学生人数:

CREATE PROCEDURE [myproc]

@classname VARCHAR(20), @cname VARCHAR(20), @count INT OUTPUT AS SELECT COUNT(*) FROM S_C_Info sc, st_info s, c_info c WHERE c.c_no=sc.c_no AND s.st_id=sc.st_id AND

s.Cl_Name=@classname AND c.C_Name=@cname

执行这个存储过程的语句段为: DECLARE @count int EXEC myproc '

0601','C++

' , _______ print @count 请问应在语句的下划线处填入什么内容?

答:因为题中要求将查询结果通过参数返回。所以应填写 @count OUTPUT 。 CBCDD CAADB

第7章 数据转换

1.思考题

(1)SQL Server 2008中在数据库联机或正在使用时可以执行备份操作吗?为什么? 答:SQL Server 2008备份数据库是动态的,即在数据库联机或正在使用时可以执行备份操作。尽管 Microsoft SQL Server 2008 可以在数据库正在使用时对其进行备份,但是应将备份过程安排在活动不频繁时进行,以使对用户的影响减至最小。 (2)SQL Server 2008中是否可以实现SQL Server服务器之间、以及SQL Server与其他关系型数据源或不同数据源之间进行数据的导入、导出和转换?为什么?

答:可以。因为,SQL Server提供了数据传送功能,用于实现SQL Server服务器之间、以及SQL Server与其他关系型数据源或不同数据源之间进行数据的导入、导出和转换。 其中:

导入数据帮助用户从外部数据源检索数据,并将数据插入到SQL Server表的过程。 导出数据帮助用户将SQL Server实例中的数据导出到OLE DB数据源、ODBC数据源、Excel工作表或者文本文件中。

(3)在SQL Server系统中,是否任意用户都可以进行备份数据?为什么?

答:在SQL Server系统中,只有获得许可的角色才可以备份数据,这些角色是:固定服务器角色sysadmin(系统管理员)、固定数据库角色db_owner(数据库所有者)和固定数据库角色db_backupoperator(允许进行数据库备份的用户)。或者通过授权其他角色也允许做数据库备份。

(4)磁盘备份设备是指什么?它与常规操作系统文件有什么区别?

答:磁盘备份设备就是存储在硬盘或者其他磁盘媒体上的文件,与常规操作系统文件一样。

(5)脚本是什么?用户通过SSMS可以对指定文件中的脚本进行哪些操作?脚本文件可不可以在不同的计算机之间传送?为什么?

答:脚本是存储在文件中的一系列SQL语句,是可再用的模块化代码。用户通过SSMS可以对指定文件中的脚本进行修改、分析和执行。脚本文件可以在不同的计算机之间传送,其扩展名为sql。 BDBAA DBCDD

第8章 习题解答

1.思考题

(1)SQL Server 2008提供了哪些安全管理机制?安全性管理是建立在什么机制上的? 答:SQL Server 2008提供了非常完善的安全管理机制,包括用户登录、管理和对用户 使用数据库对象的管理。SQL Server2008的安全性管理是建立在身份验证和访问许可机制上的。

(2)SQL Server 2008有几种身份验证方式?它们的区别是什么?哪种身份验证方式更安全?

答:SQL Server 2008有两种身份验证方式,即Windows身份验证模式和混合模式。 Windows 身份验证模式会启用 Windows 身份验证并禁用 SQL Server 身份验