数据库原理与应用(MySQL版) 第7章 SQL扩展编程 习题答案.docx

数据库原理与应用(MySQL版) 第7章 SQL扩展编程 习题答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第7章SQL扩展编程习题参考答案

选择题

1.下列不属于存储过程作用的是

A.能够根据数据更改操作自动执行

B.能够实现模块化程序设计

C.可以减少网络流量

D.可作为安全机制使用

答案:A

2.下列有关存储过程的叙述,错误的是

A.MySQL允许在存储过程创建时引用一个不存在的对象

B.存储过程可以带多个输入参数,也可以带多个输出参数

C.使用存储过程可以减少网络流量

D.在一个存储过程中不可以调用其他存储过程

答案:D

3.下列不能引发触发器执行的操作是

A.INSERT

B.DELETE

C.SELECT

D.UPDATE

答案:C

4.MySQL为触发器创建的两个临时表是

A.max?和?min

B.avg?和?sum

C.int?和?char

D.old?和?new

答案:D

5.下列说法错误的是

A.触发器触发时机有BEFORE、AFTER两种

B.对于同一张数据表,只能定义一个触发器

C.由INSERT操作引发的触发器,NEW临时表用来保存新插入的数据

D.OLD临时表中的数据是只读的,不能被更新

答案:B

二、简答题

存储过程的作用是什么?

答:(1)允许模块化程序设计

(2)改善性能

(3)减少网络流量

(4)可作为安全机制使用

存储过程和函数有哪些共同点和不同点?

答:相同点:都是数据库系统中一组为了完成特定功能的SQL语句块,它将常用或复杂的工作预先用SQL语句编写脚本并指定名称存储在数据库服务器中,可以包含控制语句,有很强的灵活性,可以完成复杂的数据操作功能。

不同点:

(1)自定义函数不能有输出参数,这是因为自定义函数自身就是输出参数;而存储过程可以有输出参数。

(2)自定义函数的函数体中必须包含一条RETURN语句,而存储过程不需要。

(3)自定义函数是在SELECT语句中调用执行的,而存储过程是通过CALL语句调用执行的。

存储过程的参数有哪几种形式?

答:in:输入参数(默认情况下为in参数),该参数的值在调用时指定。

?out:输出参数,存储过程运行过程中可以对该类参数赋值,起到将计算结果返回给调用程序的作用。

inout:既是输入参数,又是输出参数,该参数的值可在调用时指定,又可以将计算结果返回给调用程序。

存储过程和函数如何将结果返回给调用者?

答:存储过程:通过OUT或INOUT参数返回结果。

函数:通过RETURN语句返回单个值。

什么是触发器?触发器和存储过程主要区别是什么?

答:触发器是存储数据库中的一段完成特定功能的SQL语句集合。

触发器和存储过程主要区别是触发器是由对数据进行的更改操作触发自动执行,这些操作包括INSERT、UPDATE、DELETE等。

触发器的主要作用是什么?

答:当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。触发器通常用于保证业务规则和复杂数据完整性。

三、编程题

请根据books、students和borrow表,编写实现下列要求的代码。

定义变量num,统计所有图书的平均价格,将值赋给变量num并显示num的值。

答:--定义变量并计算平均价格

SET@num=(SELECTAVG(price)FROMbooks);

--显示变量值

SELECT@numASaverage_price;

定义存储过程,输入参数是图书类型,求该类型的图书总数量,写出定义语句和调用语句。

答:

--定义存储过程

DELIMITER//

CREATEPROCEDUREGetBookCountByType(INbook_typeVARCHAR(50))

BEGIN

SELECTCOUNT(*)AStotal_countFROMbooksWHEREtype=book_type;

END//

DELIMITER;

--调用存储过程

CALLGetBookCountByType(小说);

定义存储过程,输入参数是出版社、出版年份,输出参数是图书数量,统计指定年份该出版社出版的图书数量,写出存储过程定义语句和调用语句。

答:

--定义存储过程

DELIMITER//

CREATEPROCEDUREGetBookCountByPublisherAndYear(

INpublisher_nameVARCHAR(100),

INpublish_yearINT,

OUTbook_countINT

)

BEGIN

SELECTCOUNT(*)INTObook_count

FROMbooks

WHEREpress=publisher_nameANDYE

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档