变量
系统变量:全局变量(global)、会话变量(session)
自定义变量:用户变量、局部变量
系统变量
系统变量:变量由系统提供,不是用户定义,属于服务器层面
查看系统变量
查看系统变量
#查看所有的系统变量
SHOW GLOBAL|SESSION VARIABLES;
#global是全局,session是会话
#如果没有显式声明global还是session,则默认是session
#查看满足条件的部分系统变量
SHOW GLOBAL|SESSION VARIABLES LIKE '';
查看指定的系统变量的值
SELECT @@global|session.变量名;
#如果没有显式声明global还是session,则默认是session
为系统变量赋值
#方式一
SET GLOBAL|SESSION 系统变量名 = 值;
##如果没有显式声明global还是session,则默认是session
#方式二
SET @@global|session.系统变量名 = 值;
SET @@变量名=值;
全局变量
服务器层面上的,必须拥有super权限才能为系统变量赋值,作用域为整个服务器,也就是针对所有连接(会话)有效,但不能跨重启
会话变量
服务器为每一个连接的客户端都提供了系统变量,作用域为当前的连接(会话)
自定义变量
用户变量
作用域:针对于当前连接(会话)生效,同于会话变量的作用域
位置 begin end里面,也可以放在外面
使用:
①声明并初始化
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
②更新值
#方式一
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
#方式二
SELECT 字段 INTO @用户变量名
FROM 表;
③使用(查看用户变量的值)
SELECT @用户变量名;
局部变量
作用域:仅仅在定义它的 begin end 中有效
位置:只能放在 begin end 中,而且只能放在第一句
使用:
①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
②赋值或更新
#方式一
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
#方式二
SELECT 字段 INTO 局部变量名
FROM 表;
③使用
SELECT 局部变量名;