- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 数据库原理与应用(MySQL版) 第1章 数据库概述 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第2章 数据模型与数据库结构 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第3章 关系数据库 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第4章 SQL语言基础及基本表的定义 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第5章 数据操作语句 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第6章 索引和视图 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第8章 关系规范化理论 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第9章 数据库设计 习题答案.docx
- 数据库原理与应用(MySQL版) 第10章 事务与并发控制 习题参考答案.docx
- 数据库原理与应用(MySQL版) 第11章 安全管理 习题答案 .docx
文档评论(0)