跳转到内容

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 globalset 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;

参考文献

[编辑 | 编辑源代码]
华夏公益教科书