大多数SQL语句都是针对一个或多个表的单条语句。但并非所有业务都这么简单,经常会有复杂的操作需要多条语句才能完成。
比如用户购买一个商品,要删减库存表,要生成订单数据,要保存支付信息等等,他是一个批量的语句执行行为。
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。
优点:
提高代码的复用性:把一些通用操作内容封装到一个存储过程中,可以不断的给业务功能复用。
简化操作:避免在业务中写大量的代码
提高效率:减少执行次数和数据库服务器连接次数。
提高安全性:通过存储过可以减少对基础数据的误操作,参数化的存储过程一定程度上可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
说存储过程之前,先来了解两个重要的知识点:自定义变量 和 delimiter关键字。
自定义变量 概念变量由用户自定义的,而非系统已经存在的。
使用步骤第一步声明;第二步赋值;第三步使用(调用、比较和运算)
分类包含用户变量和局部变量,我们一个个来看:
用户变量 作用域针对当前会话有效,作用域同会话变量。
用户变量可以在任何地方使用,既可以是包含的begin和end,也可以是在这之外。
使用 声明并初始化1 set @variable=value; 2 or 3 set @variable:=value; 4 or 5 select @variable:=value;