MySQL 用户变量的属性有哪些?
mysqlmysqli database
MySQL 用户变量的属性如下 −
不区分大小写
用户变量不区分大小写。在 MySQL 5 版本之前,它们区分大小写。以下示例可说明这一点 −
示例
mysql> SET @A = 'MySQL'; Query OK, 0 rows affected (0.00 sec) mysql> Select @A, @a; +-------+-------+ | @A | @a | +-------+-------+ | MySQL | MySQL | +-------+-------+ 1 row in set (0.00 sec)
特定于客户端连接
实际上,用户变量特定于客户端连接,它们在该连接内使用,并且仅在该连接持续期间存在。当连接结束时,其所有用户变量都将丢失。
仅适用于表达式
用户变量只能出现在允许使用表达式的地方。它们可以出现在出现常量或文字标识符的地方。以下示例将说明这一点,在该示例中,我们尝试使用用户变量来提供表名。
示例
mysql> Set @table_name = CONCAT('tbl_','Employee'); Query OK, 0 rows affected (0.00 sec) mysql> Create Table @table_name(Id Int); ERROR 1064 (42000): You have an error in your SQL syntax near '@table_name(Id Int)'
分配新值时丢失
当我们为用户变量分配新值时,该变量的值将丢失。换句话说,给定用户变量的值将一直存在,直到我们为其分配另一个值。以下示例将演示这一点 −
示例
mysql> SET @name = 'Rahul'; Query OK, 0 rows affected (0.00 sec) mysql> Select @name; +-------+ | @name | +-------+ | Rahul | +-------+ 1 row in set (0.00 sec)
此时,变量 @name 的值为 ‘Rahul’ 但是当我们将其值更改为 ‘Raman’ 时,先前的值将会丢失。
mysql> SET @name = 'Raman'; Query OK, 0 rows affected (0.00 sec) mysql> Select @name; +-------+ | @name | +-------+ | Raman | +-------+ 1 row in set (0.00 sec)