Mysql中的变量

  在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终
的结果数据。
  在 MySQL 数据库中,变量分为 系统变量 以及 用户自定义变量 。

系统变量

  系统变量由系统定义,存储着一些对数据库操作的默认参数,定义了当前MySQL服务实例的属性、特征。比如创建数据库的默认字符集,表的默认存储引擎等。
  在MySQL中有些系统变量只能是全局的,例如 max_connections 用于限制服务器的最大连接数;有些系统变量作用域既可以是全局又可以是会话,例如 character_set_client 用于设置客户端的字符集;有些系统变量的作用域只能是当前会话,例如 pseudo_thread_id 用于标记当前会话的 MySQL 连接 ID。
  作为 MySQL 编码规范,MySQL 中的系统变量以 两个“@” 开头,其中“@@global”仅用于标记全局系统变量,“@@session”仅用于标记会话系统变量。“@@”首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。

全局系统变量

  全局系统变量针对于所有会话(连接)有效,但不能跨重启 (MySQL8 做出了一些改变)。

会话系统变量

  会话系统变量仅针对于当前会话(连接)有效。会话期间,当前会话对某个会话系统变量值的修改,不会影响其他会话同一个会话系统变量的值。
  会话1对某个全局系统变量值的修改会导致会话2中同一个全局系统变量值的修改。

查看系统变量

#查看所有全局系统变量 
show global variables;
#查看所有会话系统变量
show session variables; 
或
SHOW VARIABLES;
#查看指定的全局系统变量的值
SELECT @@global.变量名;

#查看指定的会话系统变量的值
SELECT @@session.变量名; 
#或者 
SELECT @@变量名;

修改系统变量值

#为某个全局系统变量赋值 
#方式1: 
SET @@global.变量名=变量值; 
#方式2: 
SET GLOBAL 变量名=变量值;

 #为某个会话系统变量赋值
#方式1: 
SET @@session.变量名=变量值; 
#方式2: 
SET SESSION 变量名=变量值;

MySQL 8.0的新特性—全局变量的持久化

MySQL 8.0版本新增了 set persist 命令。
例如,设置服务器的最大连接数为1000:

SET PERSIST global max_connections = 1000;

用户变量

  用户变量是用户自己定义的,作为 MySQL 编码规范,MySQL 中的用户变量以 一个“@” 开头。根据作用范围不同,又分为 会话用户变量 和 局部变量 。

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

  通常我们使用的都是会话用户变量,如果在存储过程或存储函数中才使用局部变量

会话用户变量

定义变量

#方式1:“=”或“:=” SET 
 @用户变量 = 值; SET @用户变量 := 值;

#方式2:“:=” 或 INTO关键字
SELECT @用户变量 := 表达式 [FROM 等子句]; 
SELECT 表达式 INTO @用户变量 [FROM 等子句];

PS: 注意=:= 的区别
  = 只有在set语句中有赋值的作用,:=只有赋值的作用。

局部变量

在存储函数、存储变量中使用!!

BEGIN
#声明局部变量 
DECLARE 变量名1 变量数据类型 [DEFAULT 变量默认值]; 
DECLARE 变量名2,变量名3,... 变量数据类型 [DEFAULT 变量默认值]; 

#为局部变量赋值 
SET 变量名1 = 值; SELECT 值 INTO 变量名2 [FROM 子句]; 

#查看局部变量的值
SELECT 变量1,变量2,变量3;

END
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值