数据库中的变量问题
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
补充:所有出现自定义用户变量的位置,其格式均为 @’变量名‘