(一)系统变量
系统变量由系统提高,不是用户定义,属于服务器层面。
系统变量分为全局变量和会话变量。
1.查看所有的全局/会话变量
show global/session variables;
2.查看满足条件的部分全局/会话变量
show global/session variables like '条件';
3.查看指定的某个全局/会话变量的值
select @@global/session.系统变量名;//默认会话变量
4.为某个全局/会话变量赋值
方式一:
set global/session 系统变量名=值;
方式二:
set @@global/session.系统变量名=值;
注意:
1.如果是全局级别,需要加global,如果是会话级别,需要加session,如果不写,则默认session。
2.服务器每次启动将为所有的全局变量赋初始值,全局变量针对于所有的会话/连接有效,但不能跨重启。
3.会话变量仅仅针对于当前会话(连接)有效。
(二)自定义变量
自定义变量是用户自定义的,不是由系统定义的。
1.用户变量
用户变量针对于当前会话(连接)有效,同于会话变量的作用域。
应用在任何地方,也就是begin end里面或begin end 外面。
1)声明并初始化用户变量
set @用户变量名=值;
或
set @用户变量名:=值;
或
select @用户变量名:=值;
2)赋值用户变量
set @用户变量名;
或
set @用户变量名;
或
select @用户变量名;
或
select 字段 into 用户变量名 from 表;
3)查看用户变量的值
select @用户变量名;
2.局部变量
局部变量仅仅在定义它的begin and 中有效。
应用在begin end 中的第一句话。
1)声明局部变量
declare 变量名 类型;
declare 变量名 类型 default 值;//声明并赋值
2)赋值局部变量
set 局部变量名=值;
或
set 局部变量名:=值;
或
select @局部变量名:=值;
或
select 字段 into 局部变量名 from 表;
例 声明两个变量并赋初始值,求和,并打印。
//1.用户变量
set @m=1;
set @n=2;
set @sum=@m+@n
select @sum;
//2.局部变量
declare m int default 1;
declare n int default 2;
declare sum int;
set sum=m+n;
select sum;