# 变量
/*
系统变量
全局变量
会话变量
自定义变量
用户变量
局部变量
*/
# 一。系统变量
# 变量由系统提供,不由用户定义,属于服务器层面
/*
使用语法:(不写global,session默认使用会话变量)
1. 查看所有系统变量
SHOW GLOBAL VARIABLES; # 查看全局变量
SHOW 【SESSION】 VARIABLES; # 查看会话变量
2. 查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE 'CHAR';
SHOW 【SESSION】 VARIABLES LIKE 'CHAR';
3. 查看指定的某个系统变量
SELECT @@global.系统变量名;
SELECT @@【SESSION.】系统变量名;
4. 为某个具体的系统变量赋值
# 方式1
SET 【session.】系统变量名=值; # 为会话变量赋值
SET GLOBAL.系统变量名=值 # 为系统变量赋值
#方式2
SET GLOBAL.系统变量名=值;
SET 【SESSION.】系统变量名=值;
*/
SHOW GLOBAL VARIABLES; # 查看全局变量
SHOW SESSION VARIABLES; # 查看会话变量
/*
全局变量作用域:服务器每次启动时将为所有的全局变量赋初始值,
赋值对所有会话(连接)都有效,但不能跨重启
会话变量作用域:仅仅针对于当前会话有效,,修改时也仅修改当前会话/连接的值
*/
# 自定义变量
/*
说明:变量由用户自定义,不由系统直接提供,
使用方式相对灵活,使用较多
使用步骤:
1. 声明
2. 赋值
3. 使用(查看,比较,运算等)
*/
# 用户变量
/*
作用域:针对当前会话/连接有效,同于会话变量的作用域
可以应用在任何地方
*/
# 用户变量声明时必须同时初始化(赋初值)
# 三种初始化方法
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
SET @v1=20;
# 赋值或更新用户变量的值
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
# 下面这种方式也可以用来赋值,只要保证选则出的结果是一个值而不是列表即可
SELECT 字段 INTO @变量名
FROM 表;
SET @v1:=35;
# 使用/查看用户变量值
SELECT @用户变量名;
SELECT @v1;
# 局部变量
/*
作用域:只在局部有效,即定义它的begin end中有效
应用在begin end中,并且只能在其中的第一句位置
*/
# 声明:
DECLARE 变量名 数据类型;
# 声明并初始化
DECLARE 变量名 数据类型 DEFAULT 值;
# 赋值,与用户变量的区别在于不需要在变量名前加@了(SELECT除外)
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
# 下面这种方式也可以用来赋值,只要保证选则出的结果是一个值而不是列表即可(不需要加@)
SELECT 字段 INTO 局部变量名
FROM 表;
# 使用
SELECT 局部变量名;