MySQL学习-变量-系统变量

136 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

前言

上篇我们针对MySQL中的存储过程与函数做了一些练习。有兴趣的小伙伴可以阅读(# MySQL学习-存储过程与函数练习)。
下面我们学习MySQL中的变量-系统变量。

变量

在MySQL数据库中的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。

在MySQL数据库中,变量分为系统变量和用户自定义变量。

系统变量

分类

  1. 系统变量是由系统定义的,不是用户定义的,属于服务器层面。
  2. 系统变量分为全局系统变量(需要添加global关键字)以及会话系统变量(需要添加session关键字),有时也把全局系统变量简称为全局变量,也会把会话系统变量称为local变量。如果不写,默认是会话级别。静态变量属于特殊的全局系统变量。
  3. 每一个MySQL客户机成功连接服务器后,都会产生与之对应的会话。会话期间。MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量。这些会话系统变量的初始值是全局系统变量值的复制。
    • 全局系统变量针对于所有会话有效,但不能垮重启
    • 会话系统变量仅针对于当前会话有效,会话期间,当前会话对某个会话系统变量值的修改,不会影响其他会话同一个会话系统变量的值。
    • 会话1对某个全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改。
  4. 在MySQL中有些系统变量只能是全局的,例如max_connections用于限制服务器的最大连接数。有些系统变量作用域既可以是全局又可以是会话。例如character_set_client用于设置客户端的字符集。有些系统变量的作用域只能是当前会话,例如pseudo_thread_id用于标记当前会话的MySQL连接ID。

查看系统变量

  1. 查看所有或部分系统变量
#查看所有全局变量
SHOW GLOBAL VARIABLES;
#查看所有会话变量
SHOW SESSION VARIABLES;
或
SHOW VARIABLES;
#查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%标识符%';
#查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%标识符%';
  1. 查看指定系统变量 作为MySQL的编码规范,MySQL的系统变量以两个@开头,其中‘@@global’仅用于标记全局系统变量,‘@@session’仅用于标记会话系统变量。‘@@’首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。
#查看指定的系统变量的值
SELECT @@global.变量名;
#查看指定的会话变量的值
SELECT @@session.变量名;
#或者
SELECT @@变量名;
  1. 修改系统变量的值 有些时候,数据库管理员需要修改系统变量的默认值,以便修改当前会话或MySQL服务实例的属性,特征。
  • 方法一:修改MySQL的配置文件,继而修改MySQL系统变量的值(该方法需要重启MySQL服务)
  • 方法二:在MySQL服务运行期间,使用‘SET’命令重新设置系统变量的值。
#为某个系统变量赋值
#方法一
SET @@global.变量名 = 变量值;
#方法二
SET GLOBAL 变量名 = 变量值;
#为某个会话变量赋值
#方法一
SET @@session.变量名 = 变量值;
#方法二
SET SESSION 变量名 = 变量值;

今天先学到这里,明天继续。