当前位置: 首页 > news >正文

15. Mysql 变量的使用

目录

    • 变量的概述
    • 自定义变量
    • 系统变量
      • 查看系统变量
      • 系统变量赋值
    • 局部变量
    • 总结
    • 参考资料

变量的概述

MySQL支持不同类型的变量,包括自定义变量、系统变量和局部变量。自定义变量是在会话中定义的变量,用于存储临时数据。系统变量是MySQL服务器提供的全局变量,用于控制服务器的行为。局部变量是存储过程或函数中使用的变量,它们的作用范围仅限于该存储过程或函数。

变量常用于存储和操作数据,执行复杂的计算和逻辑操作,控制查询的执行流程,以及传递数据和结果等。

自定义变量

自定义变量是用户根据所需而自建的变量,该变量特别有用,常用语固定的查询中,只要传入该变量就能得到所需要的结果。为了编码规范,自定义变量以一个“@” 开头。

用户定义变量的作用范围是会话级别。这意味着当一个会话结束时,变量的值将被清除。如果需要在不同的会话中使用变量,则需要使用全局变量。

用户定义变量可以存储不同类型的数据,包括整数、浮点数、字符串等。变量的数据类型是根据赋给变量的值自动确定的。

示例

简单变量赋值

# 定义变量
set @a = 1;
set @b := 2;
set @c := @a + @b;
# 查询变量
select @a,@b,@c,@c+3;
+------+------+------+------+
| @a   | @b   | @c   | @c+3 |
+------+------+------+------+
|    1 |    2 |    3 |    6 |
+------+------+------+------+
# 更新之前变量值,常用于循环中
set @a = @a + 1;

变量实现排名

select student_id,subject,score,`row_number`
from (select a.student_id,a.subject,a.score,if(@pre_subject = a.subject,   -- 排序后,判断上一行的学科是否等于当前行@row_num := @row_num + 1,   -- 是,返回@row_num+1,并且再次赋值给该变量@row_num@row_num := 1) `row_number`,-- 否,重置@row_num变量为1@pre_subject := a.subject      -- 将当前行的学科赋值给@pre_subjectfrom student_subject_scroe as a,(select @pre_subject := null, @row_num := 0) b -- 临时表b,定义初始变量order by subject, score desc  -- 根据学科,分数降序排
) as c;

上面是变量实现排名的一种情况,如果想了解更多可以查看:Mysql 常见排名实现。

系统变量

系统变量定义了当前MySQL服务实例的属性、特征,可以简单理解成是系统定义好的变量。这些系统变量的值要么是编译MySQL时参数的默认值,要么是配置文件(例如my.ini等)中的参数值。

按作用域分类,系统变量可以分为全局变量(需要添加 global 关键字)以及会话变量(需要添加 session 关键字),简单理解就是会话变量仅在当前会话生效,而全局变量则一直生效。

查看系统变量

# 查看所有全局变量
show global variables;
# 查看所有会话变量
show session variables;
show variables;
# 查看条件下的系统变量。
show global variables like '%version%';
# 查看条件下的会话变量
show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+
# 查看指定变量
select @@max_connections;
+-------------------+
| @@max_connections |
+-------------------+
|               151 |
+-------------------+
select @@global.time_zone,@@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

系统变量赋值

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

会话变量的赋值:set 变量名 = 值; 或者set @@变量名 = 值。

@@首先标记会话变量,如果会话变量不存在,则标记全局变量。

示例

设置时区:设置为北京时间,也就是我们所在的东8区。

# 方法一:刷新后能用,服务器重启会丢失
set global time_zone =+8:00;
set time_zone =+8:00;
flush privileges;
# 方法二:修改配置文件 /etc/my.cnf
[mysqld]
default-time_zone = '+8:00'

设置连接次数

set global max_connections = 161;
set max_connections = 161;
set @@global.max_connections = 161;

以上是常见的两个系统变量修改,如果遇到其他变量要修改,方法也是类似。

局部变量

在存储过程或函数中,可以使用DECLARE语句定义局部变量。局部变量只在存储过程或函数的作用域内有效。可以使用局部变量进行计算、逻辑判断和存储数据等操作。

示例:

简单的存储过程

