mysql中变量的种类以及定义、赋值

mysql中存在局部变量、用户变量、会话变量、全局变量,其中会话变量和全局变量统称为系统变量。

一、局部变量

局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。
declare语句专门用于定义局部变量,可以使用default来说明默认值,通过set赋值或者select into 赋值。

declare A int default 1;
set A=2;

declare B varchar(20);
select name into B from table where id=1; #不能通过select := 赋值
二、用户变量

用户变量与数据库连接有关,到数据库实例接断开的时候,变量就会消失。
mysql中用户变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。
可以通过set或者select赋值:

set @a=1;

select @b:=name from table where id=1;
select name into @b from table where id=1;
select @c:='abc';
三、系统变量

系统变量分为全局变量与会话变量。
查看所有系统变量:

show session variables;
show global variables 
(1)会话变量

服务器为每个连接的客户端维护一系列会话变量。在客户端连接数据库实例时,使用相应全局变量的当前值对客户端的会话变量进行初始化。
设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。
会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。二者有些类似,不过用户变量是面向用户自定义使用的,会话变量是面向用户维护数据库的。

设置会话变量有如下四种方式更改会话变量的值:

set session var_name = value;
set var_name = value;  #缺省session关键字默认认为是session
set @@session.var_name = value;
set @@var_name = value; #缺省session关键字默认认为是session

查看一个会话变量有如下三种方式:

select @@var_name; #省略了session
select @@session.var_name;
show session variables like "%var%";
show variables like "%var%";

凡是上面提到的session,都可以用local这个关键字来代替,二者为近义词。

(2)全局变量

全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。
全局变量作用于server的整个生命周期,但是不能跨重启。即重启后所有设置的全局变量均失效。要想让全局变量重启后继续生效,需要更改相应的配置文件。

要设置一个全局变量,有如下两种方式

set global var_name = value; //注意:此处的global不能省略。根据手册,set命令设置变量时若不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION
set @@global.var_name = value; //同上

不过要想更改全局变量的值,需要拥有SUPER权限

要想查看一个全局变量,有如下两种方式:

select @@global.var_name;
show global variables like%var%;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值