系统变量
系统内部定义的变量,系统变量针对所有用户(MySQL客户端)有效
查看系统变量:show variables [like 'pattern'];
mysql允许用户使用select查询变量的数据值(系统变量)
基本语法:select @@变量名;
修改系统变量:分为两种修改方式
1、局部修改(会话级别):只针对当前自己客户端当次连接有效
基本语法:set 变量名 = 新值;
2、全局修改:针对所有的客户端,“所有时刻”都有效
基本语法:set global 变量名 = 值; || set @@global.变量名 = 值;
已经连接mysql服务器的客户端,不生效。新连接的客户端才生效
注意:如果想要本次连接对应的变量修改有效,那么不能使用全局修改,只能使用会话级别修改(set 变量名 = 值);
会话变量
会话变量也成为用户变量,会话变量跟mysql客户端是绑定的,设置的变量,只针对当前用户使用的客户端生效
基本语法:set @变量名 = 值;
在mysql中因为没有比较符号==,所以是用=代替比较符号;有时候在赋值的时候,会报错;
mysql为了避免系统分不清是赋值还是比较,特定增加了一个变量的赋值符号: :=
基本语法: set @变量名 := 值;
mysql是专门存储数据的,允许将数据从表中取出存到变量中:
查询得到是数据必须只能是一行数据(一个变量对应一个字段值):mysql没有数组。
1、赋值且查看赋值过程:select @变量1 := 字段,@变量2 := 字段2 from 数据表 where 条件;
2、只赋值,不看过程:select 字段1,字段2 from 数据源 where 条件 into @变量1,@变量2...;
查看变量:select @变量名1,@变量名2...;
局部变量
作用范围在begin到end语句块之间。在该语句块里设置的变量,declare语句专门用于定义局部变量
1、局部变量是试用declare关键字声明
2、局部变量declare语句出现的位置一定是在begin与end之间(begin end 是在大型语句块中使用,函数/存储过程/触发器)
3、声明语法:declare 变量名 数据类型 [属性];