mysql变量用法实例分析【系统变量、用户变量】

 更新时间:2020年04月17日 11:00:00   作者:随风行云  
这篇文章主要介绍了mysql变量用法,结合实例形式分析了mysql系统变量、用户变量相关概念、功能、原理与使用技巧,需要的朋友可以参考下

本文实例讲述了mysql变量用法。分享给大家供大家参考,具体如下:

本文内容:

  • 系统变量
  • 用户变量
    • 局部变量

首发日期:2018-04-18


系统变量:

  • 系统变量就是系统已经提前定义好了的变量
  • 系统变量一般都有其特殊意义。比如某些变量代表字符集、某些变量代表某些mysql文件位置
  • 系统变量中包括会话级变量(当次会话连接生效的变量,如names),以及全局变量(一直生效的变量) 【系统变量中全局变量和会话变量其实是使用一套变量,不同的是会话变量仅当次会话生效。】
    • 会话变量的赋值:set 变量名 = 值;  【比如常用的set names ="utf8";】或者set @@变量名=值
    • 全局变量的赋值:set global 变量名 = 值;

查看系统变量:

  • show variables;

系统变量的调用:

  • select @@变量名;

用户变量:

  • 用户变量就是用户自己定义的变量。
  • 系统为了区别系统变量跟自定义变量,规定用户自定义变量必须使用一个@符号
  • 变量的定义方式:
    • set @变量名=1
    • select @变量名:=值;
    • select 值 into @变量名;
  • 用户变量可以不声明定义,就可以直接使用,不过默认是null值
  • 用户变量都是会话级的变量,仅在当次连接中生效。

局部变量:

  • 由于局部变量是用户自定义的,可以认为局部变量也是用户变量【但有所不同,局部中不需要使用@】
  • 局部变量一般用在sql语句块中,比如存储过程块、触发器块等
  • 局部变量的定义方法:
    • 先使用declare声明局部变量,其中可选项default后面可以跟一个付给变量的默认值:【非常重要的一步,不然会设置成用户变量】【注意:变量声明语句要在其他语句如select语句之前】
      • 示例:declare myq int;
      • 示例:declare myq int default 666;
    • 设置变量的值:
      • set 变量名= 值;
    • 获取变量的值:
      • select 变量名;
create procedure myset()
begin 
 declare mya int;
 declare myq int default 777;
 select mya,myq;
 set myq=6;
 set mya=666;
 select mya,myq;
end;

call myset();

补充:

  • 有些人可能会发现直接set 变量名=值;也可以定义“用户变量”;但这是一种不好的行为【这种行为忽略了各自变量的功能】,因为你不知道会不会跟系统变量冲突,所以最好用户变量加上@
  • 因为 = ,有很多地方都用来判断是否等于,为了避免歧义,也可以使用:=来赋值image
  • 上面虽然给了一些其他的赋值方法,但好像有一些是不通用的,比如:=只用于用户变量,所以要审慎使用】。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总

希望本文所述对大家MySQL数据库计有所帮助。

相关文章

  • 基于MySQL和Redis扣减库存的实践

    基于MySQL和Redis扣减库存的实践

    本文主要介绍了基于MySQL和Redis扣减库存的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 浅谈Mysql哪些字段适合建立索引

    浅谈Mysql哪些字段适合建立索引

    这篇文章主要介绍了浅谈Mysql哪些字段适合建立索引,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • mysql关联两张表时的编码问题及解决办法

    mysql关联两张表时的编码问题及解决办法

    在本篇文章里小编给大家整理的是关于mysql关联两张表时的编码问题及解决办法,有需要的朋友们可以参考下。
    2019-09-09
  • 使用MySQL的Binlog进行数据回滚的完整流程

    使用MySQL的Binlog进行数据回滚的完整流程

    本文描述了使用MySQL的binlog进行数据回滚的过程,从确认是否启用Binlog日志到找到误操作的记录,再到编写脚本解析记录,最后执行SQL语句实现回滚,需要的朋友可以参考下
    2025-12-12
  • MySQL在生产环境出现无法启动的问题解决

    MySQL在生产环境出现无法启动的问题解决

    在当今的数据驱动世界中,MySQL作为广泛应用的关系型数据库管理系统,在众多生产环境中承担着至关重要的角色,然而,面对复杂多变的业务场景,MySQL可能会遭遇各类故障和性能瓶颈,本文将深入探讨MySQL在生产环境出现无法启动的问题解决,需要的朋友可以参考下
    2024-10-10
  • MySQL查询树形结构数据的两种方法

    MySQL查询树形结构数据的两种方法

    本文主要介绍了MySQL查询树形结构数据的两种方法,可以使用递归查询或者闭包表来实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • MySQL中TEXT和LONGTEXT区别举例详解

    MySQL中TEXT和LONGTEXT区别举例详解

    MySQL中的text和longtext类型是常用的字符串类型,可以储存大量文本数据,这篇文章主要介绍了MySQL中TEXT和LONGTEXT区别的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-08-08
  • 将phpstudy中的mysql迁移至Linux教程

    将phpstudy中的mysql迁移至Linux教程

    本文主要给大家介绍了关于将phpstudy中的mysql迁移至Linux的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。希望能版助到大家。
    2018-04-04
  • MySQL空间函数ST_Distance_Sphere()的使用方式

    MySQL空间函数ST_Distance_Sphere()的使用方式

    这篇文章主要介绍了MySQL空间函数ST_Distance_Sphere()的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • mysql中使用instr进行模糊查询方法介绍

    mysql中使用instr进行模糊查询方法介绍

    这篇文章主要介绍了mysql中使用instr进行模糊查询方法介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10

最新评论