第六章 变量
/*
分类:
系统变量: 全局变量|会话变量
自定义变量:用户变量| 局部变量
*/
一、系统变量:全局变量、会话变量
/*
系统变量:变量由系统提供,不是用户定义,属于服务器层面,必须拥有super权限才能为系统变量赋值
注意:
若是全局级别,则需要添加GLOBAL
若是会话级别,则需要加SESSION
若是不写,默认为SESSION
使用语法:
1、查看所有的系统变量
SHOW GLOBAL|【SESSION】 VARIABLES;
2、查看满足条件的部分系统变量
SHOW GLOBAL|【SESSION】 VARIABLES LIKE '%CHAR%';
3、查看指定的某个系统变量的值
SELECT @@GLOBAL|【SESSION】.系统变量名;
4、为某个系统变量赋值
方式一:
SET GLOBAL|【SESSION】.系统变量名=值;
方式二:
SET @@GLOBAL|【SESSION】.系统变量名=值;
SET @@变量名=值;
*/
1、全局变量
/*
作用域:服务器每次启动将为所有的全局变量赋初值,针对与所有会话(连接)有效,但不能跨重启
*/
(1)查看所有的全局变量
SHOW GLOBAL VARIABLES;
(2)查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%CHAR%';
(3)查看指定的全局变量的值
SELECT @@GLOBAL.autocommit;
(4)为某个指定的全局变量赋值
SET @@GLOBAL.autocommit=0;
2、会话变量
/*
作用域:仅仅针对于当前会话(连接)有效
*/
(1)查看所有的全局变量
SHOW SESSION VARIABLES;
SHOW VARIABLES;
(2)查看满足条件的部分系统变量
SHOW SESSION VARIABLES LIKE '%CHAR%';
SHOW VARIABLES LIKE '%CHAR%';
(3)查看指定的全局变量的值
SELECT @@SESSION.TRANSACTION_ISOLATION;
SELECT @@TRANSACTION_ISOLATION;
(4)为某个指定的全局变量赋值
SET @@SESSION.TRANSACTION_ISOLATION ='REPEATABLE-READ';
SET SESSION TRANSACTION_ISOLATION ='REPEATABLE-READ';
SET @@TRANSACTION_ISOLATION ='read-uncommitted';#语法不报错,但结果没成功
二、自定义变量:用户变量、局部变量
/*
自定义变量:变量由用户自定义的
使用步骤:
1、声明
2、赋值(
3、使用(查看、比较、运算等)
*/
1、用户变量
/*
作用域:针对于当前会话(连接)有效,等同于会话变量的作用域
应用在任何地方,即begin end里面或begin end
使用步骤:
1、声明并初始化:
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
2、赋值(更新用户变量的值):操作符=或:=
方式一:通过set或select
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
方式二:通过select into
SELECT 字段 INTO 变量名 FROM 表;
3、使用(查看、比较、运算等)
查看:SELECT @用户变量名;
*/
(1)声明并初始化
SET @count=1;
(2)赋值
SELECT COUNT(*) INTO @count FROM employees;
(3)使用-查看用户变量的值
SELECT @count;
2、局部变量
/*
作用域:仅仅在定义它的begin end中有效
应用在begin end中第一句话!!!
使用步骤:
1、声明
DECLARE 变量名 类型;
declare 变量名 类型 DEFAULT 值;
2、赋值或更新
方式一:通过set或select
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
方式二:通过select into
SELECT 字段 INTO 局部变量名 FROM 表;
3、使用
查看:SELECT 局部变量名;
*/
3、对比用户变量和局部变量
/*
作用域 | 定义和使用的位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 会话中的任何地方 | 必须加@符号,不用限定类型 |
局部变量 | begin end中 | 只能在begin end中,且为第一句话 | 一般不加@符号,需要限定类型 |
*/
#案例:声明两变量并赋值,求和并打印
(1)用户变量
SET @n=1;
SET @m:=2;
SELECT @sum:=@n+@m;
SELECT @sum;
(2)局部变量:会报错,必须放在begin end的第一局
DECLARE n INT DEFAULT 1;
DECLARE m INT DEFAULT 1;
DECLARE sum INT;
SET sum = n+m;
SELECT sum;
====================================================
分享,多担待。望有帮助