我正在阅读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)
什么是@ vs @@?
答案 0 :(得分:6)
@@ - System Vaiable
@@用于系统变量。使用@@的不同后缀,可以获得系统变量的会话或全局值。
当您将表达式中的系统变量称为@@ var_name时(即,当您未指定@@ global。或@@ session时),MySQL将返回会话值(如果存在),否则返回全局值。 (这与SET @@ var_name = value不同,后者始终引用会话值。)
@ - 用户定义的变量
而@用于用户定义的变量。
更多详情
链接上提供了更多详细信息 - http://dev.mysql.com/doc/refman/5.1/en/set-statement.html
答案 1 :(得分:5)
要明确指出变量是会话变量,请在前面 它的名字由SESSION,@@ session。或@@。
组成
用户变量写为@var_name,其中包含变量名称 var_name由字母数字字符“。”,“_”和“$”组成。一个 用户变量名称可以包含其他字符,如果您将其引用为 字符串或标识符(例如,@'my-var',@“my-var”,或 @
my-var
)。
答案 2 :(得分:2)
来自同一documentation& using system variable docs -
要明确指出变量是全局变量,请在其前面 它的名字由GLOBAL或@@ global .. SUPER特权是必需的 设置全局变量。
要明确指出变量是会话变量,请在前面 它的名字由SESSION,@@ session。或@@。设置会话变量 不需要特殊权限,但客户只能更改自己的权限 会话变量,而不是任何其他客户端的变量。
LOCAL和@@ local。是SESSION和@@ session的同义词。
支持系统变量的@@ var_name语法,以便与其他一些数据库兼容 系统