create procedure myprocedure()
begindeclare a int;declare b int default 0;declare c varchar(255);set a = 10;select a,b,c;-- 其他逻辑操作
end;

带有逻辑判断的存储过程

create procedure myprocedure()
begindeclare a int;set a = 10;if a > 5 then-- 执行某些操作end if;-- 其他逻辑操作
end;

总结

通过常见的几种变量介绍,可以发现变量不仅可以用来存储临时数据,还可以控制服务器行为,进一步提供高级的数据处理和计算能力,而且在控制着查询的执行流程和动态查询中非常实用,比如定义时间变量,写好执行sql脚本或者存储过程,通过创建事件定时任务或者python每日定时执行,即可实现动态数据库操作。

参考资料

  • MySQL官方文档:https://dev.mysql.com/doc/
  • MySQL Tutoria:https://www.mysqltutorial.org/mysql-variables/
  • MySQL 变量实现排名:https://blog.csdn.net/weixin_50357986/article/details/134277584

相关文章:

15. Mysql 变量的使用

目录 变量的概述自定义变量系统变量查看系统变量系统变量赋值 局部变量总结参考资料 变量的概述 MySQL支持不同类型的变量,包括自定义变量、系统变量和局部变量。自定义变量是在会话中定义的变量,用于存储临时数据。系统变量是MySQL服务器提供的全局变量…...

为什么ChatGPT采用SSE协议而不是Websocket?

在探索ChatGPT的使用过程中,我们发现GPT采用了流式数据返回的方式。理论上,这种情况可以通过全双工通信协议实现持久化连接,或者依赖于基于EventStream的事件流。然而,ChatGPT选择了后者,也就是本文即将深入探讨的SSE&…...

Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索

Elastic 提供了一个强大的 ELSER 供我们进行语义搜索。ELSER 是一种稀疏向量的搜索方法。我们无需对它做任何的微调及训练。它是一种 out-of-domain 的模型。目前它仅对英文进行支持。希望将来它能对其它的语言支持的更好。更多关于 ELSER 的知识,请参阅文章 “Elas…...

Matlab:BP神经网络算法,二叉决策树

1、BP神经网络算法 (1)步骤 1.准备训练数据和目标值 2.创建并配置BP神经网络模型 3.训练BP神经网络模型 4.用BP神经网络模型预测数据 例:某企业第一年度营业额为132468,第二年度为158948,第三年度为183737,预测第四年度的营…...

Python实现员工管理系统(Django页面版 ) 七

各位小伙伴们好久不见,2024年即将到来,小编在这里提前祝大家新的一年快快乐乐,能够事业有成,学习顺心,家庭和睦,事事顺利。 今天我们本篇要实现的是一个登录界面的实现,其实登录界面的实现看着挺…...

听GPT 讲Rust源代码--src/tools(34)

File: rust/src/tools/clippy/clippy_lints/src/collection_is_never_read.rs 文件"collection_is_never_read.rs"位于Rust源代码中的clippy_lints工具中,其作用是检查在集合类型(如Vec、HashMap等)的实例上执行的操作是否被忽略了…...

k8s的陈述式资源管理(命令行操作)

(一)k8s的陈述式资源管理 1、命令行:kubectl命令行工具——用于一般的资源管理 (1)优点:90%以上ce场景都可以满足 (2)特点:对资源的增、删、查比较方便,对…...

uniapp uview裁剪组件源码修改(u-avatar-cropper),裁出可自定义固定大小图片

u-avatar-cropper修改后 <template><view class"index"><!-- {{userinfo}} --><view class"top"><view class"bg"><image src"../../static/electronic_card/bg.png"></image></view&g…...

【机器学习前置知识】Beta分布

Beta分布与二项分布的关系 Beta分布与二项分布密切相关,由二项分布扩展而来,它是用来描述一个连续型随机变量出现的概率的概率密度分布,表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) , a 、 b a、b a、b 是形状参数。Beta分布本质上也是一个概率密度函数,只是这…...

Notepad++批量更改文件编码格式及文档格式

背景&#xff1a; 在项目中遇到Windows平台VS的MSVC编译不识别Unix下UTF-8编码导致的编译失败问题。需要将Unix下的UTF-8转为UTF-8-BOM格式。网上找了些方式&#xff0c;之后又深入探究了下文档转换的可能性&#xff0c;共享给大家。&#xff08;当然Windows和Unix平台代码格式…...

