返回顶部
首页 > 资讯 > 数据库 >MySql变量用法详解
  • 376
分享到

MySql变量用法详解

mysqlsqlPoweredby金山文档 2023-09-10 08:09:11 376人浏览 独家记忆
摘要

自我介绍 我是IT果果日记 一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。 Mysql变量主要分为系统变量、用户变量和局部变量,它们的区别是什么?分别有什么作用呢? 下面会一一给大家讲解一下,并结合

自我介绍

我是IT果果日记
一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。

Mysql变量主要分为系统变量、用户变量和局部变量,它们的区别是什么?分别有什么作用呢?

下面会一一给大家讲解一下,并结合一个示例,演示怎么样运用mysql变量,查询一个父节点及它的所有子节点?

系统变量

  • 系统变量就是系统已经提前定义好的变量。

  • 按作用域分类,系统变量可以分为全局变量(global)和会话变量(session)。系统变量中全局变量和会话变量其实是使用一套变量,不同的是会话变量仅当次会话生效,而全局变量一直生效。

  • 会话变量的赋值:set 变量名 = 值; 【比如常用的set names ="utf8";】或者set @@变量名 = 值。

  • 全局变量的赋值:set global 变量名 = 值。

show命令查看系统变量

show variables;show global variables;show session variables;show variables like '%version%';

上述命令分别表示查看当前系统的所有变量,查看所有的全局变量和查看所有的会话变量,以及模糊匹配version,查看当前系统变量。上述命令执行结果如下:

select命令查看系统变量

select @@default_storage_engine;select @@global.default_storage_engine;select @@session.default_storage_engine;

上述三条命令,都表示查看default_storage_engine变量,区别在于第二条指定查看的是全局变量,第三条指定查看的是会话变量,第一条并未指定,但是在会话变量和全局变量同时存在的情况下,默认显示的是会话变量。上述命令执行结果如下:

用户变量

  • 用户变量就是用户自己定义的变量。

  • 系统为了区别系统变量跟自定义变量,规定用户自定义变量必须使用一个@符号

  • 变量的定义方式:

set @变量名=值;select @变量名:=值;select 值 into @变量名;
  • 用户变量可以不声明定义,就可以直接使用,不过默认是null值

  • 用户变量都是会话级的变量,仅在当次连接中生效。

此外,赋值符号 := 和 = 的区别是:

= 只有在 set 和 update 时才和 := 一样有赋值的作用,其它都是等于的作用。

:= 不只在 set 和 update 时有赋值的作用,在 select 时也是赋值的作用。

select @user_variable := @user_variable + 1; 

上述 sql 给一个用户变量 user_variable 做了+1操作,所以select的结果是2。

局部变量

作用范围在 begin end 语句块之间,用 declare 语句定义的变量称为局部变量。当语句执行完毕,局部变量就消失了。

局部变量定义注意事项:必须在存储过程或函数中定义,且若不是在最开始定义的,则必须在begin end;(注意一定要加分号;)块中定义与使用。

查询一个父节点及其它的子节点

SELECT sm.menu_id, sm.menu_name, sm.parent_menu_idFROM sys_menu sm,(    SELECT @pid :=         (    SELECT GROUP_CONCAT( menu_id )     FROM sys_menu     WHERE menu_name IN ( '活动管理', '积分中心' )     AND ( parent_menu_id IS NULL OR parent_menu_id = '' )     )    ) pd WHERE FIND_IN_SET( sm.menu_id, @pid ) > 0 UNIONSELECT au.menu_id, au.menu_name, au.parent_menu_idFROM sys_menu au WHERE FIND_IN_SET( parent_menu_id, @pid ) > 0 AND EXISTS ( SELECT @pid := concat( @pid, ',', menu_id ));

上述sql查询了两个一级菜单"活动管理"、"积分中心",以及它们下面的所有子菜单。sql由上下两部分组成,由sql关键字 uNIOn 分隔开。

  • union 上面的sql查询的是一级菜单。

用户变量 pid 被赋值为"活动管理"和"积分中心"的菜单id字符串,用 GROUP_CONCAT() 函数拼接成都逗号分隔的字符串。FIND_IN_SET(sm.menu_id, @pid) 在用户变量 pid 中搜索 sm.menu_id 的值,并返回序号(序号从1开始)

  • union 下面的sql查询的是两个一级菜单下的所有子菜单。

AND EXISTS ( SELECT @pid := concat( @pid, ',', menu_id ))

EXISTS 条件语句的作用是往用户变量 pid 后面追加子菜单id,这样就达到了向下遍历更深一级子菜单的效果。

最后的查询结果如下:

总结

  • 系统变量就是系统已经提前定义好了的变量。它可以分为全局变量(global)和会话变量(session)。

会话变量的赋值:set 变量名 = 值; 或者set @@变量名 = 值。全局变量的赋值:set global 变量名 = 值。
  • 用户变量就是用户自己定义的变量。用户自定义变量必须使用一个@符号。

  • 用户变量的定义方式:

set @变量名=值;select @变量名:=值;select 值 into @变量名;
  • 作用范围在 begin end 语句块之间,用 declare 语句定义的变量称为局部变量

请联系我

我是IT果果日记
一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。

https://gitee.com/chenzhaoplus

https://github.com/chenzhaoplus

https://blog.csdn.net/cz285933169?spm=1010.2135.3001.5421

来源地址:https://blog.csdn.net/cz285933169/article/details/128962282

您可能感兴趣的文档:

--结束END--

本文标题: MySql变量用法详解

