MySQL系统变量 会话变量,用户变量、mysql8.0的全局变量持久化

在这里插入图片描述

系统变量 分类

全局系统变量需要添加 global 关键字,有时把全局系统变量简称 全局变量
会话系统变量需要添加 session 关键字,有时也把会话系统变量称为 local 变量 局部变量
如果不写(global、session)默认会话级别。
静态变量在mysql服务实例运行期间他们的值不能使用set 动态修改,属于特殊的全局系统变量

查看系统变量
## 查看所有全局变量
show global variables;
## 查看所有会话变量
show session variables;
# 或   没指定global   、session   默认是 session
show variables;    

# 查看满足条件的部分系统变量
# show global variables like ’%b标识符%‘
show global variables like ’character%‘

# 查看满足条件的部分会话变量
show session variables like '%标识符%'
查看指定系统变量

sql server 和 mySQL 系统变量以“@@”开头的,
“@@global ”仅用于标记全局系统变量
“@@session“ 仅用于标记会话系统变量
“@@“ 首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量

# 查看指定的系统变量的值
select @@global.变量名;

# 查看指定的会话变量的值

select @@session.变量名
# 或
select @@变量名

在这里插入图片描述

修改系统变量的值

有些时候,数据库管理员需要修改系统变量的默认值,以便修改当前会话或者Mysql服务实例的属性、特征

修改方式如下:
方式1:
修改Mysql.ini 配置文件,继而修改mysql系统变量的值(该方便需要重新MySQL服务 才能生效)
方式2:
在mySQL 服务运行期间,使用 set 命令 重新设置系统

# 为某个系统变量赋值
# 方式1
set @@global.变量名=变量值;
# 方式2
set global 变量名=变量值;
## 全局变量   针对当前数据库实例是有效的,一旦重启mysql服务,  就生效了,会加载my.ini  配置的变量

# 为某个会话变量赋值
# 方式1
set @@session.变量名=变量值;
#方式2
set session 变量名=变量值

## local变量  针对当前会话有效,其它会话是无效的,


用户变量

用户自己定义的变量,就是用户变量, 是一个“@”开头。
根据范围分:

  1. 会话用户变量 : 作用域和会话变量一样,只对当前 会话有效(当前连接)
  2. 局部变量 :只在begin 和 end 语句块中有效。局部变量只能在 存储过程和函数中使用
会话用户变量

一、变量的定义

# 方式1    “=” 或 “:=”
set @变量名 = 值;
set @变量名 := 值

# 方式2   “:=”  或 INTO 关键字
select  @变量名 := 表达式  [ from  等子句]
select 表达式  into @变量名  [ from  等子句]

select @size=100;
select 100 into @size;

select @cnt := count(*) from  students ;
select count(*)  into @cnt from  students;

在这里插入图片描述

二、查看用户变量的值 (查看、比较、运算等)

select @变量名

select @cnt=1

select @cnt

局部变量

定义: 可以使用 declare 语句定义 一个局部变量
作用域: 仅仅在定义它的 begin 。。。end 中有效
位置: 只能放在 begin。。。。end ,而且只能放在第一句
在这里插入图片描述
一、定义变量
declare 变量名 类型 [defaut 值]; —如果没有指定default 子句,初始值为 null

declare my_1 int default 100

二、变量赋值

# 方式1  一般用于赋简单的值
set 变量名=值;
set 变量名:=值;

# 方式2  一般用于赋表中的字段值
select  字段名或表达式  into  变量名  from  子句;

三、使用变量 (查看、比较、运算等)

select 局部变量名

会话用户变量 VS 局部变量

在这里插入图片描述

mysql 8.0 全局变量的持久性

5.7 全局变量 mysql 服务重启,就重置了(变成 my.ini 里的设定的值啦)

在mysql数据库中,

set @@global.变量= xxx ; 或 set global 变量=xx;
但这种设置变量,只有mysql服务重启,就失效啦。

mysql 8.0
新增了 set persist 命令,持久性生效

set persist global 变量 =xxx;set persist @@global.变量= xxx ;

mysql 会将该命令的配置保存到数据目录下的 mysqld-auto.cnf 文件中,下次启动时会读取该文件,覆盖默认的配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值