杭州手机申请网站登录,做网站优化推广的好处,四川微信网站建设推广,wordpress前台在线编辑器1.系统变量
1.1 系统变量分类 变量由系统定义#xff0c;不是用户定义#xff0c;属于 服务器 层面。系统变量分为全局系统变量#xff08;需要添加 global 关键字#xff09;以及会话系统变量#xff08;需要添加 session 关键字#xff09;#xff0c;有时也把全局系…1.系统变量
1.1 系统变量分类 变量由系统定义不是用户定义属于 服务器 层面。系统变量分为全局系统变量需要添加 global 关键字以及会话系统变量需要添加 session 关键字有时也把全局系统变量简称为全局变量有时也把会话系统变量称为local变量。如果不写默认会话级别。静态变量在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改属于特殊的全局系统变量。 每一个MySQL客户机成功连接MySQL服务器后都会产生与之对应的会话。会话期间MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量这些会话系统变量的初始值是全局系统变量值的复制。如下图 全局系统变量的特点针对所有会话都有效但是不能跨重启。会话系统变量的特点 针对当前会话有效当前会话对某个会话系统变量值的修改不会影响其他会话同一个会话系统变量的值。 会话1对某个全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改。
在MySQL中有些系统变量只能是全局的例如 max_connections 用于限制服务器的最大连接数 有些系统变量作用域既可以是全局又可以是会话例如 character_set_client 用于设置客户端的字符集有些系统变量的作用域只能是当前会话例如 pseudo_thread_id 用于标记当前会话的 MySQL 连接 ID。
1.2 查看系统变量
1.2.1 查看所有或部分系统变量
# 查看所有变量
SHOW GLOBAL VARIABLES;
#查看所有会话变量
SHOW SESSION VARIABLES;
#或
SHOW VARIABLES;
#查看满足条件的部分系统变量。
SHOW GLOBAL VARIABLES LIKE %标识符%;
#查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE %标识符%;1.2.2 查看指定系统变量 作为 MySQL 编码规范MySQL 中的系统变量以 两个“” 开头其中“global”仅用于标记全局系统变量“session”仅用于标记会话系统变量。“”首先标记会话系统变量如果会话系统变量不存在则标记全局系统变量。 #查看指定的系统变量的值
SELECT global.变量名;
#查看指定的会话变量的值
SELECT session.变量名;
#或者
SELECT 变量名;1.2.3 修改系统变量的值
方式1修改MySQL 配置文件 继而修改MySQL系统变量的值该方法需要重启MySQL服务方式2在MySQL服务运行期间使用“set”命令重新设置系统变量的值
#为某个系统变量赋值
#方式1
SET global.变量名变量值;
#方式2
SET GLOBAL 变量名变量值;
#为某个会话变量赋值
#方式1
SET session.变量名变量值;
#方式2
SET SESSION 变量名变量值;2.用户变量
2.1 用户变量分类
用户变量是用户自己定义的作为 MySQL 编码规范MySQL 中的用户变量以一个“”开头。根据 作用范围不同又分为 会话用户变量 和 局部变量 。
会话用户变量作用域和会话变量一样只对 当前连接 会话有效。局部变量只在 BEGIN 和 END 语句块中有效。局部变量只能在 存储过程 和 函数 中使用。
2.2 会话用户变量 变量的定义 #方式1“”或“:”
SET 用户变量 值;
SET 用户变量 : 值;
#方式2“:” 或 INTO关键字
SELECT 用户变量 : 表达式 [FROM 等子句];
SELECT 表达式 INTO 用户变量 [FROM 等子句];查看用户变量的值 查看、比较、运算等 SELECT 用户变量举例说明 SET a 100;
SELECT a;
-----------------------------------------
SELECT num : COUNT(*) FROM student;
SELECT num;
-----------------------------------------
SELECT AVG(grade) INTO avggrade FROM score;
SELECT avggrade;
-----------------------------------------
SELECT bobo; #查看某个未声明的变量时将得到NULL值2.3 局部变量
定义可以使用 DECLARE 语句定义一个局部变量作用域仅仅在定义它的BEGIN ... END中有效位置只能放在 BEGIN … END 中而且只能放在第一句
BEGIN
#声明局部变量
DECLARE 变量名1 变量数据类型 [DEFAULT 变量默认值];
DECLARE 变量名2,变量名3,... 变量数据类型 [DEFAULT 变量默认值];
#为局部变量赋值
SET 变量名1 值;
SELECT 值 INTO 变量名2 [FROM 子句];
#查看局部变量的值
SELECT 变量1,变量2,变量3;
END定义变量
DECLARE 变量名 类型 [default 值]; # 如果没有DEFAULT子句初始值为NULL案例
DECLARE myparam INT DEFAULT 100;变量赋值
方式1一般用于赋简单的值
SET 变量名值;
SET 变量名:值;方式2一般用于赋表中的字段值
SELECT 字段名或表达式 INTO 变量名 FROM 表;使用变量
SELECT 局部变量名;案例创建存储过程“different_grade”查询两个学员的成绩总差并用IN参数id1,id2接收学员编号用OUT参数dif_grade输出总成绩差的结果。
DELIMITER //
CREATE PROCEDURE different_grade(IN id1 int ,IN id2 int ,OUT dif_grade int)
BEGIN
# 声明具备变量
DECLARE grade1 INT;
DECLARE grade2 INT;
SELECT sum(grade) into grade1 from score where stu_id id1;
SELECT sum(grade) into grade2 from score where stu_id id2;
SET dif_grade abs(grade1 - grade2 );
END //
DELIMITER ;调用
CALL different_grade(902,903,dif_grade) ;查看
select dif_grade;2.4 两则对比