一,系统变量
系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)和会话变量(SESSION)
1,查看系统变量 (不设置默认为session)
show [session | global] variables;
--查看所有系统变量
show [session | global] variables like '……';
--可以通过like模糊匹配方式查找变量
select @@[session | global] 系统变量
--查看指定变量的值
2,设置系统变量
set [session | global] 系统变量 = 值;
set @@[session | global] 系统变量 = 值;
注意:虽然设置全局,但是当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;
3,注意:用户自定义的变量无需对其声明或者初始化,只不过查询到的值为null
三,局部变量
局部变量是根据需要在局部生效的变量,在访问之前,需要declare声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其声明的begin …… end块。
1,声明declare 变量名 变量类型 [default ...]
变量类型就是数据库字段类型,int、bigint、char、varchar、date、time等
2,赋值set 变量名 = 值;
set 变量名 := 值;
select 字段名 into 变量名 from 表名...;