mysql--变量的学习
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | 变量 学习变量:为什么要学习变量,因为我们在后面的函数和存储过程的学习过程中要使用到变量,所以这块知识其实是比较重要的。 变量的分类: 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 一:系统变量 说明:变量由系统提供,不是用户定义,属于服务器层面。 语法; 1.查看所有的系统变量 show GLOBAL|[SESSION] VARIABLES; 2.查看满足条件的部分系统变量 show GLOBAL |[session] VARIABLES like '%char%' ; 3.查看指定的某个系统变量的值 select @@global|[session] .系统变量; 4.为某个系统变量赋值 方式一: set GLOBAL|[session] 系统变量名=值; 方式二: set @@global|[session] .系统变量名=值; 举例子:全局变量 全局变量 作用域:服务每次重新启动将为所有的全局变量付初始值,针对于所有的会话连接都有效,但是不能跨重启,重新启动之后,我们发现还是之前的老样子,要是重新启动之后有效果,那只能关掉服务,修改配置文件了。,一般情况下,我们也不这样操作。 1.查看所有全局变量 show GLOBAL VARIABLES; 2.查看部分的全局变量 show global VARIABLES like '%char%' ; 3。查看指定的全局变量 select @@global.autocommit; select @@tx_isolation; 4.为某个指定的全局变量赋值,,这种赋值是跨链接的。 set @@global.autocommit=0; set @@global.autocommit=1; 会话变量 特点,仅仅针对于当前会话连接有效 1.查看所有的会话变量 show VARIABLES; show SESSION VARIABLES;--这两种写法最终出来的效果是一样的 2.查看部分的会话变量 show VARIABLES like '%char%' ; show session variables like '%char%' ; 3.查看指定的某个会话变量 select @@tx_isolation; select @@session.tx_isolation; 4.为某个会话变量赋值 方式一 set @@tx_isolation= 'read-UNCOMMITTED' ; 方式二 set session tx_isolation= 'read-UNCOMMITTED' ;--这两种方式都是可以的 #################################################华丽丽滴分割线###################################################################### 二、自定义变量 说明:变量是用户自定义的,不是由系统提供的 使用步骤: 声明 赋值 使用(查看、比较、运算等) 一共分为一下两类 1、用户变量 赋值的操作符:=或:= 作用域:针对当前会话有效,同于会话变量的作用域 应用在任何地方,也就是begin end 里面或者外边 (1)声明并初始化 set @用户变量名=值;或 set @用户变量名:=值;或 select @用户变量名:=值; (2) 赋值(更新用户变量的值) 方式一:通过 set 和 select set @用户变量名=值;或 set @用户变量名:=值;或 select @用户变量名:=值; 案例:这是一种弱类型语言,不用声明变量的类型 set @name= 'john' ; set @name=100; 方式二:通过 select into select 字段 into 变量名 from 表; 案例 set @count=1;#先声明这个变量,并给这个变量附上默认值 #将员工表中的记录条数查询出来赋值给这个变量 select count(*) into @count from employees; (3) 使用(查看用户变量的值) select @用户变量名; select @count;--结果:107 2、局部变量 作用域:仅仅在定义它的begin end中是有效的,应用在begin end中的第一句话 (1)声明 declare 变量名 类型; DECLARE 变量名 类型 default 值; (2)赋值 方式一:通过 set 和 select set 局部变量名=值;或 set 局部变量名:=值;或 select @局部变量名:=值; 方式二:通过 select into select 字段 into 局部变量名 from 表; (3)使用 select 局部变量名 对比用户变量和局部变量; 案例:申明两个变量并附初始值,求和,并进行打印 1.用户变量 set @m=1; set @n=1; set @sum= @m+@n; SELECT @sum;--结果显示:2 2.局部变量 declare m int default 1; DECLARE n int default 2; set sum=m+n; select sum; 运行结果:> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare m int default 1' at line 1 意思是:declare只能使用begin end中的第一句,这样使用是不行的; |
对比用户变量和局部变量
作用域 | 定义和使用位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 会话中的任何地方 | 必须加@符号,不用限定类型 |
局部变量 | begin end中 | 只能在begin end中,且未第一句话 | 一般不用加@符号,需要限定类型 |
分类:
数据库 / MySQL语法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY