【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量

一,系统变量

系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)和会话变量(SESSION)
1,查看系统变量 (不设置默认为session)
show [session | global] variables; --查看所有系统变量
【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第1张图片

show [session | global] variables like '……'; --可以通过like模糊匹配方式查找变量
【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第2张图片

select @@[session | global] 系统变量 --查看指定变量的值
【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第3张图片
2,设置系统变量
set [session | global] 系统变量 = 值;
set @@[session | global] 系统变量 = 值;
【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第4张图片
注意:虽然设置全局,但是当MySQL服务器重启之后,依然恢复默认值,此时需要在/etc/my.cnf文件里进行修改。
在这里插入图片描述

二,用户自定义变量

用户自定义变量是用户根据需要自己定义的变量,用户变量不需要提前声明,在用的时候直接使用“@变量名”就可以使用。其作用域为当前连接(也就是当前会话)
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;

【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第5张图片
3,注意:用户自定义的变量无需对其声明或者初始化,只不过查询到的值为null
【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第6张图片

三,局部变量

局部变量是根据需要在局部生效的变量,在访问之前,需要declare声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其声明的begin …… end块。

1,声明
declare 变量名 变量类型 [default ...]
变量类型就是数据库字段类型,int、bigint、char、varchar、date、time等

2,赋值
set 变量名 = 值;
set 变量名 := 值;
select 字段名 into 变量名 from 表名...;

【三十七、MySql】进阶篇--存储过程--系统变量、自定义变量和局部变量_第7张图片

你可能感兴趣的:(数据库,mysql,数据库)