11

我正在阅读此页面上的 MySQL 文档:http: //dev.mysql.com/doc/refman/5.1/en/set-statement.html

它经常使用“@@”,但没有定义“@@”的含义。

另一个例子是变量名:

mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| server1    |
+------------+
1 row in set (0.00 sec)

mysql> select @hostname;
+-----------+
| @hostname |
+-----------+
| NULL      |
+-----------+
1 row in set (0.00 sec)

什么是@与@@?

4

3 回答 3

14

@@- 系统变量

@@用于系统变量。使用不同的后缀@@,您可以获得系统变量的会话全局值。

当您在表达式中引用系统变量时@@var_name(即,当您未指定@@global.or时@@session.),如果会话值存在,MySQL 将返回会话值,否则返回全局值。(这与 不同SET @@var_name = value,后者总是指会话值。)


@- 用户定义的变量

While@用于用户定义的变量


更多细节

有关更多详细信息,请阅读官方 MySQL 参考手册中的以下部分:

于 2013-04-12T01:26:23.973 回答
8

使用系统变量

要明确指出变量是会话变量,请在其名称前加上 SESSION、@@session. 或 @@。

用户定义的变量

用户变量写为@var_name,其中变量名var_name 由字母数字字符“.”、“_”和“$”组成。如果您将用户变量名称作为字符串或标识符引用(例如,@'my-var'、@"my-var" 或 @ my-var),则用户变量名称可以包含其他字符。

于 2013-04-12T01:12:23.757 回答
2

来自相同的文档使用系统变量文档-

要明确指出变量是全局变量,请在其名称前加上 GLOBAL 或 @@global.. 设置全局变量需要 SUPER 权限。

要明确指出变量是会话变量,请在其名称前加上 SESSION、@@session. 或 @@。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,不能更改任何其他客户端的变量。

本地和@@local。是 SESSION 和 @@session.. 的同义词。

支持系统变量的 @@var_name 语法以与其他一些数据库系统兼容。

于 2013-04-12T01:15:17.543 回答