Linux驱动开发学习笔记6《蜂鸣器实验》

目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 &#xff08;1&#xff09;添加pinctrl节点 &#xff08;2&#xff09;添加BEEP设备节点 &#xff08;3&#xff09;检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试AP…...

鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化

鸿蒙&#xff08;HarmonyOS 3.1&#xff09; DevEco Studio 3.1开发环境汉化 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、设置过程 打开IDE&#xff0c;在第一个菜单File 中找到Settings...菜单 在Setting...中找到Plugins…...

毫米波雷达:从 3D 走向 4D

1 毫米波雷达已广泛应用于汽车 ADAS 系统 汽车智能驾驶需要感知层、决策层、执行层三大核心系统的高效配合&#xff0c;其中感知层通过传感器探知周围的环境。汽车智能驾驶感知层将真实世界的视觉、物理、事件等信息转变成数字信号&#xff0c;为车辆了解周边环境、制定驾驶操…...

CENTOS docker拉取私服镜像

概述 docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker镜像的拉取。 centos6版本太老&#xff0c;docker的使用过程中问题较多&#xff0c;centos7相对简单容易。 本文档主要介绍centos系统安装docker和拉取docker私…...

【前端面经】即时设计

目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优…...

前端三件套html/css/js的基本认识以及示例程序

简介 本文简要讲解了html,css,js.主要是让大家简要了解网络知识 因为实际开发中很少直接写html&css,所以不必过多纠结,了解一下架构就好 希望深度学习可以参考MDN和w3school HTML 基础 HTML (Hyper Text Markup Language) 不是一门编程语言,而是一种用来告知浏览器如…...

云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通

目录 一、实验 1. 环境 2.配置存储挂载 3.云主机实例连接外部网络&#xff08;SNAT&#xff09; 4.外部网络连接云主机实例&#xff08;DNAT&#xff09; 二、问题 1.云主机 ping 不通外部网络 2.nova list 查看云主机列表报错 3.nova list 与 virsh list --all有何区…...

python/selenium/jenkins整合

1、新建python项目&#xff0c;专门写selenium代码&#xff0c;建议用pytest框架写。 2、把代码上传到代码库中。 3、环境配置&#xff1a; 3.1 在跑jenkins的机器上配置好python环境&#xff0c;需要python --version能在任何地方运行&#xff08;配置好系统环境变量&#…...

华为路由器ACL操作SSH接口

ACL的定义 访问控制列表&#xff08;Access Control Lists&#xff0c;ACL&#xff09;是应用在路由器接口的指令列表。这些指令列表用来告诉路由器哪些数据包可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝&#xff0c;可以由类似于源地址、目的地址、端口号等的特…...

Flutter 三点三:Dart Stream

Stream Stream用于接收异步事件Stream 可以接收多个异步事件Stream.listen()方法返回StreamSubscription 可用于取消事件订阅&#xff0c;取消后&#xff0c;不再接收事件 基本使用 Stream.fromFutures([Future.delayed(Duration(seconds: 1),(){return "事件1";})…...

centos 防火墙 设置 LTS

centos 防火墙 设置 LTS https://blog.csdn.net/m0_58805648/article/details/130671008...

SAP缓存 表缓存( Table Buffering)

本文主要介绍SAP中的表缓存在查询数据&#xff0c;更新数据时的工作情况以及对应概念。 SAP表缓存的工作 查询数据 更新数据 删除数据 表缓存的概念 表缓存技术设置属性 不允许缓冲&#xff1a; 允许缓冲&#xff0c;但已关闭&#xff1a; 缓冲已激活&#xff1a; 已…...

Mybatis插件入门

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...

DOA估计算法——迭代自适应算法(IAA)

