变量
一、概述
-
定义
在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间数据,或输出最终的结果数据。
-
分类
分类 细分 关键字 系统变量 全局系统变量(全局变量) GLOBAL * 会话系统变量(local变量)(默认) SESSION 用户自定义变量 会话用户变量 * 局部变量 系统变量 及 用户自定义变量
二、系统变量
-
定义
属于服务器层面。启动MySQL服务,MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例的属性、特征。
要么是编译MySQL时参数的默认值,要么是配置文件 - my.ini 中的参数值。
-
分类
有些系统变量只能是全局的;
有些系统变量既可以是全局又可以是会话;
有些系统变量只能是当前会话(相当于在Natival中连接了一次用户)
-
作用时效
变量 时效 失效 1 系统全局变量 此次MySQL服务器的启动时间内 重启MySQL服务器,
所有的系统全局变量全部变为默认值,
在上一次启动中修改的全局变量全部失效2 系统会话变量 一次会话,
即navicat客户端的一次连接重启navicat客户端或
navicat客户端开启另一个连接 -
查看
# 查看全部系统变量 SHOW GLOBAL VARIABLES; SHOW SESSION VARIABLES; # 查看部分系统变量 SHOW GLOBAL VARIABLES LIKE '%标识符%'; SHOW SESSION VARIABLES LIKE '%标识符%'; # 查看指定系统变量 SHOW @@globle.变量名; SHOW @@session.变量名;
-
修改
在MySQL服务器运行器即可修改
# 为某个系统变量赋值 SET @@globle.变量名 = 变量名; SET GLOBAL 变量名 = 变量名; # 为某个会话变量赋值 SET @@session.变量名 = 变量名; SET SESSION 变量名 = 变量名;
三、用户自定义变量
-
会话用户变量(以@开头)
# 设置用户变量 SET @用户变量 = 值; # 查看用户变量 SELECT @用户变量 := 表达式; SELECT 表达式 INTO @用户变量 [FROM 等子句] SELECT @num := COUNT(*) FROM employees; SELECT AVG(salary) INTO @avgsalary FROM employees;
-
查看用户变量
只能放在BEGIN…END中,只能放在第一句
# 声明变量 DECLARE 变量名 类型 [DEFAULT 值]; # 变量赋值 SET 变量名 = 值; SELECT 字段名或表达式 INTO 变量名 FROM 表; # 查看变量 SELECT 局部变量名;