系统变量

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
# 变量
/*
系统变量
全局变量

会话变量

自定义变量
用户变量

局部变量
*/

# 一。系统变量
# 变量由系统提供,不由用户定义,属于服务器层面
/*
使用语法:(不写global,session默认使用会话变量)
1. 查看所有系统变量
SHOW GLOBAL VARIABLES; # 查看全局变量
SHOW 【SESSION】 VARIABLES; # 查看会话变量
2. 查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE 'CHAR';
SHOW 【SESSION】 VARIABLES LIKE 'CHAR';
3. 查看指定的某个系统变量
SELECT @@global.系统变量名;
SELECT @@【SESSION.】系统变量名;

4. 为某个具体的系统变量赋值
# 方式1
SET 【session.】系统变量名=值; # 为会话变量赋值
SET GLOBAL.系统变量名=值 # 为系统变量赋值
#方式2
SET GLOBAL.系统变量名=值;
SET 【SESSION.】系统变量名=值;

*/

SHOW GLOBAL VARIABLES; # 查看全局变量
SHOW SESSION VARIABLES; # 查看会话变量

/*
全局变量作用域:服务器每次启动时将为所有的全局变量赋初始值,
赋值对所有会话(连接)都有效,但不能跨重启

会话变量作用域:仅仅针对于当前会话有效,,修改时也仅修改当前会话/连接的值
*/

自定义变量

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
# 自定义变量

/*
说明:变量由用户自定义,不由系统直接提供,
使用方式相对灵活,使用较多

使用步骤:
1. 声明
2. 赋值
3. 使用(查看,比较,运算等)
*/


# 用户变量
/*
作用域:针对当前会话/连接有效,同于会话变量的作用域

可以应用在任何地方
*/

# 用户变量声明时必须同时初始化(赋初值)
# 三种初始化方法
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;

SET @v1=20;

# 赋值或更新用户变量的值
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
# 下面这种方式也可以用来赋值,只要保证选则出的结果是一个值而不是列表即可
SELECT 字段 INTO @变量名
FROM 表;

SET @v1:=35;

# 使用/查看用户变量值
SELECT @用户变量名;

SELECT @v1;




# 局部变量
/*
作用域:只在局部有效,即定义它的begin end中有效

应用在begin end中,并且只能在其中的第一句位置
*/

# 声明:
DECLARE 变量名 数据类型;
# 声明并初始化
DECLARE 变量名 数据类型 DEFAULT 值;

# 赋值,与用户变量的区别在于不需要在变量名前加@了(SELECT除外)
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
# 下面这种方式也可以用来赋值,只要保证选则出的结果是一个值而不是列表即可(不需要加@)
SELECT 字段 INTO 局部变量名
FROM 表;

# 使用
SELECT 局部变量名;