MYSQL相关之不常见变量、排序函数、JDBC数据库与Java连接

news2024/11/18 1:24:41

用户自定义变量

  1. 局部变量--->只在当前begin/end代码块中有效
 

sql

复制代码

create procedure add ( in a int, in b int ) begin declare c int default 0; set c = a + b; select c as c; end;

2.用户变量--->在客户端链接到数据库实例整个过程中用户变量都是有效的。

系统变量

  1. 会话变量-->会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。@@session.变量名 或者@@local.变量名

4.全局变量-->全局变量影响服务器整体操作。@@global.变量名

DEMO解释排序函数

按员工底薪排序并且标明顺序。 按照实例模仿,可以学会排序函数的使用方式。实例下边也进行了解释。Oracle中存在row_number,rank,dense_rank函数,而Mysql中需要模仿处理,下边实例都是在Mysql中进行实现的。

DEMO1:

 

sql

复制代码

-- 排序函数 -- row_number,rank,dense_rank USE mytest;

row_number row_number简写rn,可以根据需求进行命名 使用名为“@rn”的变量来跟踪行号。我们使用子查询 (SELECT @rn := 0) 将其初始化为 0,然后使用表达式“@rn := @rn + 1”为每一行将其递增 1。

 

sql

复制代码

-- row_number SELECT empno,ename,sal,@rn:=@rn+1 rn FROM emp,(SELECT @rn:=0)t1 ORDER BY sal DESC;

Demo2:

dense_rank dense_rank就是除了使用row_number-》rn,还使用了一个rank变量,rank就是下边实例中的sal.

 

sql

复制代码

-- dense_rank SELECT empno,ename,sal, IF(@sal=sal,@rn,@rn:=@rn+1) rn, @sal:=sal FROM emp,(SELECT @rn:=0,@sal:=0) t1 ORDER BY sal DESC;

检索“emp”表中所有员工的员工编号 (empno)、员工姓名 (ename) 和薪水 (sal),同时还按降序为每一行生成行号 (rn)的薪水。查询使用变量 (@rn) 来跟踪行号。在执行主查询之前,该变量在子查询 (t1) 中被初始化为 0。

DEMO3:

-- rank

 

sql

复制代码

-- rank SELECT empno,ename,sal,@r:=@r+1, IF(@sal=sal,@rn,@rn:=@r) rn, @sal:=sal FROM emp,(SELECT @rn:=0, @r:=0,@sal:=0) t1 ORDER BY sal DESC;

使用变量模拟 MySQL 中 ROW_NUMBER() 函数的行为。

  1. “@rn”变量用于跟踪行号。
  2. “@r”变量用于跟踪排名。
  3. “@sal”变量用于跟踪以前的薪水值。
  4. 子查询将所有变量初始化为 0。
  5. SELECT 语句检索员工编号、姓名、薪水,并生成行号和级别。
  6. “@r”变量每行递增 1。
  7. IF() 函数检查当前薪水值是否与以前的薪水值相同。如果它们相同,则“@rn”变量用作当前行的排名。如果它们不同,则使用“@r”变量作为当前行的排名,并将“@rn”变量设置为“@r”的值。
  8. “@sal”变量用当前薪水值更新,以便在下一行进行比较。
  9. 结果集按薪水降序排列。

DEMO4:

 

sql

复制代码

-- 将员工的信息,按照部门和底薪排序,并标明顺序 SELECT empno,ename,deptno,sal, IF(@sal=sal,@rn,@rn:=@rn+1), IF(@deptno=deptno,@rn,@rn:=1) rn, @deptno:=deptno, @sal:=sal FROM emp,(SELECT @rn:=0,@sal:=0,@deptno:=0) t1 ORDER BY deptno,sal DESC;

检索“emp”表中所有员工的员工编号 (empno)、员工姓名 (ename) 和薪水 (sal),同时还按降序为每一行生成行号 (rn)的薪水。

