MySQL之存储过程与存储函数

存储过程

含义:对预先编译的sql语句的封装

过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器发出调用存储过程的指令,服务器就可以把预先存储好的这一系列sql语句全部执行。

好处:简化操作,提高sql语句的复用性,减少开发程序员的压力,提高效率。

          减少网络传输量(客户端不需要把所有的sql语句传给MySQL服务器)

          减少sql语句在网络暴露的风险

坏处:1、可移植性差。存储过程不能跨数据库移植,比如在MySQL、Oracle和sQL Server里编写的存储过程,在换成其他数据库时都需要重新编写。
         2、调试困难。只有少数DBMS支持存储过程的调试。对于复杂的存储过程来说,开发和维护都不容易。虽然也有一些第三方工具可以对存储过程进行调试,但要收费。
          3、存储过程的版本管理很困难。比如数据表索引发生变化了,可能会导致存储过程失效。我们在开发软件的时候往往需要进行版本管理,但是存储过程本身没有版本控制,版本迭代更新的时候很麻烦。

           4、它不适合高并发的场景。高并发的场景需要减少数据库的压力,有时数据库会采用分库分表的方式,而且对可扩展性要求很高,在这种情况下,存储过程会变得难以维护,增加数据库的压力,显然就不适用了。
小结:

创建存储过程:

基本语法:

delimiter $  #设置新的结束标记

create procedure 储存过程名【in 参数名 参数类型|out 参数名 参数类型|inout 参数名 参数类型】

(charactercis 存储过程的约束)可省略

begin

           过程体

        赋值语句:select 字段 into 参数名;

end $

delimite;

代码举例:

 调用存储过程

                        call 存储过程名(参数);

存储函数:

基本语法:

create function 函数名(参数名 参数类型....)

returns 返回值类型

【characterics 约束条件】

使用 SET GLOBAL log_bin_trust_function_creators  = 1;就不需要添加上面的约束条件

begin

   函数体 #一定会有return (select 语句)语句

end

调用函数

                       select 函数名(参数);

存储过程与存储函数的对比 

 存储过程与存储函数的查看、修改、删除

 查看show create 【procedure|function】 名字[\g];

 修改alter 【procedure|function】 名字【 characterics...】

          

 删除drop 【procedure|function】名字;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值