数据库原理及应用教程(第5版)(微课版)第7章习题答案.pdf
第7章习题答案:
一、选择题
1.B2.A3.D4.C5.B6.A7.C8.A9.B10.B
11.D12.A13.C14.D15.B
二、填空题
1.局部全部
2.--/**/
3.DECLARE
4.AFTERINSTEADOF
5.DML触发器、DDL触发器、登录触发器
6.DELETEDINSERTED
7.4
8.EXECsp_stored_procedures
9.EXECsp_helptextProc1
10.CASTASDATE)或CONVERT(DATE
三.简答题
1.答:触发器是一种由Transact-SQL语句编写的、存储在数据库或相应的数据表中的
特殊的存储过程,但它的执行不是用EXECUTE命令显式调用,而是在满足一定条件下自动
激活而执行,如向表中插入﹑更新或者删除记录时被系统自动地激活并执行,根据激活情况
的不同,可以创建DML触发器、DDL触发器和登录触发器。
触发器的主要作用:
当对数据库或数据表进行相关操作时,如满足激发的条件,触发器可以被自动激发而执
行,因此,可以有针对性地创建相关的触发器,起到以下主要作用
(1)对数据表的INSERT、UPDATE和DELETE操作进行限制或进行相关的操作,维
护数据表之间的连接关系或数据完整性,可以防止恶意的或错误的数据表记录操作。
(2)将用户对数据库的操作约束在一定的条件范围内,如防止误删数据表、修改数据
表或增加数据表等。
2.答:存储过程具有以下优点:
(1)增强了SQL语言的功能和灵活性。存储过程中可用流程控制语句对SQL语句的
执行流程进行控制,有很强的灵活性,可以实现复杂的功能。
(2)可被多次重复调用。创建好的存储过程被存储在其隶属的数据库中,以后可以被
多次调用。
(3)能实现更快的执行速度。存储过程是预编译的,存储过程在创建时,SQLServer
就对其进行编译、分析和优化,并且给出最终被存储在系统表中的执行计划。在第一次被执
行后,存储过程就存储在服务器的内存中,这样应用程序在执行时就可以直接调用内存中的
代码执行,无须再次进行编译,这就大大加快了执行速度。
(4)减少网络流量。对存储过程的调用,网络中传送的只是调用语句,而不需要在网
络中传送存储过程中的每一条SQL语句代码,从而大大降低了网络流量。
(5)存储过程可作为一种安全机制来利用。可设定只有某用户才具有对指定存储过程
的使用权,从而实现对相应数据访问权限的限制,避免了非授权用户对数据的访问,保证了
数据的安全性。
存储过程的缺点
(1)移植性差。在某种数据库系统上编写的存储过程,难以直接移植到另外一种数据
库系统中。
(2)难以调试、维护。由于数据库系统一般没有自带的较好的调试器,对代码功能的
调试不方便。
(3)无法应用缓存。只能使用全局临时表之类的方法可以做数据缓存,但这样加重了
数据库服务器的负担。
(4)服务器不能负载均衡。存储过程的执行全部在服务器端完成,这就把业务处理的
负担压在数据库服务器上了,无法通过中间层来灵活分担负载和压力均衡负载等。
3.答:创建触发器t_tr的代码如下所示:
USETeachingDB
GO
CREATETRIGGERt_trONT
AFTERDELETE
AS
DELETEFROMTC
WHERET.TNo
IN(SELECTTNoFROMDELETED)
GO
4.答:创建触发器db_tr的代码如下所示:
USETeachingDB
GO
CREATETRIGGERdb_tr
ONDATABASE
FORCREATE_TABLE
AS
PRINT不能创建数据库表!
ROLLBACK
GO
5.答:创建函数CountStudents的代码如下所示:
USETeachingDB
GO
CREATEFUNCTIONCoun