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) 赋值(更新用户变量的值)
方式一:通过setselect
    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)赋值
方式一:通过setselect
        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中,且未第一句话 一般不用加@符号,需要限定类型

  

posted on   ~码铃薯~  阅读(169)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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

导航

< 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
点击右上角即可分享
微信分享提示