概述:用户变量使用@+变量名使用;系统变量由系统给出,直接调用变量使用。
变量类型
-
用户变量
▪ 局部变量
▪ 会话变量 -
系统变量
▪ 会话变量
▪ 全局变量
用户变量
用户自定义变量是会话级别的变量。其作用域是当前连接,声明、赋值和查询都是用@符号。
BEGIN
#变量的赋值方式一:直接赋值,方式有以下两种。
set @var1 = 2;
set @var2 := 3;
#变量的赋值方式二:将查询结果赋值给变量
select u_id into @var3 from users where u_name = 'zhangsan';
END
局部变量
局部变量一般存在于SQL语句块中,如函数和存储过程中begin和end语句块中,其作用域也仅限该语句块内,生命周期也仅在调用期间。
BEGIN
#变量的定义
declare var int(4) default 0; #declare声明变量必须在存储过程的最开始
#变量的赋值方式一:直接赋值
set var = 2;
#变量的赋值方式二:将查询结果赋值给变量
select u_id into var from users where u_name = 'zhangsan';
END
会话变量
会话变量是服务器为每个客户端连接维护的一系列变量,其作用域与生命周期也仅限当前连接。
#显示所有的会话变量
show session variables;
#查询会话变量的值,方式有以下三种。
show variables like '%auto_increment_increment%';
select @@auto_increment_increment;
select @@session.auto_increment_increment;
select @@local.auto_increment_increment;
#设置会话变量的值,方式有以下三种。
set auto_increment_increment=1;
set session auto_increment_increment=1;
set @@session.auto_increment_increment=1;
set @@local.auto_increment_increment=1;
全局变量
服务器启动根据配置文件初始化全局变量,未定义则使用系统默认值初始化。全局变量作用于server的整个生命周期。
#显示所有的全局变量
show global variables;
#查询全局变量的值的两种方式
show variables like '%sql_warnings%';
select @@global.sql_warnings;
#设置全局变量的值的两种方式
set sql_warnings=FALSE;
set global sql_warnings=FALSE;
set @@global.sql_warnings=OFF;
变量查看
系统变量
SHOW {GLOBAL|SESSION} VARIABLES [LIKE CLAUSE];
状态变量
SHOW {GLOBAL|SESSION} STATUS [LIKE CLAUSE];