MySQL系统变量 会话变量,用户变量

系统变量 分类

全局系统变量需要添加 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 ,而且只能放在第一句
MySQL系统变量 会话变量,用户变量_第1张图片
一、定义变量
declare 变量名 类型 [defaut 值]; —如果没有指定default 子句,初始值为 null

declare my_1 int default 100

二、变量赋值

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

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

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

select 局部变量名

你可能感兴趣的:(mysql)