前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【重学 MySQL】七十五、揭秘存储过程的分类与实战案例,让你的数据库操作更高效!

【重学 MySQL】七十五、揭秘存储过程的分类与实战案例,让你的数据库操作更高效!

作者头像
用户11332765
发布2024-10-28 18:32:31
发布2024-10-28 18:32:31
14900
代码可运行
举报
文章被收录于专栏:编程编程
运行总次数:0
代码可运行
【重学 MySQL】七十五、揭秘存储过程的分类与实战案例,让你的数据库操作更高效!

在MySQL数据库中,存储过程是一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程的使用可以带来多方面的优势,如加快数据的处理速度、降低系统负载、提高代码复用性等。

MySQL存储过程的分类

MySQL中的存储过程根据使用特点可以分为以下两种:

  1. 基本存储过程(Basic Stored Procedure):基本存储过程不包含控制语句(如条件语句、循环语句、异常处理等),只包含一到多个SQL语句的顺序执行。它通常用于简单的数据操作或个别的业务逻辑,比如插入、更新、删除等。
  2. 复杂存储过程(Complex Stored Procedure):复杂存储过程包含控制语句和多个SQL语句的组合,其执行流程可以根据不同的条件进行分支和循环操作,还可以进行异常处理、返回参数和结果集等高级操作。复杂存储过程通常用于业务逻辑复杂、数据关联度高的场景,比如报表生成、数据处理等。

MySQL存储过程的实战案例

创建和调用无参数的存储过程

案例要求:向boys表中插入数据。

  • 创建存储过程
代码语言:javascript
代码运行次数:0
运行
复制
delimiter $
create procedure mypro1()
begin
    INSERT into boys VALUES(5,'张三',1223);
    INSERT into boys VALUES(6,'张6',1233);
    INSERT into boys VALUES(7,'张7',1243);
    INSERT into boys VALUES(8,'张8',1253);
END$
  • 调用存储过程
代码语言:javascript
代码运行次数:0
运行
复制
call mypro1();

创建和调用带IN模式参数的存储过程

案例要求:创建存储过程实现根据女生名,查找对应的男生信息。

  • 创建存储过程
代码语言:javascript
代码运行次数:0
运行
复制
delimiter $
create procedure mypro3(IN girlname varchar(20))
BEGIN
    select * from boys b right join beauty g ON b.id=g.boyfrind_id where g.name=girlname;
END$
  • 调用存储过程
代码语言:javascript
代码运行次数:0
运行
复制
call mypro3('刘岩');
call mypro3('小昭');

创建和调用带OUT模式参数的存储过程

案例要求:根据女生名,返回对应的男生名。

  • 创建存储过程(以MySQL 8.0版本为例):
代码语言:javascript
代码运行次数:0
运行
复制
delimiter $
create procedure mypro4(IN girlname varchar(20), OUT mingzi varchar(20))
BEGIN
    select b.boyname INTO mingzi FROM beauty g JOIN boys b ON g.boyfrind_id=b.id where g.NAME=girlname;
END$
  • 调用存储过程
代码语言:javascript
代码运行次数:0
运行
复制
CALL mypro4('小昭', @bName);
select @bName;

创建和调用带INOUT模式参数的存储过程

案例要求:传入a和b两个值,最终a和b都翻倍并返回。

  • 创建存储过程
代码语言:javascript
代码运行次数:0
运行
复制
delimiter $
create PROCEDURE mypr05(INOUT a int, INOUT b int)
BEGIN
    SET a=a*2;
    SET b=b*2;
END$
  • 调用存储过程
代码语言:javascript
代码运行次数:0
运行
复制
SET @c=2;
SET @d=10;
call mypr05(@c,@d);
select @c, @d;

通过以上分类和实战案例,相信你对MySQL存储过程有了更深入的了解。在实际应用中,可以根据业务需求选择合适的存储过程类型,并通过创建、调用、删除和查看等操作来管理存储过程,从而提高数据库操作的效率和性能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【重学 MySQL】七十五、揭秘存储过程的分类与实战案例,让你的数据库操作更高效!
  • MySQL存储过程的分类
  • MySQL存储过程的实战案例
    • 创建和调用无参数的存储过程
    • 创建和调用带IN模式参数的存储过程
    • 创建和调用带OUT模式参数的存储过程
    • 创建和调用带INOUT模式参数的存储过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档