3 回答
TA贡献1802条经验 获得超10个赞
用户定义变量 (以 @
):您可以访问任何用户定义的变量,而无需声明或初始化它。如果引用未初始化的变量,则该变量的值为 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;
用户变量可以从有限的数据类型集中分配一个值:整数、十进制、浮点、二进制或非二进制字符串或空值。 用户定义的变量是会话特定的。也就是说,一个客户端定义的用户变量不能被其他客户端看到或使用。 它们可以用于 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;
TA贡献1803条经验 获得超6个赞
集
SET @var_name = value
SET @var := value
选择
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
SELECT col1, col2 INTO @var_name, col3 FROM .....
TA贡献1856条经验 获得超11个赞
添加回答
举报