随笔 - 832  文章 - 2  评论 - 31  阅读 - 167万

MySQL中变量的使用

1,变量的类型

  MySQL中的存储过程类似java中的方法。既然如此,在存储过程中也同样可以使用变量。

  mysql中的变量可以分为以下几个类型:局部变量,用户变量,会话变量,全局变量。

2,变量的定义及使用

 1,局部变量

    MySQL中的局部变量与java中的局部变量非常类似,java中的局部变量作用域是变量所在的方法,而MySQL中的局部变量作用域是所在的存储过程。

    以下是局部变量的定义及赋值方式:声明用到了关键字declare。

复制代码
BEGIN
    #Routine body goes here...
    #变量的定义
    declare var2 int(4);

    #变量的赋值方式一:直接赋值
    set var2 = 2;

    #变量的赋值方式二:将查询结果赋值给变量
    select u_id into var2 from users where u_name = 'zhangsan';
END
复制代码

2,用户变量

    用户变量类似于java中的成员变量,java中的成员变量使用对象访问,例如:user.getName();访问User类中的name成员变量,在不做修改的前提下,无论调用多少次该方法返回值都是一样的,成员变量的作用域是所在类。MySQL中的用户变量的作用域是当前连接,声明、赋值和查询都是用@符号。

复制代码
BEGIN
    #Routine body goes here...

    #变量的赋值方式一:直接赋值,方式有以下两种。
    set @var1 = 2;
    set @var2 := 3;

    #变量的赋值方式二:将查询结果赋值给变量
    select u_id into @var3 from users where u_name = 'zhangsan';

END
复制代码

3,会话变量

    服务器为每个连接的客户端维护一系列会话变量。其作用域仅限于当前连接,即每个连接中的会话变量是独立的。以下是对于会话变量的相关操作:

复制代码
#显示所有的会话变量
show session variables;
       
#查询会话变量的值,方式有以下三种。
show variables like '%auto_increment_increment%'; #查询变量值的通用方式
select @@auto_increment_increment;                #使用@@方式查询
select @@session.auto_increment_increment;        #使用@@session.的方式,类似于java中对象名.变量名 
select @@local.auto_increment_increment;          #使用@@local.的方式,类似于java中对象名.变量名 

#设置会话变量的值,方式有以下三种。
set auto_increment_increment=1;           #直接设置
set session auto_increment_increment=1;   #使用session关键字,设置选定的范围
set @@session.auto_increment_increment=1; #使用@@session.的方式,类似于java中对象名.变量名
set @@local.auto_increment_increment=1;   #使用@@local.的方式,类似于java中对象名.变量名
复制代码

4,全局变量

    当服务启动时,它将所有全局变量初始化为默认值。其作用域为server的整个生命周期。

复制代码
#显示所有的全局变量
show global variables;

#查询全局变量的值的两种方式
show variables like '%sql_warnings%'; #查询变量值的通用方式
select @@global.sql_warnings;         #使用@@global.的方式,类似于java中对象名.变量名


#设置全局变量的值的两种方式
set sql_warnings=FALSE;        #直接设置
set global sql_warnings=FALSE; #使用global关键字,设置选定的范围,最好加上global
set @@global.sql_warnings=OFF; #使用@@global.的方式,类似于java中对象名.变量名
复制代码

3,小的注意事项

  declare声明变量必须在存储过程的最开始,否则就会出错。

posted on   小破孩楼主  阅读(510)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2020-02-09 Nginx的防盗链技能
2020-02-09 通过Nginx和Nginx Plus阻止DDoS攻击
2020-02-09 nginx通过配置防止DDoS攻击
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示