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 变量名 数据类型【属性】;

 

posted @ 2019-03-26 10:47  坦荡的火星  阅读(310)  评论(0编辑  收藏  举报