SQL进阶17-变量的声明/使用(输出)--全局变量/会话变量--用户变量/局部变量
/*进阶17 变量 系统变量: 全局变量: 会话变量: 自定义变量: 用户变量: 局部变量: */ /* #一: 系统变量 #说明: 变量由系统提供,不是用户定义的,属于服务器层面 #使用的语法 #1/查看所有的系统变量, show global /[session] variables; 2.查看满足条件的部分系统变量 show global/[session] variables like '%char%'; 3.查看指定的某个系统变量的值 select @@global/[session] .系统变量名; 4.为某个系统变量赋值 方式一: set global/[session] 系统变量名=值; 方式二: set @@global/[session].系统变量名=值; 注意: 如果是全局级别,则需要加上global; 如果是会话级别,则需要加上session ;【如果不写,默认是这个】 */ /* #2>> 会话变量 作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效 #① : 查看所有的会话变量 SHOW VARIABLES; #547行 SHOW SESSION VARIABLES; #547行 #② : 查看部分的会话变量 SHOW VARIABLES LIKE '%char%'; SHOW SESSION VARIABLES LIKE '%char%'; */ /* #2>> 会话变量 作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效 对比用户变量和局部变量: 作用域 定义和使用的位置 语法 用户变量: 当前会话 会话中的任何地方 必须加@符号,不用限定类型 局部变量: begin end中 只能在begin end中,且 一般不用加@符号,需要限定类型 为第一句话 */ #1》 全局变量 #① 查看所有的全局变量 SHOW GLOBAL VARIABLES; #② 查看部分的全局变量 SHOW GLOBAL VARIABLES LIKE 'character%'; #③ 查看指定的全局变量 SELECT @@global.autocommit; #1 #④: 为某个指定的全局变量赋值 SET @@global.autocommit=0; #0 #2>> 会话变量 /* 作用域 : 仅对当前会话(查询的sql文件 / 连接) 有效 */ #① : 查看所有的会话变量 SHOW VARIABLES; #547行 SHOW SESSION VARIABLES; #547行 #② : 查看部分的会话变量 SHOW VARIABLES LIKE '%char%'; SHOW SESSION VARIABLES LIKE '%char%'; #③ : 查看指定的某个会话变量 #select @@tx_isolation; #不支持 #select @@session.tx_isolation; #不支持查询隔离级别 #④ : 为某个会话变量赋值 #set @@tx_isolation='read-uncommitted'; #不支持更改隔离级别 #SET session @@tx_isolation='read-uncommitted'; #二: 自定义变量 /* 说明: 变量是用户自己进行定义的,不是由系统提供的; 使用步骤: 声明/赋值/使用(查看/比较/运算等..) */ #1.用户变量 #作用域:针对当前会话(连接)有效,同于会话变量的作用域 #赋值的操作符: =或:= #① 声明并初始化 SET @用户变量名=值; SET @用户变量名:=值; SELECT @用户变量名:=值; #方式二:通过select into SELECT 字段 INTO 变量名 FROM 表; #输出结果 SELECT @num; #案例: SET @name='john'; SET @name=100; #声明并初始化 SELECT COUNT(*) INTO @num FROM employees; SELECT @num; #----------------------------- #2.局部变量 ------没办法实践!!实践错!!!! /* 作用域:仅仅作用在定义它的begin end中有效 应用在begin end中的第一句话 */ #① 声明 DECLARE 变量名 类型; DECLARE 变量名 类型 DEFAULT 值; #① 赋值 SET 局部变量名=值; SET 局部变量名:=值; SELECT @用户变量名:=值; #方式二:通过select into SELECT 字段 INTO 局部变量名 FROM 表; #③ 使用 SELECT 局部变量名; # 案例--------------- #1.使用用户变量实现加法 SET @m=1; SET @n=2; SET @sum=@m+@n; SELECT @sum; #2.使用局部变量实现加法
使用示例:
我们需要在xxl_job_info表中新建一条记录,但该记录的一个字段`job_group`需要关联其他的表,不同的环境中,该id值不唯一;这里使用自定义变量,来实现相关上线SQL的需求。
自定义变量的SQL使用如下:
执行结果:
你不逼自己一把,你永远都不知道自己有多优秀!只有经历了一些事,你才会懂得好好珍惜眼前的时光!