《数据库原理及应用教程-MySQL8.0》课件 第8章 MySQL编程.ppt

《数据库原理及应用教程-MySQL8.0》课件 第8章 MySQL编程.ppt

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

8.3.2用户定义函数IFaver1=aver2/*IF…ELSE语句的应用*/THENRETURNcn1;ELSERETURNcn2;ENDIF;END//【例8-17】判断C001和C002号课哪个平均成绩高。USEteaching;SELECTaverage1(C001,C002)AS平均成绩高的课程;8.3.2用户定义函数4.删除函数可以通过可视化管理工具的菜单界面、也可以通过SQL语句删除用户自定义函数。【例8-18】通过DROPFUNCTION语句删除average函数。USEteaching;DROPFUNCTIONaverage;8.4存储过程存储过程就是一个具有独立功能的子程序,以特定的名称存储在数据库中。8.4.1存储过程概述存储过程是SQL语句和可选流程控制语句的预编译集合,它以一个名称存储并作为一个单元处理,能够提高系统的应用效率和执行速度。存储过程是一种独立存储在数据库内的对象,可以接受输入参数、输出参数,可以返回单个值或多个结果集,也可以完成数据库中数据更新,由应用程序通过调用执行。8.4.1存储过程概述存储过程的优点:(1)模块化程序设计。只需创建一次,可在程序中调用任意次。可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。(2)加快SQL语句的执行速度。创建存储过程时对其进行分析和优化并预先编译好放在数据库内,减少编译语句所花的时间。(3)减少网络流量。一条执行过程代码的单独语句。(4)更高地安全性。可以授予用户执行存储过程的权限,而不授予其直接访问数据库对象(表、视图等)的权限。8.4.2创建存储过程MySQL创建存储过程的SQL语句语法格式如下:CREATEPROCEDUREprocedure_name([IN|OUT|INOUT][parameter_namedata_type][,…n])BEGINprocedure_body;END8.4.2创建存储过程【例8-19】在teaching库创建无参存储过程,查询每个学生的平均成绩。USEteaching;DELIMITER//CREATEPROCEDUREstudent_avg()BEGINSELECTsno,avg(score)asavgscoreFROMscGROUPBYsno;END//8.4.2创建存储过程【例8-20】在teaching库创建带输入参数的存储过程,查询某个学生的基本信息。USEteaching;DELIMITER//CREATEPROCEDUREGetStudent(numberchar(10))BEGINSELECT*FROMstudentWHEREsno=number;END//8.4.2创建存储过程【例8-21】在teaching库创建带输入参数的存储过程,修改某个学生某门课的成绩。USEteaching;DELIMITER//CREATEPROCEDUREUpdate_score(numberchar(10),cnchar(4),sc1int)BEGINUPDATEscSETscore=sc1WHEREsno=numberandcno=cn;END//8.4.2创建存储过程【例8-22】在bankcard数据库中使用流程控制语句创建存储过程。假设今天银行有活动,如果今天某账号交易支出总金额超过3000元,则奖励其10元。USEbankcard;DELIMITER//CREATEPROCEDUREadd_10(ANOchar(20))BEGINIF(SELECTSUM(Expense)FROMTrecordWHERETDate=CURDATE()ANDAccNO=ANO)=3000THENUPDATEAccountSETBalance=Balance+10WHEREAccNO=ANO;INSERTINTOTrecord(TDate,AccNO,Income,Abstract)VALUES(CURDATE(),ANO,10,银行活动奖励);ENDIF;END//8.4.2创建存储过程【例8-23】在bankcard数据库创建带

您可能关注的文档

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档