MySQL学习之变量
变量
MySQL本质是一种编程语言,需要很多变量来保存数据,mysql中很多的属性控制都是通过MySQL中固有的变量来实现的。
系统变量
系统内部定义的变量,系统变量针对的是所有用户(MySQL客户端)有效。
查看系统所有变量:
show variables(查看所有的系统变量);
show variables like [pattern(模式匹配)](查看指定的名字的系统变量).
mysql允许用户使用select查询变量的数据值(系统变量)
基本语法:select @@变量名
修改系统变量:分为两种修改方法。
1.局部修改(会话级别):只针对当前自己客户端当次连接有效。
基本语法:set 变量名 = 新值;
2.全局修改:针对所有客户端,“所有时刻都有效”。
基本语法:set global 变量名 = 新值;|| set @@global.变量名 = 新值。
全局修改之后,所有连接的客户端并没有发生改变?全局修改只针对新客户生效,(老客户无效)。
注意:如果想要本次连接对应的变量的修改有效,那么不能使用全局修改,只能使用会话级别修改
(set 变量名 = 新值)。
会话变量
会话变量也称之为用户变量,会话变量跟MySQL客户端是绑定的,设置的变量,只对当前用户使用的客户端生效。
定义用户变量:基本语法:set @name = 值。
在MySQL中因为没有比较符号== ,所以使用=代替比较符号,有时候在赋值的时候,会报错,MySQL为了避免系统分不清是赋值还是比较:增加了一个变量的赋值符号:=
基本语法: set @变量名 := 值;
MySQL是专门存储数据的:允许将数据从表中取出存储变量中,查询得到的数据必须只能是一行数据(一个变量对应一个字段值),MySQL没有数组。
1.赋值且查看赋值过程:select @变量 1= 字段1,@变量2 = 字段2 from 数据表 where 条件 limit 1。
2.只赋值:不看过程:select 字段1,字段2,from 数据源 where 条件 into @ 变量1,@变量2.....;
查看自定义变量:基本语法 select @变量名;
MySQL的@与@@区别
@x 是 用户自定义的变量 (User variables are written as @var_name)
@@x 是 global或session变量 (@@global @@session )
局部变量
作用范围在begin和end语句之间,在该语句块里设置的变量,declare 语句专门用于定义局部变量。
1.局部变量是使用declare关键字声明的。
2.局部变量declare语句出现的位置一定是begin和end之间的。(begin---end是在大型 语句块中使用的,函数/存储过程
/触发器).
3.声明语法:declare 变量名 数据类型【属性】;