MySQL进阶-存储过程-变量语法结构
目录
一:变量
系统变量
用户定义变量
局部变量
二:结构
if结构
case when结构
while结构
一:变量
在MySQL中变量分为三种类型 : 系统变量、用户定义变量、局部变量。
系统变量
系统变量 是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话 变量( SESSION)。
1). 查看系统变量
--查看所有系统变量
 SHOW  [ SESSION | GLOBAL ] VARIABLES;
 --可以能过LIKE模糊匹配方式查找变量
 SHOW  [ SESSION | GLOBAL ] VARIABLES LIKE '....'
 --查看指定变量的值
 SELECT  @@ [SESSION | GLOBAL]
2). 设置系统变量
SET  [ SESSION | GLOBAL ]   系统变量名 = 值 ;
 SET  @@ [SESSION | GLOBAL]  系统变量名 = 值 ;

演示示例 :

用户定义变量
用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量 名 " 使用就可以。其作用域为当前连接。
1). 赋值
方式一 :
SET @var_name = expr [, @var_name = expr] ... ;
 SET @var_name := expr [, @var_name := expr] ... ;
赋值时,可以使用 = ,也可以使用 :=
方式二 :
SELECT @var_name := expr [, @var_name := expr] ... ;
 SELECT 字段名 INTO @var_name FROM 表名;
2). 使用
SELECT @var_name ;
注意: 用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。
演示案列:

局部变量
局部变量 是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程内的 局部变量和输入参数,局部变量的范围是在其内声明的BEGIN ... END块。
1). 声明
DECLARE 变量名 变1 量类型 [DEFAULT ... ] ;
变量类型就是数据库字段类型:INT、BIGINT、CHAR、VARCHAR、DATE、TIME等。
2). 赋值
SET 变量名 = 值 ;
 SET 变量名 := 值 ;
 SELECT 字段名 INTO 变量名 FROM 表名 ... ;
演示示例 :

二:结构
if结构
案列:
#if函数
 delimiter $
 create procedure pro_if(in score int)
 begin 
   declare ds varchar(10) default'A';
   if score > 85 then
     set ds='A';
   elseif score <= 85 and score > 75 then
     set ds='B';
   elseif score <= 75 and score > 60 then
     set ds='C';
   else
     set ds='D';
   end if;
   
   select ds;
 end $
 delimiter ;
case when结构
案列:
#case when函数
 delimiter $
 create procedure pro_casewhen(in score varchar(1))
 begin 
   declare ds varchar(10);
   case score
   when 'A' then
     set ds = '大于85';
   when 'B' then 
     set ds = '大于等于75小于85';
   when 'C' then
     set ds = '大于等于60小于75';
   when 'D' then 
     set ds = '不及格';
   else 
     set ds = '输入A-D';
   end case;
   
   select ds;
 end $
 delimiter ;
while结构
案列:
##while循环
 delimiter $
 create procedure pro_while() 
 begin
   declare s int default 0;
   declare i int default 0;
   while i<=100 do
      set s=s+i;
      set i=i+1;
   end while;
   
   select s;
  end $
 delimiter ;
