首页 >数据库 >mysql教程 >MySQL 中的用户定义变量、本地变量和系统变量有什么区别?

MySQL 中的用户定义变量、本地变量和系统变量有什么区别?

Linda Hamilton
Linda Hamilton原创
2025-01-22 03:11:10750浏览

What's the Difference Between User-Defined, Local, and System Variables in MySQL?

MySQL变量声明与使用

在MySQL中,为了在第二个查询中使用变量,需要先声明并初始化它们。

用户自定义变量(以@开头)

  • 无需声明。
  • 可直接访问,无需事先声明或初始化。
  • 未初始化时值为NULL,数据类型为字符串。
  • 使用SET或SELECT语句进行初始化。
  • 会话特定(其他客户端无法查看或使用)。
  • 例如:
    <code class="language-sql">SET @start = 1, @finish = 10;
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;</code>

局部变量(无前缀)

  • 需要使用DECLARE声明。
  • 用于存储过程中作为输入参数或局部变量。
  • 例如:
    <code class="language-sql">DECLARE start INT unsigned DEFAULT 1;
    DECLARE finish INT unsigned DEFAULT 10;</code>
  • 若缺少DEFAULT子句,初始值为NULL。
  • 作用域仅限于声明它们的BEGIN...END块。

服务器系统变量(以@@开头)

  • 由MySQL服务器管理的系统变量。
  • 可以是GLOBAL(全局)、SESSION(会话)或BOTH(两者)。
  • 影响服务器操作(GLOBAL)或单个客户端连接(SESSION)。
  • 使用SHOW VARIABLES或SELECT @@var_name查看。
  • 使用SET GLOBAL或SET SESSION动态修改。
  • 例如:
    <code class="language-sql">SET GLOBAL sort_buffer_size=1000000;</code>

以上是MySQL 中的用户定义变量、本地变量和系统变量有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn