Mysql_存储过程

一.概述

 有些数据库操作可能会非常复杂,
 可能会需要多条sql语句一起去处理完成,
 可以使用存储过程

二.简介

 是一组为了完成特定功能的sql语句的集合
 从5.0版本才开始支持
它可以加快数据库的处理速度,
增强数据库在应用 中的灵活性
  • 存储过程是为了完成特定功能的sql集合

  • 在使用过程中,是将常用或者复杂的工作预先使用sql语句写好,并用一个指定的名称存储起来。

  • 这个过程经编译和优化后存储在数据库服务器中,当需要使用该存储过程时,调用即可

  • 在执行时,需要先编译再执行

三.优点

1.存储过程优点:
  • 1):提高执行效率,执行一次后,会将生成的二进制码驻留缓冲区
  • 2):灵活性高,sql语句加上控制语句的集合
  • 3):在服务器段存储,客户端调用时,降低网络负载
  • 4):可多次重复被调用,可随时更改,不影响客户端调用
  • 5):完成所有库操作,可控制数据库的信息访问权限
四.示例

1)创建存储过程(不带参数)

格式:
DELIMITER $$							#将语句的结束符号从分号;临时改为两个$$(可以是自定义)
CREATE PROCEDURE xxx()					#创建存储过程,过程名为xxx,不带参数
 BEGIN                                  #过程体以关键字 BEGIN 开始
   sql语句;                             #过程体语句
 END $$								    #过程体以关键字 END 结束
DELIMITER ;                             #将语句的结束符号恢复为分号

例:


 delimiter $$
create procedure cc()
 begin
create table mk (id int(10),name char(10),score int(10));
insert into mk values(1,'wang',13);
select * from mk;
end $$


delimiter ;
call cc();


在这里插入图片描述

2)带参数存储过程

  参数分为:
  1.存储过程的主体部分,称为过程体
  2.以begin开始,end结束,若只有一条sql语句,可以省略begin-end
  3.以delimiter开始和结束

带参数存储过程:

  • 输入参数:IN表示调用者向过程传入值
  • 输出参数:out表示过程向调用者传出值
  • 输入/输出参数:inout
  • 表示调用者向过程传入值,又表示过程向调用者传出值
 delimiter $$
create procedure getrole(in inname varchar(16))
 begin
 select a_id,a_name,a_level from test1 where a_name=inname;
end $$


delimiter ;
call getrole('aaaa');


在这里插入图片描述

3)查看存储过程


SHOW CREATE PROCEDURE [数据库.]存储过程名;		#查看某个存储过程的具体信息

例:
show create procedure cc\G;

在这里插入图片描述

4)修改存储过程

 alter procedure <过程名><特征>
show create procedure getrole\G;

alter procedure getrole modifies sql data sql security invoker;

show create procedure getrole\G;

在这里插入图片描述

5)删除存储过程

drop procedure if exists getrole;

在这里插入图片描述

总结:

存储过程:数据库操作复杂,可使用多条sql语句一起完成
为了完成特定功能的sql集合
就是将复杂的工作预先写好,指定存储起来
执行时进行调用
  • 优点:①执行效率高
  • ②:灵活
  • ③可重复调用
  • ④:完成所有库操作,可控制数据库信息访问

存储过程:

  • 带参数
    输入参数,IN:调用者向过程传入
    输出参数:OUT,过程向调用者传出值

  • 不带参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值