《弟哥带你学Mysql系列》 - 第八章 变量

136 阅读2分钟

分类:

系统变量:

全局变量

会话变量

自定义变量:

用户变量

局部变量

一、系统变量说明:

变量由系统提供的,不用自定义

语法:

①查看系统变量

show 【global|session 】variables like ''; 

如果没有显式声明global还是session,则默认是session

②查看指定的系统变量的值

select @@【global|session】.变量名; 

如果没有显式声明global还是session,则默认是session

③为系统变量赋值

方式一:

set 【global|session 】 变量名=值; 

如果没有显式声明global还是session,则默认是session

方式二:

set @@global.变量名=值;

set @@变量名=值;

#1》全局变量

作用域:针对于所有会话(连接)有效,但不能跨重启

#①查看所有全局变量

SHOW GLOBAL VARIABLES;

#②查看满足条件的部分系统变量

SHOW GLOBAL VARIABLES LIKE '%char%';

#③查看指定的系统变量的值

SELECT @@global.autocommit;

#④为某个系统变量赋值

SET @@global.autocommit=0;

SET GLOBAL autocommit=0;

#2》会话变量

作用域:针对于当前会话(连接)有效

#①查看所有会话变量

SHOW SESSION VARIABLES;

#②查看满足条件的部分会话变量

SHOW SESSION VARIABLES LIKE '%char%';

#③查看指定的会话变量的值

SELECT @@autocommit;

SELECT @@session.tx_isolation;

#④为某个会话变量赋值

SET @@session.tx_isolation='read-uncommitted';

SET SESSION tx_isolation='read-committed';

二、自定义变量说明:

1、用户变量

作用域:针对于当前连接(会话)生效

位置:begin end里面,也可以放在外面

使用:

①声明并赋值:

set @变量名=值;

set @变量名:=值;

select @变量名:=值;

②更新值

方式一:

set @变量名=值;

set @变量名:=值;

select @变量名:=值;

方式二: #用表里的数据给变量赋值

select xx into @变量名 from 表;

③使用

select @变量名;

2、局部变量

作用域:仅仅在定义它的begin end中有效

位置:只能放在begin end中而且只能放在第一句

使用:

①声明

declare 变量名 类型 【default 值】;

②赋值或更新

方式一:

set 变量名=值;

set 变量名:=值;

select @变量名:=值;

方式二:

select xx into 变量名 from 表;

③使用

select 变量名;

#用户变量和局部变量的对比

作用域 定义位置 语法

用户变量 当前会话 会话的任何地方 加@符号,不用指定类型

局部变量 定义它的BEGIN END中 BEGIN END的第一句话 一般不用加@,需要指定类型