此外,它检查当前行的薪水是否与上一行的薪水相同,如果是,则为当前行分配与上一行相同的行号。使用三个变量(@rn、@r 和@sal)来跟踪行号、基于薪水的行排名以及之前的薪水值。

在执行主查询之前,变量在子查询 (t1) 中被初始化为 0。主查询首先为每一行递增 @r 变量以生成基于薪水的排名。然后它使用 IF 语句将当前薪水 (@sal) 与以前的薪水值进行比较。

如果它们相同,则为当前行分配与前一行相同的行号(@rn);否则,它使用@r 变量分配一个新的行号(@rn)。最后,它用当前行的薪水更新@sal 变量,以便在下一行进行比较。 ORDER BY 子句按薪水的降序对结果集进行排序。

JDBC数据库与Java连接

概述: JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。

JDBC规范(掌握四个核心对象):

  • DriverManager:用于注册驱动
  • Connection: 表示与数据库创建的连接
  • Statement: 操作数据库sql语句的对象
  • ResultSet: 结果集或一张虚拟表

JDBC连接数据库基础六部

第一步:注册驱动 Class.forName("com.mysql.jdbc.Driver");

第二步:建立连接 这一步注意修改数据库名称以及密码,和数据库地址 conn=DriverManager.getConnection("jdbc:mysql://localhost/test1","root","123456");

第三步:创建Statement对象 st=conn.createStatement();

end》》》

智者见智,仁者见仁,一个好的价值观念会让你懂得许多,学会更多,得到很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商户查询的缓存——缓存穿透

4.缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库 解决方案: 1.缓存空对象(简单粗暴) 2.布隆过滤 代码实现: Autowired private String…

在米文动力 EVO Orin 设备 Jetson AGX Orin 下配置 YOLOV5 的环境说明

声明:本博文的配置大部分参考 Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch、Tensorrt最全教程 1 前言 本文设备内置的模组是 Nvidia Jetson AGX Orin 32GB,算力达到 200 TOPS,aarch64 架构 本文主要参考《Jetson AGX Orin安装Anac…

发明专利公开 -- CSS动画精准实现时钟

