十七、MySQL数据库之存储过程A_认识存储过程、创建、调用、删除存储过程

这个是MySQL中倒数第二个比较重要的概念,而且以后会用的比较多,希望大家好好学习。

学习之前还得和大家说一下,还有一个东西叫做存储函数,原本打算扔到一起去说,但是发现不行,怕搞混了,一个一个来吧,今天把这个存储过程说完,分AB两讲,然后明天弄这个存储函数。

存储过程

老样子,直接百科

存储过程是在大型的数据库系统中,为了完成特定功能的SQL语句集合,一次编译好,一直都可以使用,用户通过存储过程的名字,并且给定参数,然后就可以调用执行了。

这个存储过程是在MySQL中存放和执行的,也就是说,这样可以减少服务端和数据库的交互。

简单知道了以后,我们再来说说如何去创建存储过程。

创建存储过程

创建存储过程,同样我们需要用到命令以及特定的关键词,直接上

CREATE PROCEDURE 存储过程的名字(参数1, 参数2,参数3...)
存储过程的特性 
具体的执行体;

差不多就这些内容,然后我们仔细来说一下啊。

首先是关键词,PROCEDURE,就是这个定义存储过程的关键词啊。

然后是参数,这里呢,每个参数都是由三个小部分组成,这三个部分分别是:输入输出类型 参数的名称 参数的类型。举例:

(IN 或者 OUT 或者 INOUT) 参数名字xxx 类型,其中IN表示的就是输入,OUT就是输出,最后组合起来的INOUT就是输入输出,也就是既可以是输入,也能是输出。后面的类型,就是MySQL数据库的数据类型,比如 int  varchar等等

接着就是存储过程的特性,这个东西比较多,大家仔细看

1. LANGUAGE SQL:这个说明我们的这个具体执行体是由一个或者多条SQL语句组成。

2. (NOT) DETEMINISTIC:指明存储过程中执行的结果是不是确定的,默认呢,是不确定的,也就是FALSE。

啥叫确定的,就是我们每次调用这个存储过程时候,相同的输入等于相同的输出,这个就是确定的,好比我们输入了 1 和 1 ,然后存储过程计算的是和,不管我们啥时候输入 1 和 1 ,答案都是 2 ,这就说明这个是确定的,不确定的就是 1 和 1 有时候输出 2,有时候输出 6 ,这个就是不确定。

3. CONTAINS SQL 或 NO SQL 或者 READS SQL DATA 或者 MODIFIES SQL DATA:这些指明的是子程序使用SQL语句的限制

CONTAINS SQL:这个的意思是包含SQL,具体是指,子程序包含SQL语句,但是不包含读写的语句。

NO SQL:这个很简单啊,就是表示子程序中不包含SQL语句。

READS SQL DATA:这个就是子程序中包含读数据的语句。

MODIFIES SQL DATA:最后这个就是子程序中包含写数据的语句。

默认的,我们是使用的CONTAINS SQL,但是啊,这个特征并不是限制!!!

 

好,解释完以后,我们来写一个简单的存储过程吧

这个存储过程主要是计算某个性别的学生个数。这里需要指明这个sex是那里的,不然数据库就会懵圈。

很明显啊,OK的,已经创建好了,。

调用存储过程

上面呢,我们创建好了这个存储过程,然后我们来调用一下它,怎么调用呢?

我给出命令

CALL 存储过程的名字(变量1,变量2..., 返回值);

我们再说一下这个返回值,我们上面存储过程返回了一个countNumber,我们怎么去接收呢?

我们需要用到一个东西,叫会话变量

会话变量

MySQL中有两种会话变量,一个是全局会话变量,一个是局部会话变量,我们这里的存储过程就是使用的局部的。

全局会话变量有很多,我们可以使用SQL去查询一下有那些。

SHOW VARIABLES;

我当前的这个MySQL 8.0.19版本是 579 个,然后我们来使用这个其中几个。

我们可以查看到当前版本哦,再来几个

全局变量啊,是存放在我们的MySQL中的,这个就是跟着MySQL的,也就是MySQL内置的一些变量,就类似配置文件一样。

局部变量,就好比这个存储过程,我们就用这一次,用完就没有了。

更重要的是,我们可以使用@去做区分,一个@,就是代表的局部变量,两个@,就是全局。

知道了这个之后,我们来调用一下刚刚的存储过程。

OK的,没有错啊,性别是1的学生就是5个。

删除存储过程

删除是最简单的,怎么删呢?

DROP PROCEDURE 存储过程的名字;

就这样,我们来删除一下这个存储过程

删除掉了,我们再执行一下这个存储过程。

已经不存在了。

 

今天就讲述这么多,剩下的我们明天说。大家有不懂的地方可以问我,加我QQ:2100363119

点点关注哦~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

他 他 = new 他()

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

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

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

打赏作者

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

抵扣说明:

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

余额充值