前言
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云社区专家博主😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
可以关注我的云原生社区:云原生社区
也可以关注我的英语社区:从零开始学英语
文章目录
mysql存储过程的概念
百科中超难理解的版本:
MySQL 的存储过程(Stored Procedures)是一组预先定义好的 SQL 语句集合,这些语句会经过编译并存储在数据库中,可以在需要时被调用执行。存储过程可以接受输入参数、返回输出结果,并且具有复杂的逻辑处理能力。
修正后的版本:
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
还是不理解的话,看这里:
存储过程,你可以理解为类似于shell脚本中的函数,只不过函数是一组shell命令的组合,而存储过程是一组SQL语句的组合。
存储过程的优缺点
1. 存储过程的优点
-
提高性能:存储过程在数据库服务器端执行,减少了与数据库服务器之间的通信开销。相比于每次向服务器发送一个查询请求,使用存储过程可以将复杂的逻辑封装在数据库内部,并通过一次调用执行多个 SQL 语句,从而减少了网络流量和服务器资源开销,提高了执行效率。
-
重用性和模块化:存储过程可以在多个应用程序中重复使用,避免了重复编写相同的 SQL 语句逻辑。它们提供了一种模块化的方式来组织和管理数据库逻辑,使得开发人员可以专注于业务逻辑层面的实现,提高了开发效率。
-
降低代码复杂性:存储过程可以封装复杂的业务逻辑和数据操作,并暴露简单的接口供应用程序调用。这样可以将复杂性从应用程序中移除,使得应用程序的代码变得更简洁、清晰,易于维护和理解。
-
数据安全性:存储过程可以对用户的权限进行控制,为数据库提供了一种更强大的访问控制机制。通过存储过程,可以限制对特定数据表和数据字段的访问,确保只有授权的用户能够执行特定的操作,提升了数据库的安全性。
-
事务管理和数据一致性:存储过程可以嵌入事务语句,提供了对复杂操作的原子性执行和数据一致性的保证。通过使用存储过程,可以确保在一次调用中执行的所有 SQL 操作要么全部成功提交,要么全部回滚,避免了因为异常情况导致的数据不一致问题。
-
性能优化和查询优化:存储过程可以对复杂的查询语句进行优化,通过使用合适的索引、查询重写和查询优化技术,提高查询性能。此外,存储过程还可以缓存查询计划,避免了每次执行查询时重新生成查询计划的开销,提升了查询效率。
2. 存储过程的缺点
- 可移植性差;
- 对于简单的SQL语句,存储过程没什么优势;
- 如果存储过程中不一定会减少网络传输;
- 如果只有一个用户使用数据库,那么存储过程对安全也没什么影响;
- 团队开发时需要先统一标准,否则后期维护成本大;
- 在大并发量访问的情况下,不宜写过多涉及运算的存储过程;
- 业务逻辑复杂时,特别是涉及到对很大的表进行操作的时候,不如在前端先简化业务逻辑。
定义存储过程
1. 创建存储过程的语法
# 声明存储过程
create procedure 过程名(参数1,参数2....)
# 存储过程的开始符号begin ,结束符合end
begin
sql语句;
sql语句;
end
需要注意的是: 创建存储过程之前我们必须修改mysql语句默认结束符“ ; 要不然我们不能创建成功。
使用delimiter可以修改执行符号:
DELIMITER $$
或者
DELIMITER //
2. 创建存储过程案例
这里的book库是我自己的数据库。
mysql>use book;
注意: 必须先进入数据库 book
mysql> delimiter % 这样结束符就为%
mysql> create procedure selCg()
-> begin
-> select * from category;
-> end %
也可以这么写:
mysql> create procedure selCg() begin select * from category; end%
3. 调用存储过程
call 过程名(参数1,参数2);
调用案例:
mysql> call selCg()%
+---------+---------------+
| bTypeId | bTypeName |
+---------+---------------+
| 1 | windows应用 |
| 2 | 网站 |
| 3 | 3D动画 |
| 4 | linux学习 |
| 5 | Delphi学习 |
| 6 | 黑客 |
<