本篇内容主要讲解“MySQL存储过程高级SQL语句怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL存储过程高级SQL语句怎么创建”吧!

MySQL高级SQL语句(存储过程)一、存储过程的概述1.1 什么是存储过程

存储过程是一组为了完成特定功能的SQL语句集合。
存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

1.2 存储过程的有点

执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率。

SQL语句加上控制语句的集合,灵活性高。

在服务器端存储,客户端调用时,降低网络负载。

可多次重复被调用,可随时修改,不影响客户端调用。

可完成所有的数据库操作,也可控制数据库的信息访问权限。

二、创建、调用和查看存储过程2.1 创建存储过程

delimiter$$#将语句的结束符号从分号;临时改为两个$$(可以自定义)createprocedureproc()#创建存储过程,过程名为proc,不带参数->begin#过程体以关键字begin开始->select*fromstore_info;#过程体语句->end$$#过程体以关键字end结束delimiter;#将语句的结束符号恢复为分号

示例:

delimiter$$createprocedureproc01()->bengin->createtablestudent(idint,namechar(10),ageint);->insertintostudentvalues(1,'zhangsan',18);->insertintostudentvalues(2,'lisi',18);->select*fromstudent;->end$$delimiter;

2.2 调用和查看存储过程

callproc;#调用存储过程showcreateprocedure[数据库.]存储过程名;#查看某个存储过程的具体信息showcreateprocedureproc;showcreateprocedureproc\Gshowprocedurestatus[like'%proc%']\G

示例:

callproc01;showcreateprocedureproc01;showcreateprocedureproc01\G#查看存储过程的具体信息showprocedurestatuslike'%Proc01%'\G



2.3 删除存储过程

#存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。dropprocedureifexistsproc;#仅当存在时删除,不添加IfEXISTS时,如果指定的过程不存在,则产生一个错误。

示例:

dropprocedureifexistsproc01;

三、存储过程的参数

IN 输入参数: 表示调用者向过程传入值。(传入值可以是字面量或变量)

OUT 输出参数: 表示过程向调用者传出值。(可以返回多个值)(传出值只能是变量)

INOUT 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。(值只能是变量)

注意:变量名不能含有下划线。

delimiter$$createprocedureproc2(instunamechar(20))#参数为stuname,数据类型一定要与下面的where语句后字段的数据类型相同->begin->select*fromstudentwherename=stuname;->end$$delimiter;callproc2('zhangsan');#调用存储过程,并传入参数‘zhangsan’

四、存储过程的控制语句

4.1 条件语句 :if-then-else … end if

delimiter$$createprocedureproc03(ininnumint)#创建存储过程proc03,参数为innum,类型为int->begin->declarevarint;#定义变量var为int类型->setvar=innum*2;#变量var的值等于传入的参数值乘2->ifvar>=10then#当var的值大于10时,id值会加1,否则减1->updatesssetid=id+1;->else->updatesssetid=id-1;->endif;->end$$delimiter;callproc03(8);#调用存储过程,并传入参数8callproc03(3);#调用存储过程,并传入参数3

4.2 循环语句 :while ···· end while

delimiter$$#修改默认结束符为$$createprocedureproc05()#创建存储过程proc04->begin#过程体以关键字begin开始->declarevarint(10);#定义变量var为int类型->setvar=0;#var的起始值为0->whilevar<6do#使用while循环,当var值小于6时满足条件,则向表中插入var的值->insertintossvalues(var);->setvar=var+1;#每次循环后var值自增1->endwhile;#结束while循环->end$$#创建存储过程结束delimiter;#重新修改默认结束符为原始的;callproc05;#调用存储过程proc04

到此,相信大家对“MySQL存储过程高级SQL语句怎么创建”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!