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_conn
ections';• 会话变量:仅对当前客户端连接有效,每个会话独立。通过
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)内。
基本上就这些。根据使用场景选择合适的变量类型:系统变量管理配置,用户变量临时传值,局部变量用于程序逻辑。理解它们的作用域和生命周期很重要。

ections';






