第8章 数据库习题参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章习题参考答案

1. 简要回答下列问题

⑴什么是存储过程?请分别写出使用对象资源管理器和SQL语句创建存储过程的主要步骤。

答:

存储过程:将一些T-SQL语句打包成一个数据库对象并存储在SQL Server服务器上,等到需要时,就调用这些T-SQL语句包。

--使用对象资源管理器创建存储过程的主要步骤:

①单击“开始”,选择“程序”→“Microsoft SQL Server 2005”→“SQL Server Management Studio”→“对象资源管理器”

②分别展开“数据库”→用户数据库“student”→可编程性→存储过程。

③右击“存储过程”项,在弹出的菜单中选择“新建存储过程”选项,打开“SQL 编辑器”存储过程模板文件

④在“SQL编辑器”存储过程模板文件中的相应位置填入存储过程的正文内容。

⑤单击“SQL编辑器”工具栏上的“分析”按钮,检查语法是否正确。

⑥单击“SQL编辑器”工具栏的“执行”按钮,创建这一存储过程。

⑦单击标准工具栏上的保存按钮,保存所创建存储过程的SQL代码。

--使用T-SQL语句创建存储过程的主要步骤:

①创建不带参数的存储过程的命令格式:

CREATE PROC[EDURE] procedure_name

AS sql_statements

②创建带参数的存储过程的命令格式:

CREATE PROC[EDURE] procedure_name

[{@parameter data_type}[=DEFAULT][OUTPUT]…….

[WITH {RECOMPILE | ENCRYPTION|RECOMPILE, ENCRYPTION}]

AS sql_statements

⑵如何将数据传递到一个存储过程中?又如何将存储过程的结果值返回?

答:

可以通过创建带参数的存储过程将数据传递到一个存储过程中;

通过OUTPUT关键字,在定义存储过程的变量后面加上OUTPUT,且在调用存储过程时也需在参数后面加上OUTPUT关键字以输出存储过程的结果值。

⑶同删除和重建存储过程相比,修改存储过程有什么好处?请分别写出使用对象资源管理器和SQL语句修改存储过程的主要步骤。

答:

①与删除和重建过程相比,修改存储过程不会失去许可和关联信息。

②使用对象资源管理器修改存储过程的主要步骤:

A、开始→程序→Microsoft SQL Server 2005→SQL Server Management Studio→对象资源管理器;

B、数据库→用户数据库“student”→可编程性→存储过程;

C、右击存储过程→修改;

D、在SQL编辑器中编辑存储过程的参数与T-SQL语句;

E、在SQL编辑器工具栏中选“执行”,创建这一存储过程;

F、单击“保存”。

③使用SQL语句修改存储过程的主要步骤:

ALTER PROC[EDURE] procedure_name

[{@parameter data_type}[=DEFAULT][OUTPUT]][ ,…..n]

[WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYTION}]

AS

sql_statement[,….n]

⑷写出删除存储过程stud_info_proc的语句。

答:

DROP PROCEDURE stud_info_proc

⑸什么是触发器?SQL Server有什么不同类型的触发器?

答:

触发器是一种特殊类型的存储过程,它被捆绑到数据表或者视图上,换言之,触发器是一种在数据表或视图被修改时自动执行的内嵌存储过程,主要是通过事件进行触发的,而存储过程可以通过存储过程名字被直接调用。

在SQL Server中,有INSERT触发器;UPDATE触发器;DELETE触发器。当数据表中的数据被INSERT、UPDATE、DELETE时,SQL Server自动执行触发器,使用触发器可以实施更为复杂的数据完整性约束。

⑹当一个表同时具有约束和触发器时,如何执行?

答:

要先看约束条件是什么,如果约束条件成立,则先执行约束,约束条件成立后,则不再运行触发器。所以,当一个表同时具有约束和触发器时,一般先执行约束,触发器暂不执行。

⑺举个实例,分别创建INSERT、UPDATE、DELETE触发器。

答:

A. 在数据库student的表teacher_info上创建一个teacher_trigger1触发器,当执行inser 操作时该触发器被触发。

USE student

GO

CREATE TRIGGER teacher_trigger1

ON teacher_info

FOR INSERT

AS

raiserror('unauthorized',10,1)

B. 在数据库student的表teacher_info上建立一个名为teacher_trigger3的触发器,改触发器将被update所触活,该触发器不允许用户修改表的name列。

USE student

GO

CREATE TRIGGER teacher_trigger3

ON teacher_info

FOR UPDATE

AS

IF update(name)

BEGIN

Raiserror('unauthorized',10,1)

ROLLBACK TRANSACTION

END

C. 在数据库student的表teacher_info上建立一个名为teacher_trigger4的delect触发器。

USE student

GO

CREATE TRIGGER teacher_trigger4

ON teacher_info

FOR DELETE

AS

BEGIN

raiserror('你不能删除该行',10,1)

ROLLBACK TRANSACTION

END

⑻如果触发器执行ROLLBACK TRANSACTION语句后,引起触发器触发的操作语句是否还会有效?

答:不会。

相关文档
最新文档