目录

  • MySQL和数据库系列文章目录
  • 变量的分类
  • 系统变量
  • 全局变量
  • 会话变量
  • 自定义变量
  • 用户变量
  • 局部变量



变量的分类

  • 系统变量:
  • 全局变量;
  • 会话变量;
  • 自定义变量:
  • 用户变量;
  • 局部变量;

系统变量

  • 说明:变量由系统提供的,不是用户定义,属于服务器层面;
    注意:如果不说明是全局变量还是会话变量,则默认是会话变量;
  • 语法:
  • 查看所有的系统变量
show global variables;
show session variables;
  • 查看满足条件的部分系统变量
show global variables like '%char%';
show session variables like '%char%';
  • 查看指定的某个系统变量的值
select @@global.系统变量名;
select @@session.系统变量名;
  • 为某个系统变量赋值
方式一:
set global 系统变量名 = 值;
set session 系统变量名 = 值;
方式二:
set @@global.系统变量名 = 值;
set @@session.系统变量名 = 值;

全局变量

  • 作用域:服务器每次启动将为所有的全局变量赋初始值,针对所有的会话(连接)有效,但不能跨重启;
  • 查看所有的全局变量
show global variables;
  • 查看部分的全局变量
show global variables like '%char%';
  • 查看指定的全局变量的值
select @@global.全局变量名;
select @@全局变量名;
  • 为某个指定的全局变量赋值
set @@global.全局变量名 = 新值;

会话变量

  • 作用域:仅仅针对于当前会话(连接)有效;
  • 查看所有的会话变量
show variables;
show session variables;
  • 查看部分的会话变量
show variables like '%char%';
show session variables like '%char%';
  • 查看指定的某个会话变量
select @@会话变量名;
select @@session.会话变量名;
  • 为某个会话变量赋值
方式一:
set @@会话变量名 = 新值;
方式二:
set session 会话变量名 = 新值;

自定义变量

  • 说明:变量是用户自定义的;
  • 使用步骤:声明,赋值,使用(查看、比较、运算等)
  • 对比用户变量和局部变量
作用域          定义和使用的位置               语法
用户变量    当前会话        会话中的任何位置               必须加@,不用限定类型
局部变量    begin和end中   只能在begin和end中的第一句话    一般不加@,需要限定类型

用户变量

  • 作用域:针对于当前会话(连接)有效,等同会话变量的作用域;
  • 注意:用户变量可以放在任何地方,可以在begin和end里面,也可以在外面;
  • 声明并初始化
set @用户变量名 = 值;
set @用户变量名 := 值;
select @用户变量名 := 值;
  • 赋值(更新用户变量的值)
方式一:
set @用户变量名 = 值;
set @用户变量名 := 值;
select @用户变量名 := 值;
方式二:
select 字段 into @用户变量名 from 表;
  • 使用(查看用户变量的值)
select @用户变量名;

局部变量

  • 作用域:仅仅在定义它的begin和end里面有效
  • 注意:应用在begin和end中的第一句话;
  • 声明
declare 变量名 类型;
declare 变量名 类型 default 值;
  • 赋值
方式一:
set 局部变量名 = 值;
set 局部变量名 := 值;
select @局部变量名 := 值;
方式二:
select 字段 into 局部变量名 from 表;
  • 使用
select 局部变量名;