mysql存储过程

mysql的存储过程,及使用场景,和存储函数、触发器的区别,基本语法

  • 存储过程,存储函数,触发器和事件是自从MySQL 5.0版本以来,这些功能被添加到MySQL数据库引擎,使mysql更加灵活和强大。

- 存储过程:

存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。
存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。

- 使用场景:

存储过程处理比较复杂的业务时比较实用。
比如说,一个复杂的数据操作。如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话。就只有一次。从响应时间上来说有优势。也就是说存储过程可以给我们带来运行效率提高的好处。
另外,程序容易出现 BUG
不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。也就是说从安全上讲,使用了存储过程的系统更加稳定。
其威力和优势主要体现在:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL
语句,可能要多次连接数据库。而换成存储过程,只需要连接一次数据库就可以了。

3.存储过程可以重复使用, 而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响,可减少数据库开发人员的工作量。

4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 存储过程(procedure)和存储函数( function)的区别:
1:) 存储函数和存储过程统称为存储例程(store routine),存储函数的限制比较多,例如不能用临时表,只能用表变量,而存储过程的限制较少,存储过程的实现功能要复杂些,而函数的实现功能针对性比较强。

2:) 存储过程一般都是独立使用,使用call
加存储过程名调用。而存储函数可以在SQL语句(select)中使用(比如在查询是经常使用的系统自定义的sum 、avg 、max函数)。

3:) 返回值不同 ,存储函数要求必须有返回值,且仅返回一个结果值,而存储过程可以没有返回值还可以返回一个结果集(out,inout)

4:) 参数不同,存储函数的参数类似于存储过程的IN入参,而存储过程即可有入参IN,也可由出参OUT,和INOUT
(1): IN数据只是从外部传入内部使用(值传递),可以是数值也可以是变量
(2): OUT只允许过程内部使用(不用外部数据),给外部使用的(引用传递:外部的数据会被先清空才会进入到内部),只能是变量
(3): INOUT 外部可以在内部使用,内部修改的也可以给外部使用,典型的引用 传递,只能传递变量

- 存储过程和触发器的区别:

触发器是一种特殊的存储过程,存储过程需要手动调用,而触发器是经过事件触发而执行的,触发器是绑定一张表,在表中创建保存,而存储过程是在一个数据库中创建并保存。
触发器=存储过程+事务+自定义约束

存储过程的编写:

基本语法:
1)
存储过程的参数有 入参 IN, 出参 OUT , INOUT
IN 从外部传参 在内部使用,调用时必须传值
OUT 就是相当于返回值
INOUT 把出参和入参放到一块儿,在调用时传值,值可以返回
2)
declare 用来声明变量,default 赋默认值,set 赋值
3)创建存储过程:
delimiter Createprocedure()Begin(;)End C r e a t e p r o c e d u r e 存 储 过 程 名 ( ) B e g i n … … … … … ( 末 尾 要 有 分 号 ; ) E n d
delimiter
注:delimiter d

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值