《MySQL—存储过程基础知识》要点:
本文介绍了MySQL—存储过程基础知识,希望对您有用。如果有疑问,可以联系我们。
储存过程就是数据库中保留的一系列sql命令的集合,也可以看作是相互之间有关系的sql命令组织在一起的一个小程序,这些sql命令通常并非简单地组合在一起,还可以使用各种条件判断、循环控制等来实现简单的sql命令不能实现的复杂功能.
存储过程的优势:
1、提高执行性能
通常在sql客户端执行sql命令时数据库会有解析到编译的一个前期过程.而存储过程则是事先完成了解析、编译的处理后保留在数据库中的,执行时能减轻数据库负担.
2、可减轻网络负担
使用存储过程后,复杂的数据库操作也可以在数据库服务器中完成.只需要从应用程序传递给数据库必要的参数就行.
3、可防止对表的直接拜访
可以禁止对表本身的拜访,只赋予用户对相关存储过程的拜访权限,只允许通过储存过程拜访表.
4、可将数据库的处理黑匣子化
应用程序完全不用考虑储存过程的内部详细处理,只需要知道调用那个存储过程就好了.
使用存储过程:
创建:
上面就是将“处理内容”定义成名为 #存储过程名# 的存储过程
存储过程中可以指定参数,参数分为输入参数(接受调用方的数据,默认),输出参数(向调用方返回处理结果).使用关键字in、out、inout来指定.inout既是输入型也是输出型.
delimiter是改变分隔符的,将默认的分隔符修改成别的符号.默认是[;],因为存储过程本身就是命令的集合,所以会包括[;],因此使用delimiter来区分.
例子:
存储过程中可使用的控制语句:
具体的控制语句有条件分支选择语句、循环控制语句等.
查看存储过程:show procedure status;
调用存储过程:
call #存储过程名字#(参数,...)
在调用存储过程的时候,如果出现参数数目不符(或多或少)的情况,将会显示错误信息.
定义输出参数:
当指定了out/outin类型的参数时,通过给参数名的头部添加@符号可以将处理结果保留到out型变量中,然后使用select @变量名来显示变量信息.
定义当地变量:(局部变量)
在各个条件分支程序块中,会有一些执行相似的代码,也就是有些执行的部分是一样的,我们可以将这些相同的部分移动到条件判断外,在分支程序块中只有检索条件字符的部分代码.也就是将检索条件字符存放在当地变量的变量中.
使用局部变量必须用 declare 声明变量的名称以及数据类型.
给变量赋值:set #变量名# =值
例子:
没有定义当地变量前的使用:
定义了当地变量后的使用:
对比可见,使用当地变量显然将[select id,author,title from article where author=]相同的部份移到条件判断外了.
存储过程的使用:
1、当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;
2、当在一个事务的完成需要很复杂的业务逻辑时例如对多个数据的操作或者对多个状态的判断更改等要考虑;
3、还有就是在比拟复杂的统计和汇总中也要考虑,但是过多的使用存储过程会降低系统的移植性.
维易PHP培训学院每天发布《MySQL—存储过程基础知识》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/7128.html