数据库中的变量问题

1.变量的总体分类

(1).变量总体可以分为系统变量和用户自定义变量

(2).系统变量可以分为全局系统变量(GLOBAL)和会话系统变量(SESSION)

全局系统变量在每次计算机与数据库重连(即重启Mysql服务)时会重置

会话系统变量在新创建一个会话时就会进行重置

 

2.系统变量

(1).系统变量的查看

 1 #1.2 查看系统变量
 2 #查询所有的全局系统变量
 3 SHOW GLOBAL VARIABLES; #617
 4 #查询所有的会话系统变量
 5 SHOW SESSION VARIABLES; #640
 6 
 7 SHOW VARIABLES; #默认查询的是会话系统变量
 8 
 9 #查询部分系统变量
10 
11 SHOW GLOBAL VARIABLES LIKE 'admin_%';
12 
13 SHOW VARIABLES LIKE 'character_%';
14 
15 SELECT @@character_set_client; #先查询会话系统变量,再查询全局系统变量(查询名为chracter_set_client的系统变量)

在涉及到可能查询多个时使用关键词'show',而只查询单个时,使用关键词'select'

 

(2).系统变量的修改

1 #会话系统变量:
2 #方式1:
3 SET @@session.character_set_client = 'gbk';
4 #方式2:
5 SET SESSION character_set_client = 'gbk';
6 
7 #针对于当前会话是有效的,一旦结束会话,重新建立起新的会话,就失效了。

使用关键词'SET'

 

总结:全局系统变量的声明为 @@global.变量名   或者为  GLOBAL 变量名

   会话系统变量的声明为 @@session.变量名   或者为  SESSION 变量名

   

 

3.自定义用户变量

自定义变量的声明和定义:

 1 #测试:
 2 #方式1:
 3 SET @m1 = 1;
 4 SET @m2 := 2;
 5 SET @sum := @m1 + @m2;#既可以用'=',也可以用':='
 6 
 7 SELECT @sum;
 8 
 9 #方式2:
10 SELECT @count := COUNT(*) FROM employees;#采用该方式不能用=,只能用:=

采用方式2如果使用'=',系统不会报错,但是得到的值存在错误。

1 #方式3
2 SELECT AVG(salary) INTO @avg_sal FROM employees;
3 
4 SELECT @avg_sal;

在函数中使用变量时常常使用到方式3

 

补充:所有出现自定义用户变量的位置,其格式均为 @’变量名‘

posted @ 2022-03-26 15:57  jue1e0  阅读(76)  评论(0)    收藏  举报