MySQL变量
系统变量
系统变量由系统定义,不是用户定义,属于服务器层面。系统变量分为全局变量
,会话变量
。
全局变量需要添加global
关键字,会话变量需要添加session
关键字,如果不写,默认会话级别
查看全局变量 show global variables;
查看会话变量 show session variables;
或者show variables;
查看满足条件的部分系统变量 show global |[session] variables like '%char%';
查看指定的系统变量的值 select @@global|[@@session].系统变量名;
为某个系统变量赋值 set global|[session]系统变量名=值;
或者set @@global|[@@session].系统变量名=值;
全局变量作用域:针对于所有会话(连接)有效,但不能跨重启。(重启数据库失效)
1 | #①查看所有全局变量 |
会话变量作用域:针对于当前会话(连接)有效
1 | #①查看所有会话变量 |
自定义变量
变量由用户自定义,而不是系统提供的。作用域:针对于当前会话(连接)有效,作用域同于会话变量。应用在任何地方,也就是begin end里面或者begin end 外面
使用步骤:
- 声明
- 赋值
- 使用(查看、比较、运算等)
用户变量
声明并初始化
赋值操作符:=
或:=
SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;
(只能使用:=
)
赋值
更新变量的值
方式一:
SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;
(只能使用:=
)
方式二:
SELECT 字段 INTO @变量名 [FROM 表 WHERE...];
使用
查看变量的值SELECT @变量名;
1 | # 案例 |
局部变量
作用域:仅仅在定义它的begin end块中有效。应用在 begin end中的第一句话
声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 [DEFAULT 值];
赋值
方式一:
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT 局部变量名:=值;
方式二:
SELECT 字段 INTO 局部变量名 [FROM 表 WHERE....];
使用
SELECT 局部变量名;
对比
作用域 | 定义位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 会话的任何地方 | 加@符号,声明不用指定类型 |
局部变量 | 定义它的BEGIN END中 | BEGIN END中的第一句话 | 一般不用加@,声明需要指定类型 |
1 | #案例:声明两个变量,求和并打印 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kylin!
评论