上一篇【setTimeout不准时,CSS精准实现计时器功能】的博文,最后提到了通过 CSS 动画实现计时器的方式。 本文详情描述如何通过 CSS 完整实现时钟效果,这也是团队 21 年专利的一项内容(专利公布号:CN114003087A&#x…

Docker安装CentOS7

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 本教程是关于在CentOS上安装社区版Docker的方法(Docker C…

SCTP:记录一次Diameter消息卡顿延迟问题

SCTP:记录一次Diameter消息卡顿延迟问题 1、背景 客户端:5个接口机 服务端:2个模拟器(模拟HSS,是一个Diameter服务端) 5个客户端的地址是: 10.212.27.2910.212.27.5510.212.24.1710.212.24.1…

js编译、执行上下文、作用域链

参考资料 极客时间课程《浏览器工作原理与实践》 – 李兵 《你不知道的JavaScript》-- Kyle Simpson ES5.1规范:https://262.ecma-international.org/5.1/#sec-10.3 ES6规范:https://262.ecma-international.org/6.0/#sec-executable-code-and-execu…

Redis 五大基本数据类型常见命令

一、redis中的常见数据结构 Redis共有5种常见数据结构,分别字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。 二、redis中字符串(String)介绍 String 类型是…

小红书内容种草怎么玩,koc铺量原则

一直以来,小红书平台都以其强大的种草力,而备受品牌关注。许多初创品牌更是将平台看做抢占市场的前沿阵地。那么小红书内容种草怎么玩,koc铺量原则是什么呢?今天来为大家详细介绍一下。 一、什么是koc铺量 要做好新品预热的koc铺量&#xff…

存bean和取bean

准备工作存bean获取bean三种方式 准备工作 bean:一个对象在多个地方使用。 spring和spring boot:spring和spring boot项目;spring相当于老版本 spring boot本质还是spring项目;为了方便spring项目的搭建;操作起来更加简单 spring…

有效和无效的帮助中心区别在哪?如何设计有效的帮助中心?

帮助中心就是一个丰富的知识库,可以对企业的潜在客户进行引导。不仅能够提升用户的使用体验还能为企业塑造更加专业的品牌形象,在使用过程中为用户提供帮助。帮助中心的目的就是为了解决用户在使用过程中遇到的困难,同时为用户的使用提供引导…

DC-9通关详解

信息收集 漏洞发现 result.php处存在sql注入 sqlmap跑信息 python sqlmap.py -u http://192.168.45.146/results.php --data search1 -D users -T UserDetails --dump 拿了几个尝试登录都无效 ssh尝试登录直接拒绝了 再看Staff表 查哈希 进后台 多了一个添加记录的功能 没啥…

数据结构(二叉树)

文章目录 一、树的基础概念1.1 树型结构1.2 树型的概念 二、二叉树2.1 概念 性质2.2 二叉树的存储2.2 二叉树的基本操作(1)遍历(2)其他 2.3 二叉树练习 一、树的基础概念 1.1 树型结构 树是一种非线性的数据结构,它…

ChatGPT 由0到1接入 Siri

ChatGPT 由0到1接入 Siri ChatGPT 由0到1接入 Siri第一步:获取 OpenAPI 的 Key第二步:制作快捷指令本教程收集于: AIGC从入门到精通教程 ChatGPT 由0到1接入 Siri 分享如何将 GPT 应用集成到苹果手机的 Siri 中 (当然手机是需要魔法(TZ)的) 第一步:获取 OpenAPI 的…

网络安全可以从事哪些岗位?岗位职责是什么?

伴随着社会的发展,网络安全被列为国家安全战略的一部分,因此越来越多的行业开始迫切需要网安人员,也有不少人转行学习网络安全。那么网络安全可以从事哪些岗位?岗位职责是什么?相信很多人都不太了解,我们一起来看看吧。 1、安全…

电阻阻值读取方法、电容容值的读取方法

电阻、电容的数值读取方法 文章目录 电阻、电容的数值读取方法前言1、电阻读数1.1 贴片电阻1.2.直插色环电阻 2、电容读数2.1 电容单位换算2.2 电容读数方法 前言 现在随着电子产品的不断升级优化,做到体积越来越小了,以前发现还是用得很多直插电阻和一…

百年不用了,今天拾起来 sort() 排序

简单赘述一下需求。 原本前端调用后端接口是自带排序功能的,一般是按照创建单据的时间,后端会处理好返回给我们。 但是有时候有特别的限制,需要前端自行处理排序展示。 如上图所示, 列表和列表扩展行均要根据我们新增或编辑的时候…

ATTCK v13版本战术介绍——防御规避(五)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第25-30种子技术,后续会介绍防御规避其他子技术&#xf…

什么蓝牙耳机好?业内权威蓝牙耳机排名TOP5

蓝牙耳机是当下最热门的数码产品,我个人已经买过十来款蓝牙耳机了,最近逛论坛看到知名数码论坛公布了蓝牙耳机排名TOP5,不懂什么蓝牙耳机好的朋友们在选购时可以从中入围的品牌中进行挑选。 一、JEET Air2蓝牙耳机 推荐理由:舒适…

springboot项目部署教程【本地+云服务器】

目录 前言一、环境准备二、项目导入三、配置Maven四、数据库导入五、启动项目六、浏览器访问结语 前言 springboot项目部署教程用最简单、暴力的方法完成项目导入。 🥇个人主页:MIKE笔记 🥈文章专栏:毕业设计源码合集 ⛄联系博主…

一、LLC 谐振变换器工作原理分析

1 前言 LLC 谐振电路采用脉冲频率调制(PFM),通过改变驱动信号的频率来控制变换器的能量传输。谐振电路中的三个谐振元件为:谐振电感 Lr、谐振电容 Cr 和励磁电感 Lm,它们根据工作模式的不同可形成两个谐振频率。与串联谐振变换器相比&#x…