本文主要是介绍mysql中变量的使用,包括用户变量,全局,会话还有局部变量。本文内容主要参考自mysql用户手册和相关链接。
1. 用户变量: (本次连接有效)
定义方式 set @变量名:=值 或 set @变量名=值 或 select 中@变量名:=值
例子:set @a:=5 或 set@a=3 或 select @a:=sum(c1) from A;
备注: 使用用户变量将阻止查询使用缓存
未初始化的用户变量会被系统初始化为 string的null
可以通过使用用户变量在关系型数据库语句中实现过程话逻辑 , (参考自:http://www.mysqldiary.com/user-defined-variables/)
例如,下面的sql查询实现了user_value的累加:
select user-id, user-value, @x:=if(@same_value=user_id, @x+user_value, 1) as num, @same_value:=user_id as dummy
from users, (selec @x:=0, @same_value:='') t
order by user_id
2. 全局变量:(全局有效)
定义方式 set[global] 变量名=值, set @@[global] 变量名=值
例子: set @@var =5
3. 局部变量:(只在当前begin...end块中有效)
定义方式 declare 变量名 类型
赋值方式 set 变量名 =值
例子: declare a int;
set a = 5;