mysql存储过程

记录存储过程学习笔记,就先做个基本的了解。具体要不要去研究下去,要看自己以后的路。

以下对存储过程的定义解释部分转自:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html

mysql的存储过程在我看来是类似于函数的存在,里面可以写一堆SQL语句的集合,而且还可以传递参数。相比普通的SQL语句,它具有以下优点:

  1.存储过增强了SQL语言的功能和灵活性。存储过程可以用来流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

  2.存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

  3.存储过程能实现较快的执行速度。如果某一操作包含大量的T-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程是查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的T-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

  4.存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相对的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

  个人查找牛人实例和思考总结的缺点:

  1.不利于维护(特别是新人),因为后人一般都都在具体代码层分析或者做逻辑判断,这时候如果有些东西写在数据库的存储过程,他又得去数据库了解。

  2.不利于迁移数据库。

  3.用到存储过程最大好处其实就是不用取出一堆数据到程序里面再去运算,然后根据结果操作数据库,可以直接一块在存储过程里面实现,但是存储过程的运算性能极其之差。

  总结起来,在我看来,存储过程比较适用于数据频繁查找的地方,因为查询性能会比较高,但是其他涉及到逻辑判断或者运算的就要见仁见智了。

  下面是一个简单实例:

  创建存储过程,而且有一个参数

CREATE PROCEDURE SelectData(param int)
begin
SELECT * FROM `user` WHERE uid=param;
end;

  执行存储过程,查找uid为7的结果。

SET @param=7;
CALL SelectData(@param);

  结果:

  

  删除存储过程

DROP PROCEDURE SelectData 

  

原文地址:https://www.cnblogs.com/s-b-b/p/6003013.html