系统变量是由系统提供的,不需要自定义

9.1 变量的分类

  • 全局变量

服务器层面上的,必须拥有super权限才能为系统变量赋值,作用于整个服务器,也就是针对所有的连接/会话

  • 局部变量

服务器为每一个连接的客户端都提供了系统变量,作用于当前的连接/会话

9.1.1 查看系统变量

  1. # 如果没有显式的声明global或session,则默认是session
  2. show [global|session] variables;

9.1.2 查看指定系统变量的值

select @@[blobal|session].变量名;

9.1.3 为系统变量赋值

# 如果没有显式的声明global或session,则默认是session
# 方式一
set [global|session] 变量名=值
# 方式二
set @@global.变量名=值
set @@变量名=值

9.2 自定义变量

9.2.1 用户变量

作用域:针对于当前会话/连接 生效
位置:可以在begin and中,也可以在begin and外

声明和赋值
# 方式一:
set @变量名=值;`或者`set @变量名:=值;

# 方式二:
或者`select @变量名:=值;

更新值
set @变量名=值;
set @变量名:=值;
select @变量名:=值;
select 值 into @变量名 from 表;

使用变量
select @变量名;

9.2.2 局部变量

作用域:仅仅在定义它的begin and中有效
位置:只能放在begin end中,而且只能放在第一句

声明和赋值
    declare 变量名 类型 [default 默认值]

更新值
set 变量名=值;
set 变量名:=值;
select 变量名:=值;
select 值 into 变量名 from 表;

使用变量
select 变量名;