MySQL的变量

用户变量

用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

SET @var_name = expr [, @var_name = expr] ...
mysql> SET @t1=0, @t2=1, @t3=3;
Query OK, 0 rows affected (0.00 sec)
mysql> select @t1, @t2, @t3;
+------+------+------+
| @t1  | @t2  | @t3  |
+------+------+------+
|    0 |    1 |    3 |
+------+------+------+
1 row in set (0.00 sec)
mysql> select @t1:=@t2+@t3;
+--------------+
| @t1:=@t2+@t3 |
+--------------+
|            4 |
+--------------+

系统变量

服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句,可以动态更改这些全局变量。要想更改全局变量,必须具有SUPER权限。
对于动态会话变量,客户端可以通过SET SESSION var_name语句更改它们。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量。

要想设置一个GLOBAL变量的值,使用下面的语法:

mysql> SET GLOBAL sort_buffer_size=value;
mysql> SET @@global.sort_buffer_size=value;

要想设置一个SESSION变量的值,使用下面的语法:

mysql> SET SESSION sort_buffer_size=value;
mysql> SET @@session.sort_buffer_size=value;
mysql> SET sort_buffer_size=value;

如果设置变量时不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION。

要想检索一个GLOBAL变量的值,使用下面的语法:

mysql> SELECT @@global.sort_buffer_size;
mysql> SHOW GLOBAL VARIABLES like 'sort_buffer_size';

要想检索一个SESSION变量的值,使用下面的语法:

mysql> SELECT @@sort_buffer_size;
mysql> SELECT @@session.sort_buffer_size;
mysql> SHOW SESSION VARIABLES like 'sort_buffer_size';