MySQL学习之存储过程的深度理解

1.1存储过程的概述

存储过程(procedure):一组经过预先编译的SQL语句的封装。

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

与视图,函数的对比:视图是虚拟表,通常不对底层数据表直接操作。存储过程时程序化的SQL,可以直接操作底层数据表,能够实现一些复杂的数据处理。相较于函数,存储过程是没有返回值。

1.2存储过程的分类

存储过程的参数类型有IN、OUT、INOUT

Ⅰ,没有参数(无参数返回)

Ⅱ,仅带IN类型(有参数无返回)

Ⅲ,仅带OUT类型(无参数有返回)

Ⅳ,既带IN又带OUT(有参数有返回)

Ⅴ,带INOUT(有参数有返回)

1.3存储过程语法

delimiter //
create procedure 存储过程名(IN|OUT|INOUT 参数名 参数类型,....)
begin
    存储过程体
end //
delimiter;
    
MySQL 默认的语句结束符号为分号" ; " 。为了避免与存储过程中 SQL 语句结束符相冲突,需要使用
DELIMITER 改变存储过程的结束符。

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

 此外,存储函数可以放在查询语句中使用,但存储过程不行。

反之,存储过程能够执行对表操作和事务操作,则存储函数不具备。

1.5关于存储过程使用的优缺点

优点:

  • 存储过程可以一次编译多次使用。提高SQL的执行效率。
  • 可以减少开发工作量。可将代码封装成模块,模块与模块之间可重复使用。
  • 存储过程的安全性强。可设置对用户的使用权限。
  • 可以减少网络传输量。
  • 良好的封装性。一次存储过程,仅需连接一次。

缺点;

  • 可移植性差。存储过程不能跨数据库移植。
  • 调式困难。仅有少数DBMS(数据库管理系统)支持存储过程的调式,且收费。
  • 存储过程的版本管理很困难。
  • 它不适合高并发的场景。

建议:

在阿里开发规范中,【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝Mm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值