MySQL-变量
系统变量
变量由系统提供,不是用户定义,属于服务器层面
查看所有
show global|[session] variables
查看部分
show global|[session] variables like '%xxx%'
查看某个
select @@global|[session].系统变量名
赋值
set global|[session] 系统变量名 = 值
set @@global|[session].系统变量名 = 值
如果是全局基本,则需要加global,如果是会话级别,则需要加session,如果不写默认session
全局变量
服务器每次启动将为所有的全局变量赋初始值,针对所有连接(会话)都有效
但不能跨重启
如果需要跨重启,则要修改配置文件
会话变量
仅仅针对于当前连接(会话)有效
自定义变量
变量是用户自定义的,不是系统的
用户变量
针对于当前连接(会话)有效,类似于会话变量的作用域
可以在begin end里,也可以在begin end外
声明并初始化
set @用户变量名=|:=值
select @用户变量名:=值
更新
set @用户变量名=|:=值
select @用户变量名:=值
select 字段 into @用户变量名 from 表
(此方法字段只能有一个值)
select 值 into @用户变量名
使用
select @用户变量名
局部变量
仅仅在定义它的begin end中有效
只能是begin end中的第一句话
声明
declare 变量名 类型
declare 变量名 类型 default 值
赋值
set 局部变量名 =|:= 值
select @局部变量名 := 值
select 字段 into 局部变量名 from 表
select 值 into 局部变量名
使用
select 局部变量名
区别:
作用域 | 定义和使用的位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 当前会话中的任何地方 | 必须加@符号,不用限定类型 |
局部变量 | begin end中 | 只能在begin end中,且为第一句话 | 一般不用加@符号,需要限定类型 |