MySQL本质是一种编程语言,需要很多变量来保存数据。MySQL中很多的属性控制都是通过MySQL中固有的变量来实现的

系统变量

系统内部定义的变量,针对所有用户(MySQL客户端)有效

mysql用变量做参数插入 mysql变量值_赋值

 

MySQL允许用户使用select查询变量(系统变量)的数据值

基本语法:select  @@变量名;

 

修改系统变量

1、局部修改(会话级别):只针对当前自己客户端当次连接有效

语法:set 变量名= 新值;

2、全局修改:针对所有的客户端,“所有时刻都”有效

语法:set global 变量名 = 值 ;

          set @@global.变量名 = 值;

 

全局修改之后,连接的客户端没有发生改变? 全局修改只针对新客户端生效

而会话级别的修改则会即时生效

 


会话变量

会话变量也称之为用户变量,会话变量跟MySQL客户端绑定,设置的变量只对当前用户当前使用的客户端生效

 

定义用户变量:set @变量名 = 值  / set @变量名 :=

在MySQL中因为没有比较符号 ==,所以用=代替比较符号,有时候在赋值时会报错.

MySQL为了避免系统分不清是赋值还是比较,特定增加一个变量的赋值符号    :=

 

变量赋值

MySQL允许将数据从表中取出存储到变量中,要求查询得到的数据只能是一行数据(一个变量对应一个字段值)

1、赋值且查看赋值过程:select @变量1 := 字段1 ,@变量2 := 字段2 from 数据表 where 条件;

2、只赋值,不看过程:select  字段1,字段2... from 数据源 where 条件 into @变量1,@变量2...;

 

查看变量

select @变量名;

 


局部变量

作用范围在begin到end语句块之间,在该语句块里设置的变量

declare语句专门用于定义局部变量

 

语法:declare 变量名 数据类型 [属性];

 

1、局部变量使用declare关键字声明,(没有该语句则不视为局部变量)

2、局部变量declare语句出现的位置一定是在begin和end之间(begin end是在大型语句块中使用:函数/存储过程/触发器)