Skip to content

MySQL变量分为系统变量自定义变量

系统变量

变量由系统产生,不是用户定义,属于服务器层面。

语法

1.查看所有的系统变量

sql
show global|session Variables

2.查看满足条件的部分系统变量

sql
show global|session Variables like '%char%'

3.查看某个系统变量的值

sql
select @@global|【sessionVariables.系统变量名

4.为某个系统变量值赋值(方式一)

sql
set global|【session】 Variables 系统变量名 =

5.为某个系统变量值赋值(方式二)

sql
set @@global|【sessionVariables.系统变量名 =

注意:如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认为session

全局变量

作用域:服务器每次启动都会为所有的全局变量赋初始值,针对于所有的会话(连接)都有效,但不能跨重启。如果连接断开,全局变量消失。

语法

1.查看所有的全局变量

sql
show global Variables

2.查看部分的全局变量

sql
show global Variables like '%char%'

3.查看指定的全局变量的值

sql
select @@global.autocommit;
select @@tx_isolation

4.为某个全局变量赋值

sql
set @@global.autocommit = 0;

会话变量

作用域:仅仅针对于当前会话(连接有效),会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。

语法

1.查看所有的会话变量

sql
show variables;
show session variables;

2.查看部分的会话变量

sql
show session variables like "%char%";

3.查看某个指定的会话变量

sql
select @@tx_isolation;
select @@session.tx_isolation;

4.设置某个会话变量的值

sql
方式一:
set @@tx_isolation = 'read-uncommitted'
方式二:
set session tx_isolation = 'read-uncommitted'

凡是上面提到的session,都可以用local这个关键字来代替。

比如:

sql
select @@local.tx_isolation
local是session的近义词。

自定义变量

**1.用户变量:**用户自己定义的,不是系统定义的

作用域:针对于当前会话(连接)有效,相当于会话变量的作用域

语法:

1.声明变量并初始化

sql
#定义/使用
select @变量名  select @变量名:= 字段名 from 表名 where 过滤语句;
set @变量名;
#赋值 方式一:  @num为变量名,value为值  set @num=value;或select @num:=value;方式二:    select into    例:select 字段 into 变量名 from

2.局部变量:

作用域:其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。set语句是设置不同类型的变量,包括会话变量和全局变量。

语法:

声明:

sql
declare 变量名  类型
declare 变量名  类型 default

或者用select …. into…形式赋值
select 表字段 into 局部变量名 fromwhere...;

2.使用

sql
select @局部变量名;
sql
案例:声明两个变量并赋初始值,求和,打印

用户变量

sql
set @m = 1;
set @n = 2;
set @sum = @m + @n;
select @sum

局部变量

sql
declare m int default 1;
declare n int default 2;
declare sum=m+n;
select sum;