用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 “@变量名” 使用就可以。其作用域为当前连接,即当前会话。
@@
指的是系统变量,@
指的是用户自定义变量。
一、语法
1). 赋值
方式一:并且一次可以为多个变量赋值
SET @var_name = expr [, @var_name = expr] ...;
SET @var_name := expr [, @var_name := expr] ...;
赋值时,可以使用 =
,也可以使用 :=
。
但是我们推荐使用 :=
,因为在MySQL中它的比较运算符也是 =
,它是没有 ==
的,因此在MySQL中 =
既可以作为赋值运算符,也可以作为比较运算符,那么为了以示区分,推荐在使用的时候,如果是赋值,那就使用 :=
。
方式二:
SELECT @var_name := expr [, @var_name := expr] ... ;
-- 从表中查询出来的数据赋值给这个变量
SELECT 字段名 INTO @var_name FROM 表名;
2). 使用
SELECT @var_name ;
注意: 用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL,并不会报错。
二、示例
-- 赋值
set @myname = 'itcast';
set @myage := 10;
set @mygender := '男',@myhobby := 'java';
select @mycolor := 'red';
select count(*) into @mycount from tb_user; -- 将tb_user查询结果赋值给mycount变量
-- 使用
select @myname,@myage,@mygender,@myhobby;
select @mycolor , @mycount;
select @abc;