目录
- 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 局部变量名;