mysql数据库中怎么使用set语句定义用户变量
创始人
2024-12-15 18:03:12
0次

1 用户变量介绍

用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。

引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则变量就只有一个空值。

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

2 用户变量定义

set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:

SET @var_name = expr [, @var_name = expr] ...

也可使用select语句来定义:

SELECT @var_name := expr [, @var_name = expr] ...

用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。它可以是任何随机的,复合的标量表达式,只要其中没有列指定。

一个变量名可以由当前字符集的数字字母字符和“_”、“$”和“.”组成。缺省字符集是ISO-8859-1 Latin1;这可以用mysqld 的--default-character-set 选项更改字符集。

对于SET,可以使用=或:=来赋值,对于SELECT只能使用:=来赋值。

我们可以使用一条简单的select语句查询定义的用户变量的值。

3 用户变量的使用

3.1 通过set的实例

用来把一个值赋给一个变量的标量表达式可以是复合表达式。计算,函数,系统标量以及其他用户变量都是允许的,子查询也是允许的。然后通过select语句可以获取一个用户变量的值,结果是带有一行的一个表。

mysql> set @var1=1, @var2='vartest', @var3=abs(-2), @var4=(select count(*) from mysql.user);
mysql> select @var1, @var2, @var3, @var4;
+-------+---------+-------+-------+
| @var1 | @var2 | @var3 | @var4 |
+-------+---------+-------+-------+
|  1 | vartest |  2 | 25 |
+-------+---------+-------+-------+

在用来为一个用户变量赋值的表达式中,也可以指定其它的用户变量,需要注意的是mysql首先确定所有表达式的值,之后才会把值赋给变量。

例如:

mysql> set @varA = 2; 

对于下面两个例子,varB的值是不同的。

例1:

mysql> set @varA = 3, @varB = @varA;
mysql> select @varB;
+-------+
| @varB |
+-------+
|  2 |
+-------+

例2:

mysql> set @varA = 3; 
mysql> set @varB = @varA;
mysql> select @varB;            
+-------+
| @varB |
+-------+
|  3 |
+-------+

mysql数据库中怎么使用set语句定义用户变量    

3.2 通过select的实例

相对set语句而言,使用select定义变量,会返回一个表格形式的结果。

mysql> select @var1:=1, @var2:='vartest', @var3:=abs(-2), @var4:=(select count(*) from mysql.user);
+----------+------------------+----------------+------------------------------------------+
| @var1:=1 | @var2:='vartest' | @var3:=abs(-2) | @var4:=(select count(*) from mysql.user) |
+----------+------------------+----------------+------------------------------------------+
|    1 | vartest     |       2 |                    25 |
+----------+------------------+----------------+------------------------------------------+
mysql> select @var1, @var2, @var3, @var4;
+-------+---------+-------+-------+
| @var1 | @var2  | @var3 | @var4 |
+-------+---------+-------+-------+
|   1 | vartest |   2 |  25 |
+-------+---------+-------+-------+
+-------+---------+-------+-------+
|   1 | vartest |   2 |  25 |
+-------+---------+-------+-------+

mysql数据库中怎么使用set语句定义用户变量

4 用户变量注意事项

4.1 用户变量用在where或having子句中,他们必须首先用另一条语句来定义,如下面例子,初次查询没有返回结果,先定以后在查询才有输出。

mysql> select @H:='localhost' from mysql.user where host = @H;
Empty set (0.00 sec)
mysql> select @H:='localhost';
+-----------------+
| @H:='localhost' |
+-----------------+
| localhost    |
+-----------------+
1 row in set (0.00 sec)
mysql> select @H:='localhost', user from mysql.user where host = @H;
+-----------------+-----------------+
| @H:='localhost' | user      |
+-----------------+-----------------+
| localhost    |         |
| localhost    | jesse      |
| localhost    | local      |
| localhost    | root      |
| localhost    | user_tab_update |
+-----------------+-----------------+

4.2 用户变量为session级别,当我们关闭客户端或退出登录时用户变量全部消失。如果想用就保存自定义的变量,需要自行创建一个表,将标量insert到表里。

4.3 用户变量名对大小写不敏感。

4.4 未定义的变量初始化是null。

5 补充知识:mysql语句do

在do语句中,使用了一个或多个标量表达式,mysql会一条一条的处理它们,但并不显示表达式的结果。例如我们可以调用函数执行后台的某些事情,而不需要看到其结果。

例如:

mysql> do sleep(5);
Query OK, 0 rows affected (5.00 sec)

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...