数据库习题答案(4)

2018-11-24 15:16

常常处理的是记录(元组)的集合,这个矛盾必须解决。

6. 试述预编译的作用。

宿主语言的编译系统不能识别SQL语句。解决这个问题的一般方法是,为SQL语句加 一个特殊的前缀,在用宿主语言的编译系统编译源程序之前,首先由预编译系统将SQL语句

转换为宿主语言的合法函数调用。

7. 试述游标(Cursor)的作用,并解释实现此功能的诸条语句的用途。

宿主语言一般只能在单记录方式下工作,即一次处理一个记录。而SQL语句的查询结果 常常是一张表,它包含多个记录,为此需要用游标(CURSOR)作为桥梁做一些特殊处理, 即利用游标来临时存放SQL语句的查询结果,并利用游标与宿主语言的主变量进行数据交 互。与游标有关的命令共有四条:DECLARE CURSOR、OPEN、FETCH和CLOSE。其中 DECLARE CURSOR用SQL SELECT语句说明一个游标;OPEN打开游标,即执行说明游标

的SQL SELECT语句;FETCH从游表中读一条记录到主变量;CLOSE关闭游标。

8. 试述为什么需要动态SQL语句,分析游标和动态游标的区别。

有时候在编程序时SQL语句或语句的参数和格式不能确定,应用程序只能在执行时才知 道需要什么样的SQL语句,即必须在应用程序执行时动态建立SQL语句。

定义游标的SQL语句是静态的;而定义动态游标的SQL语句是动态生成的。

习题六

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

存储过程是经过预编译的T-SQL语句的集合,它存放在数据库中,当用户执行存储过程 时,存储过程在数据库服务器上运行。

利用存储过程可以避免在网络上传输大量无用的信息或原始数据,只需要传输调用存储 过程的指令和数据库服务器返回的处理结果,这样可以大大提高网络数据库应用系统的性能。

2. 试为如下问题编写、建立存储过程,并定义合适的过程返回状态码和信息(均以图 5-1的数据库为例):

1) 插入一个新的供应商元组。 CREATE PROCEDURE ins_sup

(@sno CHAR(3),@sname CHAR (16),@addr CHAR (10)) AS

INSERT INTO 供应商 VALUES(@sno,@sname,@addr)

IF @@ERROR = 0

RETURN 0

ELSE

RETURN -1

2) 给指定城市的所有仓库增加x m2的面积。 CREATE PROCEDURE upd_wh_area

(@city char(10),@area numeric) AS

UPDATE 仓库 SET 面积=面积 + @area WHERE 城市=@city

IF @@ERROR = 0

RETURN 0

ELSE

RETURN -1

3) 检索某职工发给某供应商的订购单信息。 CREATE PROCEDURE get_ord

(@eno CHAR(4),@sno CHAR(3)) AS

SELECT * FROM 订购单 WHERE 职工号=@eno AND 供应商号=@sno

IF @@ERROR = 0

RETURN 0

ELSE

RETURN -1

4) 检索在某城市工作并且向某供应商发了订购单的职工号。 CREATE PROCEDURE get_eno

(@city CHAR(10),@sno CHAR(3)) AS

SELECT 职工号 FROM 职工 WHERE 仓库号 IN

(SELECT 仓库号 FROM 仓库 WHERE 城市=@city) AND 职工号 IN

(SELECT 职工号 FROM 订购单 WHERE 供应商号=@sno)

IF @@ERROR = 0

RETURN 0

ELSE

RETURN –1

3. 试述触发器的概念和作用。

触发器可以看作是一类特殊的存储过程,它在满足某个特定条件时自动触发执行。触发 器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时 触发器将执行。

触发器可以用于数据参照完整性和以下一些场合:

.. 触发器可以通过级联的方式对相关的表进行修改。比如,对父表的修改,可以引起 对子孙表的一系列修改,从而保证数据的一致性和完整性。 .. 触发器可以禁止或撤消违反参照完整性的修改。

.. 触发器可以强制比用CHECK约束定义更加复杂的限制。

4. 利用触发器为图5-1数据库的订购单关系建立参照完整性。。

建立插入触发器

CREATE TRIGGER ord_ins_trigger

ON 订购单 FOR INSERT AS

IF ((SELECT COUNT(*) FROM 职工 e,INSERTED i

WHERE e.职工号=i.职工号)=0 OR

(SELECT COUNT(*) FROM 供应商 s,INSERTED i

WHERE s.供应商号=i. 供应商号)=0)

BEGIN

RAISERROR ('非法职工号或非法供应商号', 1, 1)

ROLLBACK TRANSACTION

END

建立更新触发器 略

习题七

1. 讨论数据库安全都与哪些安全问题有关?

数据库安全实际涉及到很多方面,除了数据库管理系统应该具有安全保护功能之外,还 需要从管理机制、人员行为、操作系统安全和网络安全等多个方面采取措施。

2. 试述数据库的自主存取控制和强制存取控制的区别和各自的特点。

自主存取控制的特点是由用户“自主”地控制数据库对象的访问权限;而强制存取控制 的特点是严格的分层次管理,有严格的等级制度。

3. 试述角色管理在数据库安全控制中的作用。

角色管理类似于用户组的管理,可以将数据库的所有用户划分成不同的角色,这样可以 简化用户管理,使用户管理和权限管理更加简洁、清楚。

4. 试述SQL Server的系统预定义角色为安全管理提供了哪些便利。

SQL Server的系统管理是由系统管理员(默认是sa用户)负责的,而系统预定义角色正 是系统管理员职责的分解,通过一些系统预定义角色的用户来协助系统管理员进行管理,可 以减轻系统管理员(sa用户)的工作负担,对系统管理来说又有更明确的职责划分。


数据库习题答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:00938组织行为学全复习资料及试题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: