MySQL进阶三板斧(二)揭开“存储过程”的神秘面纱,腾讯云c++面试

一、MySQL存储过程的优势

==============

优点

  • 减少网络流量

存储过程有助于减少应用程序和MySQL Server之间的网络流量。因为应用程序不必发送多个冗长的SQL语句,而仅发送存储过程的名称和参数。

  • 在数据库中集中业务逻辑

你可以使用存储过程来实现可被多个应用程序重用的业务逻辑。存储过程有助于减少在许多应用程序中重复相同逻辑的工作,并使数据库更加一致。

  • 使数据库更安全

数据库管理员可以为仅访问特定存储过程的应用程序授予适当的特权,而无需在基础表上授予任何特权。

缺点

  • 资源使用

如果使用许多存储过程,则每个连接的内存使用量将大大增加。

此外,由于MySQL的逻辑操作设计不佳,因此在存储过程中过度使用大量逻辑操作会增加CPU使用率。

  • 故障排除

调试存储过程很困难。不幸的是,MySQL没有像其他企业数据库产品(如Oracle和SQL Server)那样提供任何调试存储过程的功能。

  • 维护成本高

开发和维护存储过程通常需要并非所有应用程序开发人员都具备的专门技能。这可能会导致应用程序开发和维护方面的问题。

三、实际应用

======

1. 存储过程(创建)


存储过程简称过程,procedure,是一种用来处理数据的方式存储过程是一种没有返回值的函数

#创建过程语法

Create procedure 过程名字(【参数列表】)

Begin

– 过程体

End

#创建存储过程示例

DELIMITER $$

CREATE PROCEDURE GetStudents()

BEGIN

SELECT

ID,SNAME,SEX,AGE,CLASS,GRADE,HOBBY

FROM

student

ORDER BY SNAME;

END$$

DELIMITER ;

2. 存储过程(查看)


函数的查看方式完全适用于过程,关键字换成procedure查看所有过程:

#查询所有存储过程

Show procedure status

#模糊匹配

Show procedure status [like ‘pattern’]

#示例:显示如下图

Show procedure status like ‘Get%’

# 查看该存储过程的创建语句

Show create procedure 过程名;

3. 存储过程(调用)


CALL GetStudents();

4. 存储过程(修改&删除)


过程不能直接修改,只能先删除再新增

Drop procedure 过程名;

5. 存储过程(参数类型)


函数的参数需要数据类型指定,过程比函数更严格

过程有自己的类型限定,三种类型:

  • in:数据只是从外部传入内部使用(值传递)可以是数值也可以是变量
  • out:只允许过程内部使用(不用外部数据),给外部使用的(引用传递,外部的数据会被先清空才会进入内部),只能是变量
  • inout:外部可以在内部使用,内部修改也可以给外部使用,典型的引用传递;只能传变量

基本语法:

Create procedure 过程名(过程类型 形参名字 数据类型 ,…)

– 过程参数

DELIMITER $$

create procedure demo(in int_1 int,out int_2 int,inout int_3 int)

BEGIN

– 先查看三个变量

SELECT int_1,int_2,int_3;

END$$

DELIMITER ;

调用:out和inout类型的参数必须传入 变量,而不能是数值

正确调用:

1.设置变量

2.传入变量

存储过程对于变量的操作(返回)是滞后的,是在存储过程调用结束的时候,次啊会重新将颞部修改的值赋值给外部传入的全局变量。

– 过程参数

DELIMITER $$

create procedure pro2(in int_1 int,out int_2 int,inout int_3 int)

BEGIN

– 先查看三个变量

SELECT int_1,int_2,int_3;

– 修改局部变量

SET @int_1 = 1;

SET @int_2 = 2;

SET @int_3 = 3;

– 先查看三个局部变量

SELECT int_1,int_2,int_3;

– 先查看三个全局变量

SELECT @int_1,@int_2,@int_3;

– 修改全局变量

SET @int_1 = ‘aaa’;

SET @int_2 = ‘bbb’;

SET @int_3 = ‘ccc’;

– 先查看三个全局变量

SELECT @int_1,@int_2,@int_3;

END$$

DELIMITER ;

测试:传入数据1、2、3,说明局部变量与全局变量无关

最后,在存储过程调用结果结束之后,系统会将局部变量重复返回给全局变量(out和inout)

在存储过程调用结束之后:out类型和inout类型会将过程内部对应的局部变量的值重新返回给对用的传入的全局变量。

6. 存储过程(具体参数解析)


完整创建语法如下:

--------------创建存储过程-----------------

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-5n4h97og-1712950987875)]

[外链图片转存中…(img-33yoPNbw-1712950987875)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6IGdHB6Z-1712950987876)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值