一、MySQL的变量分类
MySQL变量一共分为两大类:用户自定义变量和系统变量。如下:
用户自定义变量
局部变量
会话变量
系统变量
会话变量
全局变量
局部变量
局部变量一般用于SQL的语句块中,比如存储过程中的begin和end语句块。其作用域仅限于该语句块内。生命周期也仅限于该存储过程的调用期间。
DROP PROCEDURE IF EXISTS add;
CREATE PROCEDURE add (
IN a int,
IN b int
)
BEGIN
DECLARE c int DEFAULT 0;
SET c = a + b;
SELECT c AS c;
END;
会话变量
会话变量即为服务器为每个客户端连接维护的变量。在客户端连接时,使用相应全局变量的当前值对客户端的回话变量进行初始化。
设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量。其作用域与生命周期均限于当前客户端连接。
根据手册,set命令设置变量时若不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION
会话变量的赋值
set session var_name = value;
set @@session.var_name = value;
set var_name = value;
-- 其实我们都是@XXX作为变量名
set @var_name = value;
会话变量的查询
select @@var_name;
select @@session.var_name;
show session variables like "%var%";
全局变量
全局变量影响服务器整体操作。当服务器启动时,它将所有全局变量初始化为默认值。这些默认值可以在选项文件中或在命令行中指定的选项进行更改。要想更改全局变量,必须具有SUPER权限。
全局变量作用于server的整个生命周期,但是不能跨重启。即重启后所有设置的全局变量均失效。要想让全局变量重启后继续生效,需要更改相应的配置文件。
全局变量的赋值
set global var_name = value; //注意:此处的global不能省略。根据手册,set命令设置变量时若不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION
set @@global.var_name = value; //同上
全局变量的赋值
select @@global.var_name;
show global variables like "%var%";
标签:set,name,自定义,会话,MySQL,var,全局变量,变量
来源: https://www.cnblogs.com/wqbin/p/11958197.html