存储过程(一)
第一次真正的接触到存储过程,在之前的工作当中,虽然也有接触过,但都是调用别人写的存储过程来执行。没有深入的了解它。所幸在现在的工作当中,当我用sql来处理某问题时,发现单单的sql是搞不定的,我第一反应就是用存储过程。现学现卖的学习了简单的存储过程,并解决了工作中的问题。那么我就把所学的步骤过程和大家分享下。是怎么从一个存储过程小白到存储过程菜鸟,至于大牛还没到那个层级。心急吃不了热豆腐,一步一步来。初学者切勿眼高手低...
开始学习吧
什么是存储过程?
存储过程(Stored Procedure)是在大型数据库系统中,为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库中的一个重要对象。
存储过程的优缺点
优点
- 提升性能
- 原本都是通过代码来传递SQL语句来实现业务逻辑,那如果封装成存储过程之后,编译之后放在数据库端,这样在程序调用数据时就无需传递SQL在编译来执行。
- 数据的完整性和一致性
- 存储过程可以被重复调用,只要经过严格的测试之后,保证正确的运行存储过程,那么在新的代码中也无需再次经过测试
- 安全性高
- 存储过程可以被赋予权限的,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全
- 执行效率高
- 采用存储过程的话,代码在首次运行时,就会把存储过程编译缓存到数据库服务器,方便下次调用,缩短sql运行时间
- 减少服务器与客户端交互时间
- 由于客户端调用服务器端时,只需输入存储过程名称和参数名,会减少服务器和客户端的之间交互的网络流量
缺点
- 不方便调试
- 如果SQL我们通过程序代码来控制的,可以很方便的增加断点来调试,查看变量值从而定位sql的执行正确性。那么如果编写存储过程,很难调试,必须严格测试。
- 不易扩展
- 不同类型数据库的存储过程语法是有差异的,如果使用了存储过程那么应用程序就不具备了迁移扩展能力。
为什么要用存储过程?
在了解了存储过程的概念之后。那么会有疑问,为什么要用存储过程?
大家不要被存储过程这四个“”高大上高逼格”的字给忽悠了。用大白话说什么是存储过程呢?
就是一堆SQL中间夹杂了点逻辑控制而已。在处理比较复杂的业务逻辑会比较实用。
为什么要用呢?就是因为上面我们说的存储过程的优点。那么就会有人说了,有缺点还用吗?
当优大于缺的时候,根据业务逻辑复杂度还是会选择的。
以上就是一些简单的存储过程概念,说的不全但我觉得都是重点。
开始存储过程之旅吧。基于mySql的存储过程
基本语法
1、创建存储过程
create procedure selectData()
begin
.........
end
-- 创建一个名为 selectData的存储过程。
create procedure selectData()
begin是执行开始,end就是到这结束,在这两行代码之前就是存储过程的逻辑。
2、调用存储过程
创建完了,那么怎么调用存储过程呢?
call selectData();
注意:不管存储过程有没有参数,都必须加括号。类似于java里的方法调用。
3、删除存储过程
为什么要有这个语法呢?当我们创建完了一个存储过程之后,如果里面的逻辑需要修改,那么修改完之后是需要在执行一下创建存储过程语法的。如果没有删除,又执行了创建语法,会异常告诉你,这个存储过程已经存在了。只能删除或者修改我们的存储过程名。
drop procedure selectData;
注意:切勿在一个存储过程里面调用删除另一个存储过程的语法。
4、其他常用语法
显示数据库中所有存储的存储过程基本信息,比如:所属数据库,存储过程名,创建时间等信息
show procedure status;
显示某一个存储过程的基本信息
show create procedure selectData;
这就是存储过程的一些基本语法。大家好好的记一下语法。
下一篇提前预知:
- 调用存储过程执行简单查询SQL
- 存储过程的数据类型及运算符
- 存储过程的输入输出
- 存储过程的流程控制语句