跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 变量详解:系统、用户自定义与局部变量应用

MySQL 变量体系涵盖系统变量、用户自定义变量及局部变量。系统变量分全局与会话级,影响服务配置;用户自定义变量以@开头,无需声明,限于当前会话;局部变量需在存储过程中 DECLARE 声明,作用域受限。掌握不同变量的作用域与赋值语法,是编写高效存储过程的基础。本文通过实际 SQL 示例演示了查看、设置及在存储过程中定义变量的具体用法。

人间过客发布于 2025/1/18更新于 2026/8/2335 浏览
MySQL 变量详解:系统、用户自定义与局部变量应用

MySQL 变量详解:系统、用户自定义与局部变量应用

在 MySQL 中,变量体系其实很清晰,主要分三类:系统变量、用户自定义变量和局部变量。理解它们的作用域和使用方式,对编写高效的存储过程至关重要。

1. 系统变量

系统变量由 MySQL 提供,属于服务层面。使用级别分为全局(GLOBAL)和会话(SESSION)。

  • 全局变量:对所有会话生效,重启后失效,需修改配置文件永久保存。
  • 会话变量:仅对当前连接生效。

若不指定级别,默认为 SESSION。

查看系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES;
SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '变量名';
SELECT @@[SESSION | GLOBAL].变量名;
设置系统变量
SET [ SESSION | GLOBAL ] 变量名 = 值;
SET @@[SESSION | GLOBAL].变量名 = 值;

实战示例: 查看包含 auto 的变量:

SHOW VARIABLES LIKE '%auto%';

修改自动提交:

SET @@session.autocommit = 0;

2. 用户自定义变量

这类变量无需声明,直接赋值即可,但仅限当前会话。未赋值时值为 NULL。

语法格式

定义并赋值:

-- SET 方式
SET @变量名 = 值;
SET @变量名 := 值; -- 推荐用于运算场景,避免符号冲突

-- SELECT 方式
SELECT @变量名 := 值;

查询结果赋值:

SELECT 字段 INTO @变量名 FROM 表名;

实战示例:

SET @username := 'wang', @age := 19;
SELECT @username, @age;

3. 存储过程中的局部变量

局部变量需在 BEGIN...END 块中通过 DECLARE 声明,作用域仅限于该存储过程。

语法格式
DECLARE 变量名 类型 [DEFAULT 默认值];
SET 变量名 = 值;
SELECT 字段 INTO 变量名 FROM 表名;

实战示例: 创建一个简单的存储过程:

CREATE PROCEDURE proc_2()
BEGIN
    DECLARE ryxxb_count INT DEFAULT 0;
    DECLARE username VARCHAR(10);
    
    SET username := 'jiangxl';
    SELECT COUNT(*) INTO ryxxb_count FROM ryxxb;
    
    SELECT ryxxb_count, username;
END;

CALL proc_2();

这里有个坑要注意:局部变量必须先声明再使用,且不能与参数名冲突。另外,用户自定义变量和局部变量的赋值方式虽然相似,但前者不需要 DECLARE,后者必须声明,这点别搞混了。

目录

  1. MySQL 变量详解:系统、用户自定义与局部变量应用
  2. 1. 系统变量
  3. 查看系统变量
  4. 设置系统变量
  5. 2. 用户自定义变量
  6. 语法格式
  7. 3. 存储过程中的局部变量
  8. 语法格式
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Go Web 必备理论
  • 人工智能大模型在数字化营销中的三种核心应用模式
  • 基于C++构建ROS2动作通信的完整生命周期
  • Spring 事务及其传播机制详解
  • Stable Diffusion 潜空间扩散生成流程解析
  • AI 编程的本质:模式匹配与人类理解的边界
  • AI 浪潮下计算机专业学习路径:从代码写手到系统掌舵者
  • MAVROS 安装与基础知识梳理及 ROS C++ 仿真案例
  • AI 在测试中的落地场景与工程实践
  • 从零搭建 AI 运维系统:MCP AI Copilot 架构与部署
  • Java RESTful 接口开发实战指南
  • AI 变现真相:为何学百种工具仍赚不到钱
  • Python 内置函数常用示例与用法详解
  • 利用 AI 辅助开发 imToken 生态智能合约交互与监控脚本
  • OpenClaw 多 Agent 路由:Gateway 如何托管多个 AI 大脑
  • MBA 培训管理系统低代码开发实战指南
  • Python 构建 MCP 应用实战指南
  • GitNexus 技术解析:基于知识图谱的代码库智能分析
  • Stable Diffusion XL 1.0 部署实操:阿里云 PAI-EAS 上的 Streamlit 应用封装
  • PentAGI 基于 Docker 的 AI 自动化渗透环境部署指南

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online