MySQL教程详解之存储过程(一)

什么是存储过程

SQL基本是一个命令实现一个处理的,是不能编写处理流程的。虽然通过子查询、多表连接等方式能实现一些高级的功能,但是具有很大的局限性。对于SQL本身是很难实现针对不同条件进行不同的处理或者循环等功能。即使能够实现,也是十分复杂或者对于性能有极大的影响。存储过程(Stored Procedure)就应运而生,它可以由SQL语句和各种条件判断、循环控制等语句组成,简单的说:存储过程像相互之间有联系的SQL语句组成的“小程序”。因为SQL的执行是需要经历一个:解析->编译->执行的过程的。存储过程是提前经过解析和编译存储在数据库中的,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

存储过程的作用

提高执行性能:

因为存储过程是提前创建并保存在数据库中的,当执行命令时,就能免去解析和编译的过程,能减轻数据库的负担,提高执行性能。

可减轻网络负担:

因为存储过程的执行,只需要客户端传递对应的参数即可,并不需要多次传递SQL命令本身,可以大大的减轻网络负担,减少彼此之间的通信量,整体提高数据库性能。

提高数据库的安全性:

存储过程禁止了对表本身的访问,只赋予用户对相关存储过程的访问权限。同时存储过程将数据处理部分“黑匣子化”后,程序本身的可读性和简洁性都会有所增加。用户不需要考虑存储过程的内部实现,只需要知道应该调用哪个存储过程即可。

如何使用存储过程

创建存储过程

创建存储过程使用的是【CREATE】语句,具体语法如下:

上面提到的参数种类,主要分为下面三种类型:

对于参数的数据类型,可参考这篇博文: 史上最简单MySQL教程详解(基础篇)之常用表操作和表参数介绍

在创建存储过程之前呢,还有下面几个要点需要掌握。

DELIMITER改变分隔符

【DELIMITER】是MySQL用来改变监视器中分离符的命令。默认的分隔符是【;】,但是,存储过程本身就是命令的集合,所以一定还会含有其他的分隔符。那么它们彼此之间冲突和混淆,所以在创建存储过程之前,我们需要将默认符换成一个完全无关的符号,只要不与其他关键字发生歧义即可,通常使用的是【//】。在完成创建之后,我们再将其回复即可。但需要提醒的是:分隔符的改变只会在启动期间有效,重新启动后,会自动恢复到默认状态。

可使用的控制语句

简单分支

多重分支

循环控制(后置判断)

循环控制(前置判断)

开始创建存储过程

这样我们就创建了一个【spstudent】的存储过程。如果我们传入参数【pname】,那么他就会进行模糊查询,否则就无条件查询。

确认存储过程

我们确认存储过程使用的是【SHOW】语句,具体语法如下:

例如:

结果集参数解释:

除此之外,还能使用下面的语句确认:

例如:

这个会返回一些安全的设置信息,并且名称都会被单引号(‘ ’)括起来。

使用存储过程

使用存储过程,使用的是【CALL】命令,具体语法如下:

例如:

删除存储过程

删除已经创建的存储过程使用【DROP】语句,具体语法如下:

例如:

参考文献:

MySQL存储过程详解

《MySQL高效编程》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180913G1S53O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券