MySQL 变量2025年8月19日 | 阅读 6 分钟 变量用于在程序执行期间存储数据或信息。它是为数据贴上适当名称的标签,有助于读者更清晰地理解程序。变量的主要目的是将数据存储在内存中,并在整个程序中使用。 MySQL 可以以三种不同的方式使用变量,如下所示:
用户定义变量有时,我们希望将值从一个语句传递到另一个语句。用户定义变量使我们能够在一个语句中存储一个值,以后可以在另一个语句中引用它。MySQL 提供 SET 和 SELECT 语句来声明和初始化变量。用户定义变量名以 @ 符号开头。 用户定义变量不区分大小写,例如 @name 和 @NAME;它们是相同的。一个人声明的用户定义变量不能被另一个人看到。我们可以将用户定义变量赋值给有限的数据类型,如整数、浮点数、十进制数、字符串或 NULL。用户定义变量的最大长度为64 个字符。 语法以下语法用于声明用户定义变量: 1. 使用 SET 语句 注意:我们可以使用 '=' 或 ':=' 赋值运算符与 SET 语句一起使用。2. 使用 SELECT 语句 示例 1在这里,我们将使用 SET 语句将值赋给变量。 然后,我们可以使用 SELECT 语句显示上述值。 输出 示例 2让我们在 MySQL 数据库中创建 students 表,如下所示: 运行以下语句以获取 'students' 表中学生的最高年龄,并将年龄赋值给用户定义变量 @maxage。 它将产生以下输出: 现在,运行使用 @maxage 变量返回学生最高年龄的 SELECT 语句。 成功执行上述语句后,我们将得到以下结果: Example3如果我们访问未声明的变量,它将给出 NULL 输出。 输出 局部变量它是一种不带 @ 符号前缀的变量。局部变量是强类型变量。局部变量的作用域在声明它的存储程序块中。MySQL 使用 DECLARE 关键字来指定局部变量。DECLARE 语句还结合了 DEFAULT 子句为变量提供默认值。如果您不提供 DEFAULT 子句,它将给出初始值 NULL。它主要用于存储过程程序。 语法我们可以使用以下语法使用 DECLARE 语句: 让我们看下面的例子来使用局部变量。 示例我们也可以使用单个 DECLARE 语句定义两个或多个具有相同数据类型的变量。 下面的例子解释了如何在存储过程中使用 DECLARE 语句。 成功执行上述函数后,按如下方式调用存储过程函数: 它将提供以下输出 系统变量系统变量是所有程序单元的一个特殊类,其中包含预定义的变量。MySQL 包含各种配置其操作的系统变量,每个系统变量都包含一个默认值。我们可以使用 SET 语句在运行时动态更改某些系统变量。它使我们能够在不停止和重新启动服务器的情况下修改服务器操作。系统变量也可以在表达式中使用。 MySQL 服务器提供了一系列系统变量,如 GLOBAL、SESSION 或 MIX 类型。我们可以在服务器的整个生命周期中看到 GLOBAL 变量,而 SESSION 变量仅在特定会话中保持活动状态。 我们可以通过以下方式查看系统变量的名称和值: 1. 要查看正在运行的服务器使用的当前值,请执行以下命令。 2. 当我们想查看基于其编译时默认值的值时,请使用以下命令。 示例 1输出 示例 2输出 使用 MySQL 变量的最佳方法
常见问题1. 什么是 MySQL 变量?为什么使用它们? 在执行查询或会话时,数据会存储在 MySQL 变量中。它们允许开发人员存储值以供后续处理或计算。动态数据可减少查询重复,简化逻辑,并在处理变量时提供灵活性。 2. 用户定义变量与会话全局变量有何区别? 以 @ 开头的用户定义变量是会话特定的,并且在连接关闭之前一直可用。会话变量(例如 @@SESSION.sql_mode)仅影响活动会话的行为。所有新会话都受全局变量(例如 @@GLOBAL.max_connections)的影响,这些变量适用于整个 MySQL 服务器。虽然全局变量也是 MySQL 配置系统的一个组成部分,但用户定义变量通常用于查询或脚本中以存储临时会话数据。 3. 我可以在不同地方使用相同的变量名吗? 虽然不推荐,但在理论上可以多次使用相同的变量名。当同一个变量名用于多个目的时,尤其是在存储过程中,可能会导致误解和错误。最好使用描述性和唯一的名称,以提高可读性并避免逻辑冲突。 4. 变量在查询或会话期间会保留其值吗? 用户定义变量和会话变量仅在会话期间保留其值。当连接断开时,它们的值将丢失。在MySQL 8 中,全局变量不使用 SET PERSIST 进行持久化。在服务器重新启动之前,它们将保持在 0 或更低。局部变量在存储过程完成后将被删除。 5. 如何安全地将查询中的值赋给变量? 可以使用 SELECT ... INTO 语法将查询中的值赋给变量,但要确保查询只返回一行。如果返回零行,变量将设置为 NULL;如果返回多行,则会引发错误。必须仔细管理此行为,以避免逻辑故障,尤其是在生产环境中。 下一主题如何安装 MySQL |
我们请求您订阅我们的新闻通讯以获取最新更新。