1 简介 迭代自适应法 (Iterative Adaptive Approach&#xff0c;IAA)估计算法最早由美国的电气工程师和数学家Robert Schmidt和Roy A. Kuc在1986年的一篇论文"Multiple Emitter Location and Signal Parameter Estimation"中首次提出了这一算法&#xff0c; IAA DOA …...

Python If语句以及代码块的基本介绍

if语句 在编程中if语句是一种根据条件执行不同代码块的控制结构,他根据条件的真假来分支程序的执行路径,所以我们可以通过if语句根据不同情况而执行不同的程序 格式 if [条件(bool值或者计算结果为bool类型的算式)] : a11if a>10:print("a大于10") # --> a大…...

[嵌入式专栏](FOC - SVPWM扇区计算Part1)

文章目录 1 . 概要2 . 扇区计算2.1 扇区Ⅰ计算2.2 扇区Ⅱ计算2.3 扇区Ⅲ计算 3 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 概要 经过扇区判断后&#xff0c;就知道在哪个扇区进行输出了 【Q】但是每个扇区分别输出怎样的结…...

亚马逊美国站ASTM F2613儿童折叠椅和凳子强制性安全标准

ASTM F2613折叠椅和凳子安全标准 美国消费品安全委员会&#xff08;CPSC&#xff09;发布的ASTM F2613儿童折叠椅和凳子的强制性安全标准&#xff0c;已于2020年7月6日生效&#xff0c;并被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》。 亚马逊要求在美国站上架的儿…...

【机组期末速成】指令系统|机器指令概述|操作数类型与操作类型|寻址方式|指令格式

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 前言&#xff1a; 一、本章考点总览 二、考点分析 1、以下有关指令系统的说法中错误的是&#xff08; &#xff09;。 2…...

java美容管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web美容管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

Redis哨兵

1.哨兵介绍 1.1.为何需要哨兵&#xff1f; 为了解决master节点宕机问题&#xff0c;选举salve节点为新的master节点。 1.2.哨兵的作用 1.3.服务状态监控 1.4.选举新的master 1.5.如何实现故障转移 2.搭建哨兵集群 2.1.集群结构 这里我们搭建一个三节点形成的Sentinel集群&…...

温岭建设规划局网站/网站产品怎么优化

下面是禁止移动端滑动事件的方式&#xff0c;慎用 document.querySelector(body).addEventListener(touchmove, function (ev) {event.preventDefault();});转载于:https://www.cnblogs.com/songdongdong/p/6739701.html...

江苏省住房和城乡建设厅 官方网站/百度一下你就知道了百度一下

一、创建 web 运行用户groupadd wwwuseradd -g www www二、网站目录文件权限的设置对网站的安全至关重要&#xff0c;下面简单介绍网站目录文件权限的基本设定。我们假设http服务器运行的用户和用户组是www&#xff0c;网站用户为www,网站根目录是/usr/local/apache2/htdocs。1…...

哪个公司做的网站好/广州seo优化费用

大家好&#xff01;学习理论知识之后&#xff0c;怎么能没有一些配套的习题呢&#xff1f;这当然是没问题的&#xff01;这次我们就来做一做配套的习题&#xff1a; 主题&#xff1a;死亡骰&#xff08;这个字念tou2&#xff08;投&#xff09;&#xff09;子 “死亡骰子”是一…...

做网站费用分摊入什么科目/网站搜索排名

1、贝宝贝宝&#xff08;PayPal&#xff09;是一个在1998年首次推出的在线支付服务。贝宝在全球200多个国家运营&#xff0c;支持26种货币&#xff0c;允许用户在网站上进行结帐。贝宝通过浏览器&#xff0c;应用程序或阅读器处理付款&#xff0c;并为客户提供信贷服务。2、Due…...

建设部房地产网站/市场推广方案和思路

一、map函数 1、作用&#xff1a;它接收一个函数 f 和一个 list&#xff0c;并通过把函数 f 依次作用在 list 的每个元素上&#xff0c;得到一个新的 list 并返回。 2、实例 def f(x):return x*x a list( map (f, [1, 2, 3, 4, 5, 6, 7, 8, 9])) print (a)#[1, 4, 9, 16, 25, …...

百度文库 旅游网站建设方案书/百度网址安全中心

【题目描述】 在一个大雨倾盆的夜晚&#xff0c;在一条偏僻的路上&#xff0c;一个老人蹒跚地走着。这个时候迎面驶来一辆汽车&#xff0c;由于路滑&#xff0c;司机没能及时刹住刹车&#xff0c;悲剧发生了&#xff0c;事发后司机立刻驾车逃离现场…… 事后&#xff0c;警方立…...