在mysql中,可以定义一段程序放在数据库中,这种程序称之为存储过程,存储过程是数据库对象之一,实质上就是一段代码,可以由声明式的sql语句(create 、update、select等)和过程式sql语句(如if-then-else语句)组成,存储过程可以由程序、触发器或者另一个存储过程来调用从而激活它实现代码中的sql语句。
使用存储过程的优点:
1) 存储过程在服务器端进行,执行速度快;
2) 存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高系统性能;
3) 确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编译方式控制上述操作对数据库访问权限
MySQL 5.1版支持存储程序和函数。一个存储程序是可以被存储在服务器中的一套SQL语句。一旦它被存储了,客户端不需要再重新发布单独的语句,而是可以引用存储程序来替代。
下面一些情况下存储程序尤其有用:
· 当用不同语言编写多客户应用程序,或多客户应用程序在不同平台上运行且需要执行相同的数据库操作之时。
· 安全极为重要之时。比如,银行对所有普通操作使用存储程序。这提供一个坚固而安全的环境,程序可以确保每一个操作都被妥善记入日志。在这样一个设置中,应用程序和用户不可能直接访问数据库表,但是仅可以执行指定的存储程序。
存储程序可以提供改良后的性能,因为只有较少的信息需要在服务器和客户算之间传送。代价是增加数据库服务器系统的负荷,因为更多的工作在服务器这边完成,更少的在客户端(应用程序)那边完成上。如果许多客户端机器(比如网页服务器)只由一个或少数几个数据库服 务器提供服务,可以考虑一下存储程序。
存储程序也允许你在数据库服务器上有函数库。这是一个被现代应用程序语言共享的特征,它允许这样的内部设计,比如通过使用类。使用这些客户端应用程序语言特征对甚至于数据库使用范围以外的编程人员都有好处。
delimiter // 以//未结束符
Create procedure p1(in var int)创建存储过程
Begin 开始
Declare var1 int; 局部变量
set var1=para1+var1; 赋值
insert into t1 values(var1);
end;//
在mysql中常见的sql语句可以用在一个存储过程体中,例如:if语句、case语句、loop语句、while语句、iterate语句和leave语句
Mysql服务器在缓存机制做了改进,使用类似预处理的哪种方式,由于没有编译器,因此mysql存储过程不会向外部语言(c)编写的运行的那么快。提升mysql服务器速度最主要的方法有两种:降低网络的信息的流量,减少用户与服务器之间的交互
存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的交互信息量
改变主机语言也可以,存储过程只是数据库逻辑而部署应用程序可移植性好,与操作系统主机型号无关;