MySQL中主要有三种类型的变量:
- 用户定义的变量 (以开头
@
):
您可以访问任何用户定义的变量,而无需对其进行声明或初始化。如果引用的变量尚未初始化,则其值为
NULL和字符串类型。
SELECt @var_any_var_name
您可以使用
SET或
SELECT语句来初始化变量:
SET @start = 1, @finish = 10;
要么
SELECT @start := 1, @finish := 10;SELECT * FROM places WHERe place BETWEEN @start AND @finish;
可以从一组有限的数据类型中为用户变量分配一个值:整数,十进制,浮点数,二进制或非二进制字符串或NULL值。
用户定义的变量是特定于会话的。即,一个客户端定义的用户变量不能被其他客户端看到或使用。
可以
SELECt使用高级MySQL用户变量技术在查询中使用它们。
- 局部变量 (无前缀):
局部变量需要在使用
DECLARE之前声明。
它们可用作存储过程内的局部变量和输入参数:
DELIMITER //CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERe place BETWEEN start AND finish; END; //DELIMITER ;CALL sp_test(5);
如果
DEFAULT缺少该子句,则初始值为
NULL。
局部变量的范围是
BEGIN ... END在其内声明的块。
- 服务器系统变量 (以前缀
@@
):
MySQL服务器维护许多配置为默认值的系统变量。它们可以是类型
GLOBAL,
SESSION或
BOTH。
全局变量影响服务器的整体 *** 作,而会话变量影响单个客户端连接的服务器 *** 作。
要查看正在运行的服务器使用的当前值,请使用
SHOW VARIABLES语句或
SELECT @@var_name。
SHOW VARIABLES LIKE '%wait_timeout%';SELECT @@sort_buffer_size;
可以在服务器启动时使用命令行或选项文件中的选项来设置它们。其中的大多数可以在服务器运行时使用
SET GLOBAL或动态更改
SET SESSION:
-- Syntax to Set value to a Global variable:SET GLOBAL sort_buffer_size=1000000;SET @@global.sort_buffer_size=1000000;-- Syntax to Set value to a Session variable:SET sort_buffer_size=1000000;SET SESSION sort_buffer_size=1000000;SET @@sort_buffer_size=1000000;SET @@local.sort_buffer_size=10000;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)