Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL, what does @@ mean?

Tags:

mysql

I am reading the MySQL documentation on this page: http://dev.mysql.com/doc/refman/5.1/en/set-statement.html

It often uses "@@", but does not define what "@@" means.

Another example is in variable names:

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

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

What is @ vs @@?

like image 212
davidjhp Avatar asked Apr 12 '13 01:04

davidjhp


2 Answers

@@ - System Variable

@@ is used for system variables. Using different suffix with @@, you can get either session or global value of the system variable.

When you refer to a system variable in an expression as @@var_name (that is, when you do not specify @@global. or @@session.), MySQL returns the session value if it exists and the global value otherwise. (This differs from SET @@var_name = value, which always refers to the session value.)


@ - User-Defined Variable

While @ is used for user-defined variables.


More Details

For more detailes read the following section from the official MySQL Reference Manual:

  • SET Statements
like image 167
saurabh Avatar answered Oct 10 '22 19:10

saurabh


Using System Variables:

To indicate explicitly that a variable is a session variable, precede its name by SESSION, @@session., or @@.

User-Defined Variables:

User variables are written as @var_name, where the variable name var_name consists of alphanumeric characters, “.”, “_”, and “$”. A user variable name can contain other characters if you quote it as a string or identifier (for example, @'my-var', @"my-var", or @my-var).

like image 21
Jocelyn Avatar answered Oct 10 '22 20:10

Jocelyn