补坑+2
#变量
/*
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
*/
-- ----------------------------------------------------------------------****************
#一、系统变量
/*
分类:
全局变量:服务器每次启动将为所有的全局变量赋初始值,针对所有会话(连接)有效,但是不能跨重启
会话变量:仅针对当前的会话有效
说明:由系统提供,非用户定义,属于服务器层面
使用方法:
1、查看所有系统变量
show global |【session】 variables;
2、查看满足条件的部分系统变量
show global |【session】 variablea like '%xx%';
3、查看指定的某个系统变量的值
select @@global |【session】.系统变量名;
4、为某个系统变量赋值
方式一:set global |【session】 系统变量名 = 值;
方式二:set @@global |【session】.系统变量名 = 值;
注意:全局变量(global)和会话变量(session)只是关键字不同,不写默认为是会话变量
*/
-- ---------------演示系统变量-------------------------------
#1、全局变量
-- **--查看所有全局变量------
SHOW GLOBAL VARIABLES;
-- **--查看部分全局变量------
SHOW GLOBAL VARIABLES LIKE '%char%';
-- **--查看指定的某个系统变量的值------
SELECT @@global.autocommit; #查看自动提交功能
SELECT @@global.tx_isolation; #查看隔离级别
-- **--为某个系统变量赋值------
SET GLOBAL autocommit = 0;
SET @@global.autocommit = 1;
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#2、会话变量
-- **--查看所有全局变量------
SHOW VARIABLES;
SHOW SESSION VARIABLES;
-- **--查看部分全局变量------
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%';
-- **--查看指定的某个系统变量的值------
SELECT @@autocommit; #查看自动提交功能
SELECT @@session.autocommit;
SELECT @@tx_isolation; #查看隔离级别
SELECT @@session.tx_isolation;
-- **--为某个系统变量赋值------
SET autocommit = 0;
SET SESSION autocommit = 0;
SET @@autocommit = 1;
SET @@session.autocommit = 1;
-- ----------------------------------------------------------------------****************
#二、自定义变量
/*
说明:变量是用户自定义的,不是由系统提供的
使用步骤:
声明
赋值
使用(查看、比较、运算符)
分类:
用户变量:作用域相当于会话变量,只对当前会话或(连接)有效,可以用在任何地方
局部变量:作用域仅在局部有效(在定义它的begin end中有效)
应用在begin end中,只能是begin end的第一句话
用户变量和局部变量对比:
作用域 定义和使用的地方 语法
用户变量 当前会话 会话中任何地方 必须加@,不限定类型
局部变量 begin end中 begin end中第一句话 一般不加@(select赋值除外),限定类型
*/
-- --------------------------------------------------------------------------
#1、用户变量
-- * step1 *--声明并初始化---------3个方法
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
-- * step2 *--用户变量赋值---------2个方式
方式一: SELECT 或 SET
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
方式二: SELECT INTO
SELECT 字段 INTO @用户变量名 FROM 表名;
-- * step3 *--使用(查看用户变量的值)-----
SELECT @用户变量名;
-- --------------------------------------------------------------------------
#2、局部变量
-- * step1 *--声明-----------------
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值; #赋初始值
-- * step2 *--局部变量赋值---------2个方式
方式一: SELECT 或 SET
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
方式二: SELECT INTO
SELECT 字段 INTO 局部变量名 FROM 表名;
-- * step3 *--使用(查看局部变量的值)-----
SELECT 局部变量名;
-- -----------------------------------------------------
#案例、声明两个变量并赋值,求和,打印
#1、用户变量实现
SET @c1:=20;
SET @c2:=12;
SET @sum:=@c1+@c2;
SELECT @sum;
#2、局部变量不能实现(必须放在begin end第一句话)
DECLARE m1 INT DEFAULT 20;
DECLARE m2 INT DEFAULT 12;
DECLARE SUM INT;
SET SUM:=m1+m2;
SELECT SUM;