MySQL的存储过程总结及练习

1. MySQL的存储过程

1.1 什么是存储过程及作用

1.1.1 什么是存储过程

存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用“CALL存储过程名字”即可自动完成。
【人话】:把特定功能封装成一个函数,这个函数可以单独直接调用返回结果,也可以传入参数返回相关结果。

使用案列: 为了确认学生能否毕业,需要同时查询学生档案表、成绩表和综合表,此时就需要使用多条 SQL 语句来针对这几个数据表完成处理要求,有些内容需要重复使用,则可把多次重复的内容进行封装,需要使用时,调用即可。

1.1.2 存储过程的优点

  1. 增强SQL语句的功能和灵活性与封装性: 将复杂的内容进行封装,随时调用,可改可删
  2. 可减少网络流量:存储过程是在服务器端运行的,且执行速度快,当调用时,只启动该调用的语句,从而可降低网络负载。
  3. 提高数据库的安全性和数据的完整性:存储过程可以将部分表或者表的部分内容作为接口,供客户使用。这样,客户不能直接操作数据库,只能使用存储过程来操作对应的表,因此在一定程度上,安全性是得到一定提高的。
  4. 使用数据独立:存储过程把数据同用户隔离开来,优点就是当数据表的结构改变时,调用表不用修改程序,只需要数据库管理者重新编写存储过程即可。

1.2 MySQL存储过程的基本操作

1.2.1 MySQL创建存储过程

可以使用 CREATE PROCEDURE 语句创建存储过程,语法格式如下:

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>

案列:

-- 创建一个从学生信息表中获取学生的姓名和分数的存储过程
-- 修改结束符,为了后面判断创建的存储过程结束
delimiter $$
CREATE PROCEDURE test BEGIN
	SELECT
		stu_name,
		stu_score 
	FROM
		stu;
	
END $$ -- 将判断符修改回;

delimiter;

1.2.2 MySQL查看存储过程

直接用下面语法查看:

SHOW PROCEDURE STATUS LIKE 存储过程名;

拓展:
存储过程的信息都存储在 information_schema 数据库下的 Routines 表中,可以通过查询该表的记录来查询存储过程的信息,SQL 语句如下:

SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME=存储过程名;

在 information_schema 数据库下的 routines 表中,存储着所有存储过程的定义。所以,使用 SELECT 语句查询 routines 表中的存储过程和函数的定义时,一定要使用 routine_name 字段指定存储过程的名称,否则,将查询出所有的存储过程的定义。

1.2.3 MySQL修改存储过程

MySQL 中修改存储过程的语法格式如下:

ALTER PROCEDURE 存储过程名 [ 特征 ... ]

提示:ALTER PROCEDURE 语句用于修改存储过程的某些特征。如果要修改存储过程的内容,可以先删除原存储过程,再以相同的命名创建新的存储过程;如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。

1.2.4 MySQL删除存储过程

删除语法:

DROP PROCEDURE [ IF EXISTS ] <过程名>

2. MySQL的存储过程函数

2.1 存储过程之传入参数—in

在这里插入图片描述

案列:
在这里插入图片描述

2.2 存储过程之传入参数—out

在这里插入图片描述
案列:返回内容
在这里插入图片描述
在这里插入图片描述

2.2 存储过程之传入参数—inout

在这里插入图片描述
案例:
在这里插入图片描述

2.3 存储过程之流程控制—if

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 存储过程之流程控制—case

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 存储过程之流程控制—循环语句

加粗样式

参考

https://www.bilibili.com/video/BV1iF411z7Pu?p=112
http://c.biancheng.net/view/7234.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值