MySQL存储过程

存储过程简介

5.0 版本才开始支持
 是一组为了完成特定功能的SQL语句集合
 比传统SQL速度更快、执行效率更高

存储过程的优点

执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
SQL语句加上控制语句的集合,灵活性高
在服务器端存储,客户端调用时,降低网络负载
可多次重复调用,可随时修稿,不影响客户端调用
可完成所有的数据库操作,也可控制数据库的信息访问权

为什么要用存储过程?

1.减轻网络负载;2.增加安全性

创建存储过程

使用CREATE PROCEDURE语句创建存储过程
创建存储过程的语法结构
CREATE PROCEDURE <过程名>[过程参数[,...]]<过程体>  //尽量避免与内置的函数或字段重名  <过程体>:mysql语句
[过程参数[,...]]格式
[IN|OUT|INOUT] <参数名><类型>

参数分为

输入参数:IN(默认参数)
输出参数: OUT
输入/输出参数: INOUT

存储过程的主体部分,被称为过程体

以BEGIN开始,以END结束,若只有一条SQL语句,则可以省略BEGIN-END
以DELIMITER ;//分号前有空格

mysql> DELIMITER $$ //结束符是用户自定义
/

/省略存储过程其他步骤
mysql> DELIMITER ; //分号前有空格

带参数的存储过程

mysql> use stu; //进入数据库
mysql> show tables;
delimiter $$ //定义一个结束符号(在表中才能使用,即需要进入数据库)
创建一个存储过程,不带参数

在这里插入图片描述

改变结束符号,并调用过程名称

在这里插入图片描述

带参数的存储过程

目的:获取wangwu的成绩,参数类型为in

在这里插入图片描述

:结束符号自己定义 
创建一个存储过程,名字为c  in:表示参数类型,传入  (定义一个名称不能与表内名称相符)

在这里插入图片描述

验证:参数类型之间的比较(in,out,inout)
IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结1:in和inout参数会将全局变量的值转入存储过程中,而out参数不会将全局变量的值传入存储过程中。在存储过程使用中,参数值in、out、inout都会发生改变
在这里插入图片描述

总结2:调用完存储过程后,发现in参数不会对全局变量的值引起变化,而out和inout参数调用完存储过程后,会对全局变量的值产生变化,会将存储过程引用后的值给全局变量。
in参数赋值类型可以是变量还有定值,而out和inout参数赋值类型必须是变量。

调用存储过程

show procedure status where db='数据库'

查询存储过程

show procedure status where db='数据库'
在这里插入图片描述

删除存储过程

在这里插入图片描述

修改存储过程

存储过程的修改分为特征的修改和业务内容的修改。
特征的修改语法结构如下:

alter procedure 存储过程名 [ <特征>]
存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储 过程。

存储过程示例:
存储过程中只加入了一条select语句:

在这里插入图片描述

根据调用存储过程输入的实际参数进行查询:

在这里插入图片描述

根据调用存储过程输入的实际参数进行判断,对zhangsan用户的level字段和hobby字段进行修改:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值