ORACLE与数据库原理作业 习题八(答案全)

首先声明:这个是我尽力自己做的,不能保证百分之百正确,毕竟老师没发答案给我对

一、选择题

  1. 在 SQL Server 中,存储过程是一组保存在服务器上的预先定义并(  B )的 T-SQL 语句。 A.保存           B.编译             C.解释              D.编写
    
  2. 在 SQL 语言中,建立存储过程的命令是( A )。
    

A.CREATE PROCEDURE B.CREATE RULE
C.CREATE DURE D.CREATE FILE
3. 如果要从数据库中删除用户自定义存储过程, 应该使用 SQL 语言的命令( D ) 。
A.DELETE PROCEDURE B.DROP PROC
C.REMOVE PROC D.DISABLE PROCDURE
4. 执行带参数的存储过程, 正确的方法为( A )。

A. EXEC 过程名 参数
C. EXEC 过程名=参数

B. EXEC 过程名(参数)
D.以上三种都可以

  1. 下面关于存储过程的叙述错误的是(D
    

A.允许在存储过程创建时引用一个不存在的对象。
B.存储过程可以带多个输入参数,也可以带多个输出参数。
C.使用存储过程可以减少网络流量。
D.在一个存储过程中不可以调用其它存储过程。
6. 下面关于触发器的叙述错误的是(B。 A.触发器是一个特殊的存储过程。
B.触发器不可以引用所在数据库以外的对象。
C.在一个表上可以定义多个触发器。
D.触发器可以实现比check 约束更复杂的完整性控制。
7. 替代触发器(instead of)是在触发触发器的修改操作( B)执行。
A.执行后 B.停止执行时 C.同时 D.之前
8. 触发器是一种特殊类型的存储过程, 被捆绑到( A )。
A.数据表 B.索引 C. 数据库 D. 函数
9. 触发器可引用视图或临时表,并产生两个特殊的表是( C)。

A.Deleted 、Inserted
C.View 、Table

B.Delete 、Insert
D.View 、 Delete

二、判断题

  1. 存储过程的输出结果可以传递给一个变量。对
    
  2. 自定义函数在对任何表的查询中都可以使用。对
    
  3. 由于存储过程和函数都是有输入参数的,因此在 SELECT 查询中也可以调用存储过程。错
    
  4. 由于触发器是特殊类型的存储过程, 因此它可以在程序中被调用执行。错
    
  5. 创建存储过程必须在企业管理器中进行。错
    
  6. DML 触发器主要是通过表操作事件进行触发而被执行的。对
    

三、填空题

  1.  存储过程      是已经存储在 SQL Server 服务器中的一组预编译过的 Transact-SQL 语句。
    
  2. DML 触发器定义在一个表中, 当在表中执行  插入      、    更新   或     删除   操作时被 触发自动执行。
    
  3. 按照触发器和触发器事件的操作时间划分,可以把 DML 触发器分为  AFTER     触发器和
    

INSTEAD OF触发器。
4. 如果要使用触发器操作替代表上的触发事件的操作,可以定义 替代类型的触发器。
5. 当存储过程的参数带有 @parameter =value 限定语时,表明该参数为返回参数,可以通过该参数向过 程外传递信息。
6. 每个触发器有 插入表 和 删除表 两个特殊的表在数据库中。
7. 无论是存储过程还是触发器,都是 SQL 语句和过程控制语句的集合。

四、简答题

  1. 什么叫存储过程?使用存储过程的优点是什么?
    存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    用SQL 语句,在应用程序中直接调用存储过程有以下好处:
    (1)减少网络通信量。
    调用一个行数不多的存储过程与直接调用SQL 语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL 语句,那么其性能绝对比一条一条的调用SQL 语句要高得多。
    (2)执行速度更快。
    有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。
    (3)更强的适应性。
    由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。
    (4) 分布式工作。
    应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。
  2. 存储过程与触发器有什么不同?
    触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。
  3. 触发器的作用有哪些?
    触发器的主要作用是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。它能够对数据库中的相关表进行级联修改,强制比CHECK约束更复杂的数据完整性,并自定义操作消息,维护非规范化数据以及比较数据修改前后的状态。与CHECK约束不同,触发器可以引用其它表中的列。在下列情况下使用触发器实现复杂的引用完整性;强制数据间的完整性。创建多行触发器,当插入,更新、删除多行数据时,必须编写一个处理多行数据的触发器。执行级联更新或级联删除这样的动作。级联修改数据库中所有相关表。撤销或者回滚违反引用完整性的操作,防止非法修改数据。
  4. SQL SERVER 中提供了哪几种类型的触发器?

DDL触发器、DDL触发器和登录触发器

  1. 建立存储过程有几种方法?

创建存储过程可以通过一下两种方法进行:
1.使用SQL Server Management Stuodio 创建存储过程
2.使用CREATE PROCEDURE 语句创建存储过程

  1. Deleted 表和 Inserted 表有何作用?
    inserted表和deleted表用于存放对表中数据行的修改信息,他们是触发器执行时自动创建的,放在内存中,是临时表。当触发器工作完成,它们也被删除。它们是只读表,不能向它们写入内容。

inserted表:用来存储INSERT和UPDATE语句所影响的行的副本。意思就是在inserted表中临时保存了被插入或被更新后的记录行。在执行 INSERT 或UPDATE 语句时,新加行被同时添加到inserted表和触发器表中。因此,可以从inserted表检查插入的数据是否满足需求,如不满足则回滚撤消操作。

deleted表:用来存储DELETE和UPDATE语句所影响行的副本。意思是在delete表中临时保存了被删除或被更新前的记录行。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传到deleted表中。所以可以从deleted表中检查删除的数据行是否能删除。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m明月Java3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值