MySQL中的变量

MySQL中的变量有三种类型:局部变量、会话变量及全局变量。

局部变量

Local variables。局部变量的作用范围是语句或语句块。一旦语句或语句块执行完成,变量就会超出范围。

使用declare关键字定义的变量就是局部变量,它通常都是出现在存储过程中。

delimiter $$
create procedure sp_add(in a integer,in b integer)
begin
	DECLARE result INTEGER default 0;
    ...
end$$
delimiter ;

其中result就是一个局部变量,它的作用范围就是其存储过程(sp_add)的执行期间。

会话变量

Session variables。Session变量的作用范围是MySQL服务的session。Session从连接到服务器时开始,当连接断开时关闭。一旦连接关闭,则此类型的变量就会超出范围。在你的连接中创建的变量不能被其他session引用。定义或引用一个session变量,需要在变量名的前面加上@dokbok

# 设置session变量aa
set @aa = 1000;
# 查看session变量aa
select @aa;

由于会话变量的作用范围是连接,因此如果你使用MySQL Workbench的客户端,那么就代表你在一个SQL Tab中创建的会话变量可以在另外SQL Tab中使用。

全局变量

全局变量是跨连接存在的。

它们使用GLOBAL关键字创建,如SET GLOBAL max_connections = 300;

全局变不是用户自定义的,它是与运行中服务器配置捆绑在一起的。因此使用全局变量设置服务器中不存在的配置是错误的。

# 正确,因为存在max_connections这样的配置
SET GLOBAL max_connections = 300;
# 错误 ,因为不存在aa这样服务器配置项
SET GLOBAL aa = 100;

查看系统中的变量

# 查看所有变量
show variables;
# 使用模糊查询
show variables like '%change%';

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注