MySQL-变量

MySQL-变量

起男 1,546 2021-02-23

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中,且为第一句话一般不用加@符号,需要限定类型