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!
 评论













