定制app开发MySQL高级SQL语句(存储过程)

MySQL高级(存储过程)

MySQL高级SQL语句(存储过程)

一、定制app开发存储过程的概述

1.1 定制app开发什么是存储过程

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

1.2 存储过程的有点

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

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

2.1 创建存储过程

delimiter $$                 #将语句的结束符号从分号;临时改为两个$$(可以自定义)create procedure proc ()     #创建存储过程,过程名为proc,不带参数-> begin                     #过程体以关键字begin开始-> select * from store_info; #过程体语句-> end $$                    #过程体以关键字end结束delimiter ;                   #将语句的结束符号恢复为分号
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

示例:

delimiter $$create procedure proc01 ()-> bengin-> create table student(id int,name char(10),age int);-> insert into student values(1,'zhangsan',18);-> insert into student values(2,'lisi',18);-> select * from student;-> end $$delimiter ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.2 调用和查看存储过程

call proc;               #调用存储过程show create procedure [数据库.]存储过程名;  #查看某个存储过程的具体信息show create procedure proc;show create procedure proc\Gshow procedure status [like '%proc%'] \G
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

示例:

call proc01;    show create procedure proc01; show create procedure proc01\G       #查看存储过程的具体信息 ​ show procedure status like '%Proc01%'\G
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6



2.3 删除存储过程

 #存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。drop procedure if exists proc; #仅当存在时删除,不添加If EXISTS 时,如果指定的过程不存在,则产生一个错误。
  • 1
  • 2
  • 3
  • 4

示例:

drop procedure if exists proc01;
  • 1

三、存储过程的参数

  • IN 输入参数: 表示调用者向过程传入值。(传入值可以是字面量或变量)
  • OUT 输出参数: 表示过程向调用者传出值。(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。(值只能是变量)

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

delimiter $$create procedure proc2(in stuname char(20))  #参数为stuname,数据类型一定要与下面的where语句后字段的数据类型相同-> begin-> select * from student where name = stuname;-> end $$delimiter ;call proc2('zhangsan');       #调用存储过程,并传入参数‘zhangsan’
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

四、存储过程的控制语句

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

 delimiter $$   create procedure proc03(in innum int)   #创建存储过程proc03,参数为innum,类型为int  -> begin  -> declare var int;         #定义变量var为int类型  -> set var=innum*2;         #变量var的值等于传入的参数值乘2 -> if var>=10 then          #当var的值大于10时,id值会加1,否则减1 -> update ss set id=id+1;   -> else  -> update ss set id=id-1;   -> end if;   -> end $$   delimiter ; ​ call proc03(8);    #调用存储过程,并传入参数8 ​ call proc03(3);    #调用存储过程,并传入参数3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

 delimiter $$                   #修改默认结束符为$$ create procedure proc05()      #创建存储过程proc04 -> begin                       #过程体以关键字begin开始 -> declare var int(10);        #定义变量var为int类型 -> set var=0;                  #var的起始值为0 -> while var<6 do              #使用while循环,当var值小于6时满足条件,则向表中插入var的值 -> insert into ss values(var);   -> set var=var+1;              #每次循环后var值自增1 -> end while;                  #结束while循环 -> end $$                      #创建存储过程结束 ​ delimiter ;                    #重新修改默认结束符为原始的; ​ call proc05;                   #调用存储过程proc04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发