MySQL: @variable vs. variable. What’s the difference?
在MySQL中,有两种类型的变量:使用@符号定义的用户变量和不使用@符号定义的本地变量。这两种变量虽然都可以作为一个存储块来存储数据,但是它们的使用方式和范围有所不同。
阅读更多:MySQL 教程
用户变量(@variable)
用户变量在MySQL中是动态的,并且可以使用SET语句定义。例如,此语句将在MySQL中定义一个名为“myVar”的用户变量,并将其设置为数字“10”:
SET @myVar = 10;
用户变量可以在MySQL会话中多次更改其值。例如,如果您执行以下语句,则会将“myVar”变量的值更改为“20”:
SET @myVar = 20;
用户变量可以跨多个程序和会话浏览,即使您已经退出了MySQL。这是一种非常有用的功能,因为它允许您跨多个应用程序存储和检索数据。
本地变量(variable)
本地变量在MySQL中是静态的,并且不能使用SET语句定义。在存储过程或函数中定义本地变量通常比定义用户变量更有效,因为本地变量的作用范围仅限于存储过程或函数中。
例如,以下示例演示如何在MySQL中定义一个存储过程并使用本地变量:
DELIMITER //
CREATE PROCEDURE myProc ()
BEGIN
DECLARE myVar INT DEFAULT 10;
SELECT myVar;
END//
DELIMITER ;
在上面的示例中,myVar变量只在存储过程中定义,并且仅在存储过程运行时可用。如果您尝试在存储过程外部使用myVar,MySQL会告诉您该变量未定义。
总结
总的来说,使用用户变量可以方便地跨多个程序和会话浏览存储和检索数据,而使用本地变量可以使存储过程和函数更加高效和安全。正确选择变量类型将有助于提高MySQL应用程序的性能和可维护性。