MySQL/语言/用户变量
外观
局部变量无法从其函数或存储过程外部访问[1]。
它们像这样声明[2]
DECLARE MyVariable1 INT DEFAULT 1;
- 使用 := 赋值运算符在语句中设置变量的能力
- 例如(@total)用于计算示例中的总计,您必须先拥有总计列,因为它必须在计算个别百分比之前计算。
- 会话变量在整个线程持续时间内设置。
- 在绝大多数情况下,您将使用编程语言来执行此类操作。
- MySQL 变量在处理 MySQL 命令行时非常有用。
- 如果未返回任何记录,则不会为该语句设置用户变量。
- 在字段列表中设置的用户变量不能用作条件。
- 变量的值使用 SET 语句或在带有 := 的 SELECT 语句中设置。
select @test := 2;
select @test + 1; -- returns 3
set @startdate='some_start_date', @enddate='some_end_date'
SELECT @toremember:=count(*) FROM membros;
select @numzero := count(*) from table1 where field=0;
select @numdistinct := count(distinct field) from table1 where field <> 0 ;
select @numzero @numdistinct;
- 您可以将 SELECT 获取的值复制到一个或多个变量中。
SET @id = 0, @name = '';
SELECT id, name INTO @id, @name FROM table1 limit 1;
SELECT @id, @name;
全局变量对所有用户可见,它允许在会话期间或永久地修改配置文件设置。 因此,在更改它们时,有必要分别使用 set global 和 set session 指定这种永久或临时标准。 例如
mysql> set @@global.max_connections = 1000;
mysql> show global variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 60 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> set @@session.wait_timeout=120;