本文链接: https://lsjlt.com/news/402108.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySql变量用法详解
    自我介绍 我是IT果果日记 一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。 MySql变量主要分为系统变量、用户变量和局部变量,它们的区别是什么?分别有什么作用呢? 下面会一一给大家讲解一下,并结合...
    99+
    2023-09-10
    mysql sql Powered by 金山文档
  • MySQL详细讲解变量variables的用法
    目录变量 variables1、系统变量1.1、查看系统变量1.2、修改系统变量2、会话变量3、局部变量4、变量作用域4.1、局部作用域4.2、会话作用域4.3、全局作用域变量 variables mysql本质是一种编...
    99+
    2022-06-18
    MySQLvariables MySQL变量variables
  • Shell PATH变量用法详解
    前面章节我们说过,程序脚本要想在 linux 中运行,需要使用绝对路径或相对路径指定这个脚本所在的位置。但是为什么系统命令都没有指定路径而是直接执行的?比如,ls 命令并没有输入"/bin/ls"来执行,而是直接执行"l...
    99+
    2022-06-04
    Shell PATH变量 Shell $PATH变量
  • MySQL设置global变量和session变量的两种方法详解
    1、在MySQL中要修改全局(global)变量,有两种方法: 方法一,修改my.ini配置文件,如果要设置全局变量最简单的方式是在my.ini文件中直接写入变量配置,如下图所示。重启数据库服务就可以使全局...
    99+
    2024-04-02
  • Python __all__变量用法示例详解
    目录Python模块__all__变量        事实上,当我们向文件导入某个模块时,导入的是该模...
    99+
    2023-05-14
    Python __all__变量 Python __all__
  • mysql变量用法实例分析【系统变量、用户变量】
    本文实例讲述了mysql变量用法。分享给大家供大家参考,具体如下: 本文内容: 系统变量 用户变量 局部变量 首发日期:2018-04-18 系统变量: 系统变量就是系统...
    99+
    2022-05-15
    mysql 变量 系统变量 用户变量
  • 详解shell 变量
    1.简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。 在Bash shell 中,每一个变量的值都是字符串,无...
    99+
    2022-06-04
    shell 变量
  • mysql用户变量与set语句示例详解
    1 用户变量介绍 用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。 引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,...
    99+
    2022-05-27
    mysql使用set类型 mysql定义变量 mysql 设置变量
  • 详解shell 变量的高级用法示例
    变量删除和替换 案例:从头开始匹配,将符合最短的数据删除 (#) variable_1="I love you, Do you love me" echo $variable_1 variable_2=${vari...
    99+
    2022-06-04
    shell 变量
  • 详解Python变量与注释高级用法
    目录Python变量与注释高级用法1.概述2.变量2.1.变量解包2.2.给变量注明类型2.3.变量命名原则3.注释3.1.注释类型3.2.错误使用注释案例Python变量与注释高级...
    99+
    2024-04-02
  • Python中可变变量与不可变变量详解
    目录一 、常见的变量分类1、变量的创建二、变量分类1、、常见的不可变变量2、常见的可变变量三、拷贝的差别四、参数传递的差别前言: C++不同于Python的显著特点,就是有指针和引用...
    99+
    2024-04-02
  • Python变量教程私有变量详解
    目录前言重整及其工作原理_单前导下划线__双前导下划线双前导和双尾下划线前言 Python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Py...
    99+
    2024-04-02
  • 详解python的变量
    目录1.Python 变量的概述:2.Python 变量的命名3.Python 变量赋值3.1 Python 变量赋值概述3.2 Python 变量的基本赋值格式3.3 Python...
    99+
    2024-04-02
  • Shell编程之变量的高级用法详解
    变量替换 语法 说明 ${变量名#匹配规则} 从变量开...
    99+
    2022-06-04
    Shell 变量
  • Python变量的作用域详解
    目录总结每个变量都有自己的作用域,在作用域外使用该变量非法 函数体内的变量为函数的局部变量,在函数体外不可使用 >>>def f(): x=5 >&...
    99+
    2024-04-02
  • Mysql系统变量与状态变量详细介绍
    目录系统变量什么是mysql系统变量设置系统变量my.cnf设置配置启动项配置Set的形式修改系统变量SESSION作用范围语法GLOBAL作用范围语法查看系统变量值系统变量注意点并不是所有的系统变量都有session范...
    99+
    2024-04-02
  • Mysql环境变量的配置(详细图解)
    一、安装mysql之后,在命令窗口显示出错,如下: 二、桌面找到此电脑图标,右击属性,如下: 三、高级系统设置进入后,点击环境变量,如下图: 四、系统变量下,点击新建,如下所示: 五、变量名和...
    99+
    2023-10-04
    mysql 数据库 database
  • 详解python中的变量
    目录变量变量的分类:赋值变量的命名规则:总结变量变量的分类:赋值变量的命名规则:总结变量 一个由程序员或用户定义的量且在程序中可能发生改变的量 #变量是所有程序的起点 变量的分类: ...
    99+
    2024-04-02
  • 详解Go语言变量作用域
    目录局部变量全局变量形式参数初始化局部和全局变量作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定...
    99+
    2022-06-07
    详解go语言 GO go语言 作用域 变量
  • JavaScript中变量的作用域详解
    一、变量的分类 在JavaScript中变量分为两种: 全局变量局部变量 二、变量的作用域 1、局部变量的作用域 局部变量:在函数内部定义的变量称为局部变量,其作用域为该函数内部,在...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作