存储过程mysql变量_MySQL·变量·存储过程·函数

·变量

一、系统变量

含义:变量有系统提供,无须自定义,可分为:

①全局变量:服务层面上,必须有super权限才能为系统变量赋值,作用域为整个服务器,也就是针对于所有连接(会话)有效。

②会话变量:服务器为每一个连接的客户端提供了系统变量,作用域为当前的连接(连接)

语法:

①查看系统变量

show 【global | session】variables like '' 如果没有显式声明global还是session,默认后者

②查看指定的系统变量的值

select @@【global | session】.变量名 ,如果没有显式声明global还是session,默认后者

③为系统变量赋值

方式1:

set 【global | session】变量名 = 值; 默认同上

方式2:

set @@global.变量名=值;

set @@变量名 = 值;

二、自定义变量

由用户定义设计的变量,相对灵活,可分为:

①用户变量

作用域:针对于当前连接(连接)生效

位置:begin end 里面 , 也可以放在外面

使用:1、声明并赋值

set @变量名 = 值;

set @变量名 = 值;

select @变量名:=值;

2、更新值

set @变量名 = 值;

set @变量名= 值;

set @变量名 = : 值;

select xx into @变量名 from 表;

3、使用 select @变量名

②局部变量

作用域:仅仅在定义它的begin end 中有效

位置:只能放在begin end 中,而且只能放在第一句

使用:1、声明并赋值

declare 变量名 类型【default 值】;

2、更新值

set 变量名 = 值 / set 变量名:=值 / select @变量名:=值

select xx into 变量名 from 表

3、使用 select 变量名;

·存储过程

含义:将一组完成特点功能的逻辑语句包装起来,对外暴露名字

好处:提高重用性、减少了和数据框服务器连接的次数,提高效率

一、创建

create procedure 存储过程名(参数模式 蚕食名 参数类型)

begin 存储过程提

end

注意:

1、参数模式:in 、out 、inout ,其中in可以省略

2、存储过程体每一条sql语句都需要用分好结尾

二、调用

语法:call 存储过程名(实参列表)

分类:调用 in 模式的参数:call 存储过程名("值")

调用 out 模式的参数:set @varb; call 存储过程名(@varb); select @varb;

调用 inout 模式的参数:set @varb = 值; call 存储过程(@varb); select @varb;

三、查看:show create procedure 存储过程名;

四、删除:drop procedure 存储过程名; (一次只能删去一个)

·函数

一、创建

create function 函数名(参数名 参数类型) returns 返回类型

begin 函数体(包含return语句)

end

*使用delimiter 语句设置结束标记

二、调用:select 韩式名(实参列表);

三、查看:show create function 函数名;

四、删除:drop function 函数名;

五、流程控制结构

分类:

1、顺序结构:程序从上往下依次执行

2、分支结构:程序按条件进行选择执行,从两条或多条路径选择一条执行

3、循环结构:程序在满足一定的条件,重复执行一组语句

分支结构:

①if函数

语法:if(条件,值1,值2)

②case结构—实现多分支

语法:case 表达式或字段

when 值1 then 语句1;

when 值2 then 语句2;

.....

else 语句n

end;

或者: case

when 条件1 then 语句1;

when 条件2 then 语句2;

......

else 语句n

end;

③if结构(只能存在begin-end中)

if 条件1 then 语句1;

elseif 条件2 then 语句2;

......

else 语句n

end if;

循环结构(只能存在begin-end中)

①【名称:】while 循环条件 do

循环体

end while 【名称】;

②【名称:】loop

循环体

end loop 【名称】

③【名称:】repeat

循环体

until 结束条件

end repeat 【名称】

循环控制语句:

1、leave:类似于break 用于跳出所在的循环

2、iterate:类似于continue ,用于跳出本次循环后继续下一次循环

循环结构对比:

1、三种循环都能省略名称,但如果循环中添加了控制语句(leave 或 iterate)必须有名称

2、loop 一般用于实现简单的死循环

while 先判断后执行

repeat 先执行后判断,无条件至少执行一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值