mysql变量分为系统变量和用户定义变量。系统变量包括全局变量(如SET GLOBAL max_connections=500)和会话变量(如SET session sql_mode),用于控制服务器行为;用户定义变量以@开头(如@name=’张三’),在会话中临时存储数据;局部变量在存储过程等内部声明使用(如DECLARE var_name int default 0),作用域限于BEGIN…END块内。不同变量类型适用于配置管理、数据传递与程序逻辑场景。

mysql 中的变量主要分为两大类:系统变量和用户定义变量。它们在存储和使用方式上有所不同,适用于不同的场景。
系统变量(System Variables)
系统变量是 MySQL 内置的变量,用于控制服务器运行行为或查看运行状态。可分为全局变量和会话变量。
• 全局变量:影响整个 MySQL 服务器的运行,所有会话共享。通过 SET GLOBAL 或 SET @@global. 修改。
示例:SET GLOBAL max_connections = 500;
查看:SHOW GLOBAL VARIABLES LIKE 'max_connections';
• 会话变量:仅对当前客户端连接有效,每个会话独立。通过 SET SESSION 或 SET @@session. 设置。
示例:SET SESSION sql_mode = 'STRICT_TRANS_tableS';
查看:SHOW SESSION VARIABLES LIKE 'sql_mode';
用户定义变量(User-Defined Variables)
由用户在会话中自定义的变量,以 @ 开头,不需要提前声明,赋值后即可使用,仅在当前会话中有效。
• 定义与赋值:SET @name = '张三'; 或 select @age := 25;
• 使用:SELECT @name;
• 可用于 SQL 语句中传递数据,如在多个查询间暂存结果或实现行号模拟。
局部变量(Local Variables)
局部变量只能在存储过程、函数或触发器内部使用,必须先声明再使用。
• 声明语法:DECLARE var_name INT DEFAULT 0;
• 赋值方式:SET var_name = 10; 或 SELECT column INTO var_name FROM table WHERE ...;
• 作用范围仅限于其所在的复合语句(BEGIN…END)内。
基本上就这些。根据使用场景选择合适的变量类型:系统变量管理配置,用户变量临时传值,局部变量用于程序逻辑。理解它们的作用域和生命周期很重要。


