MySQL:变量

变量

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

系统变量

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

查看系统所有变量:show variables [like 'pattern'];

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

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

修改系统变量:分为两种修改方式

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

基本语法:set 变量名 = 新值;

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

基本语法:set global 变量名 = 值; || set @@global.变量名 = 值;

全局修改之后:所有连接的客户端并没发现改变?全局修改只针对新客户端生效(正在连着的无效)

注意:如果想要本次连接对应的变量修改有效,那么不能使用全局修改,只能使用会话级别修改(set 变量名 = 值);

 

 会话变量

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

定义用户变量:set @变量名 = 值;是错误写法,

在mysql中因为没有比较符号==,所以是用=代替比较符号:有时候在赋值的时候,会报错:mysql为了避免系统分不清是赋值还是比较:特定增加一个变量的赋值符号:  :=

set @变量名 := 值;

Mysql是专门存储数据的:允许将数据从表中取出存储到变量中:查询得到的数据必须只能是一行数据(一个变量对应一个字段值):Mysql没有数组。

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

错误语法:就是因为使用=,系统会当做比较符号来处理

正确处理:使用:=

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

查看变量:select @变量名;

局部变量

作用范围在begin到end语句块之间。在该语句块里设置的变量,declare语句专门用于定义局部变量。

1、 局部变量是使用declare关键字声明

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

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

变量作用域

变量作用域:变量能够使用的区域范围

局部作用域

使用declare关键字声明(在结构体内:函数/存储过程/触发器),而且只能在结构体内部使用

declare关键字声明的变量没有任何符号修饰,就是普通字符串,如果在外部访问该变量,系统会自动认为是字段

会话作用域

用户定义的,使用@符号定义的变量,使用set关键字

会话作用域:在当前用户当次连接有效,只要在本连接之中,任何地方都可以使用(可以在结构内部,也可以跨库)

会话变量可以在函数内部使用

会话变量可以跨库

全局作用域

所有的客户端所有的连接都有效:需要使用全局符号来定义

set global 变量名 = 值;
set @@global.变量名 = 值;

通常,在SQL编程的时候,不会使用自定义变量来控制全局。一般都是定义会话变量或者在结构中使用局部变量来解决问题。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值