变量
分类
系统变量:
全局变量
会话变量
--------------------------------
自定义变量:
用户变量
局部变量
---------------------------------
系统变量
说明:变量由系统提供,不是用户定义,属于服务器层面
使用的语法
#1.查看所有的系统变量
------------------------
SHOW GLOBAL VARIABLES;//全局变量
SHOW SESSION VARIABLES;//会话变量
#2.查看满足条件的部分系统变量
------------------------
SHOW GLOBAL| SESSION VARIABLES LIKE '%char%';
#3.查看指定的某个系统变量的值
------------------------
SELECT @@GLOBAL.系统变量名;
SELECT @@SESSION.系统变量名;
#4.为某个系统变量赋值
方式一:
------------------------
SET GLOBAL| SESSION 系统变量名 = 值;
方式二:
------------------------
SET @@ GLOBAL|SESSION .系统变量名 = 值;
注意:如果是全局级别需加GLOBAL 如果是会话级别需加SESSION;
全局变量
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启
实践:
#1.查看所有的全局变量
-----------------------------
SHOW GLOBAL VARIABLES;
#2.查看部分的全局变量
------------------------------
SHOW GLOBAL VARIABLES LIKE '%char%';
#3.查看指定的全局变量的值
------------------------------
SELECT @@global.autocommit;
SELECT @@tx_isolation;
#4.为某个指定的全局变量赋值
------------------------------
SET @@global.autocommit = 0;
会话变量
作用域:仅仅针对于当前会话(连接)有效
实践
#1.查看所有的会话变量
-------------------------
SHOW SESSION VARIABLES;
#2.查看部分的会话变量
-------------------------
SHOW SESSION VARIABLES LIKE '%char%';
#3.查看指定的某个会话变量
-------------------------
SELECT @@session.tx_isolation;
#4.为某个会话变量赋值
--------------------------
方式一:
SET @@session.tx_isolation='read-uncommitted';
方式二:
SET SESSION tx_isolation = 'read-committed';
自定义变量
说明:变量是用户自定义的,不是由系统提供的
使用步骤:
声明
赋值
使用(查看、比较、运算等)
用户变量
作用域:针对于当前会话(连接)有效,同于系统变量中的会话变量的作用域
应用在在任何地方,可以在BEGIN END 里面也可以在外面
使用步骤:
#1.声明并初始化
SET @用户变量名 = 值;或
SET @用户变量名:= 值;或
SELECT @用户变量名:=值;
-----------------------------------
#2.赋值(更新用户变量名的值)
方式一:通过SET或SELECT
SET @用户变量名 = 值;或
SET @用户变量名:= 值;或
SELECT @用户变量名:=值;
方式二:通过SELECT INTO
SELECT 字段 INTO 变量名
FROM 表;
-----------------------------------
#3.使用(查看用户变量的值)
SELECT @用户变量名;
局部变量
作用域:仅仅在定义它的BEGIN END中有效
应用在BEGIN END 中的第一句话!!!
使用步骤:
#1.声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
-------------------------------
#2.赋值
方式一:通过SET或SELECT
SET 局部变量名 = 值;或
SET 局部变量名 = 值;或
SELECT @局部变量名:=值;
方式二:通过SELECT INTO
SELECT 字段 INTO 局部变量名
FROM 表;
-------------------------------
#3.使用
SELECT 局部变量名;
对比用户变量和局部变量
案例:声明两个变量并赋初始值,求和,并打印
#1.用户变量
SET @n=1;
SET @m=2;
SET @sum = @m+@n;
SELECT @sum;
-------------------------------
#2.局部变量
以下方法会报错
DECLARE m INT DEFALUT 1;
DECLARE n INT DEFAULT 2;
DECLARE SUM INT;
SET SUM = m+n;