MySQL变量
MySQL变量分类:
- ①系统变量
- 全局变量
- 会话变量
- ②自定义变量
- 用户变量
- 局部变量
1.系统变量
变量是由系统提供的,属于服务器层面,分全局变量和会话变量。
系统变量使用语法:
- 查看所有的系统变量(global/session用法一样):
- show global variables; #查看全局变量
- show session variables; #查看会话变量
- show global variables like "%char%"; #模糊查找
- select @@global.系统变量名 ; #查看某个指定系统变量的值
- 给系统变量赋值:
- set global 全局变量名 = 值;
- set session 会话变量名 = 值;
- set @@global.全局变量名 = 值;
- set @@session.会话变量名 = 值;
注意:全局变量必须加上global ,而会话变量的session可以省略。
- 全局变量和会话变量的作用区别:
- 全局变量的赋值在服务器再次重启前全部有效,但重启后失效,如果需要永久有效需要修改对应的配置文件;
- 会话变量修改只针对当前会话窗口有效,新建一个会话窗口就失效了。
2.自定义变量
变量是用户自定的,非系统提供的变量。使用步骤:申明——赋值——使用。
用户变量:
- 作用域:只针对当前的会话窗口
- 申明:
- set @用户变量名 := 值; #申明并初始化
- select @用户变量名 := 值; #申明并初始化
- 赋值方法1:
- set @用户变量名 := 值; #申明并赋值
- select @用户变量名 := 值; #申明并赋值
- 赋值方法2:
- set @c :=1;
- select count(*) into @c from jalenxr;
- 先申明
- 再赋值:select 字段 into @变量名 from 表;
- 使用:
- select @用户变量名;
- select 成绩,@用户变量名 := @用户变量名+1 from 成绩表 order by 成绩 desc;
## 用户变量
set @a := 1;
set @b := 3;
set @c := @a + @b;
select @c ;
用户变量常用于排名、分组排名等问题中。
局部变量:
- 作用域:仅在定义它的begin ... end中有效,且在第一句。
- 申明:
- declare 变量名 数据类型;
- declare 变量名 数据类型 default 值;
- 赋值方法1:
- set 变量名 := 值; #申明并赋值
- select @变量名 := 值; #申明并赋值
- 赋值方法2:
- 先申明
- 再赋值:select 字段 into 变量名 from 表;
- 使用
- select 局部变量名;
局部变量主要使用在存储过程中。存储过程公众号中有单独的文章讲解。
扫码关注更多数据分析与运营知识干货在此,随时学习!