存储过程
MySQL数据库在5.0版本后开始支持存储过程,那么什么是存储过程呢?怎么创建、查看和删除存储过程呢?存储过程有什么优点?
1.概念:什么是存储过程:类似于函数(方法),简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集合,该语句集包括SQL语句(对数据的增删改查)、条件语句和循环语句等。
2. 查看现有的存储过程
1 show procedure status;3 .删除存储过程
1 drop procedure 存储过程名称;4. 调用 存储过程
1 call 存储过程名称(参数1 参数1类型,参数2 参数2类型);5.创建存储过程
1 1#体会封装 2 create procedure p1 () 3 begin 4 select * from account; 5 6 end
1 2#SQL 体会参数 2 create procedure p2(in m int) 3 begin 4 select * from account where money > m; 5 end
1 #SQL 体会控制 2 create procedure p3(in x int,in c char(1)) 3 4 begin 5 6 if c ='d' then 7 8 select * from account where money >x; 9 10 else 11 12 select * from account where money <x; 13 end if; 14 end
#体会循环:计算1-100累加的和,并且返回计算结果. create procedure p4(inout n int) begin DECLARE sum int default 0; -- 设置总和变量,并且指定初始值0 declare i int; -- 声明变量 set i = 0; -- 通过set为变量设置值 while i<=n DO -- 开始循环 set sum = sum +i; set i = i+1; end while; -- 结束循环 select sum; -- 提供结果 set n = sum;--将计算结果提供给 输出变量 n; end; -- 调用: set @n = 100; call p4(@n); select @n;
存储过程优点:
1、存储过程增强了SQL语言灵活性。存储过程可以使用控制语句编写,可以完成复杂的判断和较复杂的运算,有很强的灵活性;
2、减少网络流量,降低了网络负载。存储过程在数据库服务器端创建成功后,只需要调用该存储过程即可,而传统的做法是每次都将大量的SQL语句通过网络发送至数据库服务器端然后再执行;
3、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
4、系统管理员通过设定某一存储过程的权限实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。