1.变量的分类
mysql数据库中,变量分为系统变量以及用户自定义变量。这里来介绍系统变量。
2.系统变量的简介
系统变量的变量为系统定义不是由用户定义,属于服务器层面。生成MySQL服务实例期间,MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例的属性、特征。
系统变量分为全局系统变量(需要添加global关键字)以及会话系统变量(需要添加session关键字),有时也把全局系统变量简称为全局变量,把会话系统变量称为local变量。静态变量(在MySQL服务器实例运行期间它们的值不能用set动态修改)属于特殊的全局系统变量。
3.全局系统变量和会话系统变量
1.全局系统变量针对与所有会话连接有效,但不能跨重启。
2.会话系统变量仅针对与当前对话有效。会话期间,当前会话对某个会话系统变量值的修改,不会影响其他对话同一个会话系统变量的值。
3.会话1对某个全局变量的修改会导致会话2中同一个全局系统变量值的修改。
4.MySQL中有些系统变量只能是全局的,有些系统变量作用域既可以是全局又可以是会话。
4.MySQL语句对变量的应用
1.查看系统变量
show global variables;//查看全局系统变量
show session variables;//查看会话系统变量
show variables//默认查看会话系统变量
2.查询部分系统变量(增加筛选条件)
show global variables like 'admin_%'://查询全局变量中以admin_开头的
show (session) variables like 'character_%';//查询会话系统变量中以character_开头的
3.查询指定系统变量
MySQL中的系统变量以两个@开头,'@@global'用于标记全局系统变量,'@@session'用于标记会话系统变量,'@@'首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。
select @@global.max_connections;//查看max_connections的全局系统变量
select @@global.character_set_client;//character_set_client即为全局系统变量也为会话系统变量
select @@session.character_set_client;
4.修改系统变量的值
方式一:修改MySQL配置文件(通常是在my.ini里修改),继而修改MySQL系统变量的值(该方法需要重启MySQL服务)(重启服务后所有系统变量修改值都任然有效)
方式二:在MySQL服务运行期间,使用'set'重新设置系统变量的值。(只针对于当前数据库实例,重启后失效)
//为某个全局系统变量赋值(只针对于当前数据库实例,重启后失效)
set @@global.变量名=变量值;
set global 变量名=变量值;
eg.set @@global.max_connections=161;
//为某个会话系统变量赋值(只针对于当前会话,新建会话后,在新建会话中将失效)
set @@session.变量名=变量值;
set session 变量名=变量值;
5.小结
1.系统变量分为全局系统变量和会话系统变量,全局系统变量可以在任何程序随时调用,会话系统变量通常是新建一个查询编辑器(会话)后在编辑器里使用,即只对当前连接会话有效,有些变量既可以是全局系统变量也可以是会话系统变量。
2.如果在本编辑器中修改一个会话系统变量,在新建其他编辑器后修改将会失效。
3.但是如果在编辑器中修改全局系统变量,会导致新建的其他编辑器中全局系统变量的值改变,如果想恢复再全部默认值,选择重启。
4.如果不想每次都在编辑器中修改,则可以直接修改配置文件。