【数据库入门到精通】mysql的存储过程实战

前言

在这里插入图片描述

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云社区专家博主😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

可以关注我的云原生社区云原生社区
也可以关注我的英语社区从零开始学英语

mysql存储过程的概念

百科中超难理解的版本:

MySQL 的存储过程(Stored Procedures)是一组预先定义好的 SQL 语句集合,这些语句会经过编译并存储在数据库中,可以在需要时被调用执行。存储过程可以接受输入参数、返回输出结果,并且具有复杂的逻辑处理能力。

修正后的版本:

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

还是不理解的话,看这里:

存储过程,你可以理解为类似于shell脚本中的函数,只不过函数是一组shell命令的组合,而存储过程是一组SQL语句的组合。

存储过程的优缺点

1. 存储过程的优点

  1. 提高性能:存储过程在数据库服务器端执行,减少了与数据库服务器之间的通信开销。相比于每次向服务器发送一个查询请求,使用存储过程可以将复杂的逻辑封装在数据库内部,并通过一次调用执行多个 SQL 语句,从而减少了网络流量和服务器资源开销,提高了执行效率。

  2. 重用性和模块化:存储过程可以在多个应用程序中重复使用,避免了重复编写相同的 SQL 语句逻辑。它们提供了一种模块化的方式来组织和管理数据库逻辑,使得开发人员可以专注于业务逻辑层面的实现,提高了开发效率。

  3. 降低代码复杂性:存储过程可以封装复杂的业务逻辑和数据操作,并暴露简单的接口供应用程序调用。这样可以将复杂性从应用程序中移除,使得应用程序的代码变得更简洁、清晰,易于维护和理解。

  4. 数据安全性:存储过程可以对用户的权限进行控制,为数据库提供了一种更强大的访问控制机制。通过存储过程,可以限制对特定数据表和数据字段的访问,确保只有授权的用户能够执行特定的操作,提升了数据库的安全性。

  5. 事务管理和数据一致性:存储过程可以嵌入事务语句,提供了对复杂操作的原子性执行和数据一致性的保证。通过使用存储过程,可以确保在一次调用中执行的所有 SQL 操作要么全部成功提交,要么全部回滚,避免了因为异常情况导致的数据不一致问题。

  6. 性能优化和查询优化:存储过程可以对复杂的查询语句进行优化,通过使用合适的索引、查询重写和查询优化技术,提高查询性能。此外,存储过程还可以缓存查询计划,避免了每次执行查询时重新生成查询计划的开销,提升了查询效率。

2. 存储过程的缺点

  1. 可移植性差;
  2. 对于简单的SQL语句,存储过程没什么优势;
  3. 如果存储过程中不一定会减少网络传输;
  4. 如果只有一个用户使用数据库,那么存储过程对安全也没什么影响;
  5. 团队开发时需要先统一标准,否则后期维护成本大;
  6. 在大并发量访问的情况下,不宜写过多涉及运算的存储过程;
  7. 业务逻辑复杂时,特别是涉及到对很大的表进行操作的时候,不如在前端先简化业务逻辑。

定义存储过程

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 | 黑客          |
<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值