mysql学习实践

news2024/9/30 15:25:52

这里写目录标题

    • 查找重复数据
      • 查找重复数据的字段值以及重复的次数
      • 如果你只想查找重复数据,而不需要知道重复的次数,可以简化查询如下
    • 根据某个字段查询重复的数据,并取id最大的那条数据(用于商机列表展示)
    • 将逗号分隔的字符串进行切割并统计个数
    • 计算某个字段之和大于|等于某个值,更新审核状态
    • 根据前端传过来的List,进行更新、插入和删除操作

在这里插入图片描述

-- 【 等值连接 sql99标准 】
-- 案例1.查询员工名、部门名
SELECT last_name,department_name
from employees e
INNER JOIN departments d
on e.department_id = d.department_id;

-- 案例2.查询名字中包含e的员工名和工种名
SELECT last_name,job_title
from employees e
INNER JOIN jobs j
on e.job_id = j.job_id
WHERE e.last_name LIKE '%e%';

-- 案例3.查询部门个数>3的城市名和部门个数(分组+筛选)
SELECT city,COUNT(*) 部门个数
from departments d
INNER JOIN locations l
ON d.location_id=l.location_id
GROUP BY city
HAVING COUNT(*)>3;

-- 案例4.查询哪个部门的员工个数>3的部门名和员工个数,并按个数降序(添加排序)
SELECT department_name,COUNT(*) 员工个数
FROM employees e
INNER JOIN departments d
ON d.department_id = e.department_id
GROUP BY department_name
HAVING COUNT(*)>3
ORDER BY COUNT(*) desc;
---------------------------------------------------------------------------------
-- 【 非等值连接 】

---------------------------------------------------------------------------------
-- 【 自连接 】
-- 案例5.查询员工的名字和上级的名字
SELECT e.last_name, m.last_name 上级名字
FROM employees e
JOIN employees m
ON e.`manager_id`= m.`employee_id`;

2、外连接
应用场景:用于查询一个表中有,另一个表没有的记录
特点:

  • 外连接的查询结果为主表中所有记录
    • 如果从表中有和它匹配的,则显示匹配的值
    • 如果从表中没有和它匹配的,则显示null
    • 外连接查询结果=内连接结果+主表中有而从表中没有的记录
  • 左外连接,left join左边的是主表
  • 右外连接,right join右边是主表
  • 左外和右外交换两个表的顺序,可以实现同样的效果
  • 全外连接=内连接的结果+表1中有但表2没有+表2中有但表1没有的
-- 1)、左外连接:left【outer】
-- 查询没有男朋友的女生名
 SELECT b.name
 FROM beauty b
 LEFT JOIN boys bo
 ON b.`boyfriend_id` = bo.`id`
 WHERE bo.`id` IS NULL;
 
-- 2)、右外连接:right 【outer】
-- 查询没有男朋友的女生名
SELECT b.name
FROM boys bo
RIGHT JOIN beauty b
ON bo.`id` = b.`boyfriend_id`
WHERE bo.`id` IS NULL

-- 3)、全外连接:full【outer】
SELECT b.*,bo.*
FROM beauty b
FULL OUTER JOIN boys bo
ON b.`boyfriend_id` = bo.id;

3、交叉连接:cross

 SELECT b.*,bo.*
 FROM beauty b
 CROSS JOIN boys bo;

查找重复数据

查找重复数据的字段值以及重复的次数

SELECT project_code, COUNT(*) AS count
FROM business_order
GROUP BY project_code
HAVING count > 1;

如果你只想查找重复数据,而不需要知道重复的次数,可以简化查询如下

SELECT project_code
FROM order_info
GROUP BY project_code
HAVING COUNT(*) > 1;

根据某个字段查询重复的数据,并取id最大的那条数据(用于商机列表展示)

SELECT
	MAX( id ) id,
	project_code
FROM
	business_order 
WHERE
	project_code = 'WZ23080203' 
GROUP BY
	project_code 
-- ORDER BY id DESC;

将逗号分隔的字符串进行切割并统计个数

SELECT LENGTH(your_column) - LENGTH(REPLACE(your_column, ',', '')) + 1 AS count
FROM your_table;

这个查询使用了 REPLACE 函数将逗号替换为空字符串,然后计算原始字符串长度与替换后的字符串长度之差,并加上1,从而得到逗号分隔的字符串中的元素个数。

计算某个字段之和大于|等于某个值,更新审核状态

审批人员有两个,auditor = ‘101,102’ 的时候,代表两人均已审核通过,将status更改为审核通过状态
你可以使用UPDATE语句来同时判断 count 等于3的情况,并将 status 字段更改为1。以下是一个示例的MySQL查询:

UPDATE your_table
SET status = 1
WHERE LENGTH(your_column) - LENGTH(REPLACE(your_column, ',', '')) + 1 = 3;

根据前端传过来的List,进行更新、插入和删除操作

  1. 首先,从数据库中获取与前端传来的List相关的所有数据。
  2. 遍历前端传来的List,对于每个元素:
    • 如果数据库中存在该元素,执行更新操作。
    • 如果数据库中不存在该元素,执行插入操作。
  3. 遍历数据库中的数据,对于每个元素:
    • 如果该元素不在前端传来的List中,执行删除操作。
// 前端传过来的List
List<YourObject> frontendList = ...;

// 从数据库中获取相关数据
List<YourObject> dbList = yourDao.getAll();

// 更新数据库中已存在的数据,插入不存在的数据
frontendList.forEach(frontendObj -> {
    boolean found = dbList.stream().anyMatch(dbObj -> dbObj.getId() == frontendObj.getId());
    if (found) {
        // 执行更新操作
        yourDao.update(frontendObj);
    } else {
        // 执行插入操作
        yourDao.insert(frontendObj);
    }
});

// 删除未更新的数据
dbList.forEach(dbObj -> {
    boolean found = frontendList.stream().anyMatch(frontendObj -> frontendObj.getId() == dbObj.getId());
    if (!found) {
        // 执行删除操作
        yourDao.delete(dbObj.getId());
    }
});

使用Lambda表达式可以更简洁地遍历集合并进行条件判断。在上述代码中,我们使用 forEach 方法遍历前端传来的List和数据库中的数据,并使用 stream 方法结合 anyMatch 方法来判断是否存在相应的数据。根据判断结果执行更新、插入和删除操作。

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

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

相关文章

SpringCloud溯源——从单体架构到微服务Microservices架构 分布式和微服务 为啥要用微服务

前言 单体架构好好的&#xff0c;为啥要用微服务呢&#xff1f;微服务究竟是啥&#xff0c;怎么来的&#xff0c;有啥优缺点&#xff0c;本篇博客尝试追根溯源&#xff0c;阐述单体应用到分布式&#xff0c;微服务的演变,微服务架构的定义及优缺点&#xff0c;厘清相关的概念。…

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型

在迁移老项目的数据库时&#xff0c;使用Navicat Premium的数据传输功能同步了表结构和数据。但是&#xff0c;发现某些字段的数据类型出现了错误&#xff0c;例如&#xff0c;租户ID从Oracle的NUMBER类型变成了MySQL的decimal(10)&#xff0c;正确的应该是bigInt(20)。此外&am…

windows server 2012安装教程

虚拟机系列文章 VMware Workstation Player 17 免费下载安装教程 VMware Workstation 17 Pro 免费下载安装教程 windows server 2012安装教程 Ubuntu22.04.3安装教程 FTP服务器搭建 windows server 2012安装教程 虚拟机系列文章前言 前言 各位道友&#xff0c;大家好&#xf…

大型语言模型:RoBERTa — 一种鲁棒优化的 BERT 方法

一、介绍 BERT模型的出现导致了NLP的重大进展。BERT的架构源自Transformer&#xff0c;在各种下游任务上实现了最先进的结果&#xff1a;语言建模&#xff0c;下一句预测&#xff0c;问答&#xff0c;NER标记等。 大型语言模型&#xff1a;BERT — 来自变压器的双向编码器表示 …

Java反射(一)--- 类的实例化

文章目录 一、整理框架二、Java反射机制提供的功能三、反射相关的主要API四、相关代码&#xff1a;1.Person类2.反射之前&#xff0c;对于Person类的操作3.反射之后&#xff0c;对于Person类的操作 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、整…

数据库 explain 关键字解析

目录 1. explain 概述 2. explain 关键字的使用方式 3. explain 的版本迭代 4. explain 只分析SQL语句&#xff0c;不执行SQL语句 5. explain 输出结果中各个字段的含义 6. type 表示检索表数据的方式 7. key_len表示使用的索引的长度 8. rows 表示预估读取到的行数 9…

2023年10月9日历史上的今天大事件早读

1740年10月09日红溪惨案 1874年10月09日万国邮政联盟成立 1912年10月09日第一次巴尔干战争爆发 1913年10月09日武昌起义元勋蒋翊武被害 1924年10月09日近代翻译家林纾(林琴南)逝世 1934年10月09日南斯拉夫国王遇刺身亡 1936年10月09日红军三大主力会师 1941年10月09日第…

瑜伽馆微信小程序怎么制作约课系统

在瑜伽馆微信小程序中&#xff0c;约课系统是一个重要的功能模块&#xff0c;可以帮助用户便捷地预约和取消预约瑜伽课程。下面将介绍如何制作一个约课系统&#xff0c;让瑜伽馆微信小程序更加完善。 一、确定约课系统的功能 在制作约课系统前&#xff0c;需要明确其功能和特点…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…

Airtest自动化测试工具

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

彩虹商城全新SUP模板 知识付费模板 卡卡云模板源码

2023彩虹商城全新SUP模板 | 知识付费模板 | 卡卡云模板源码 图片&#xff1a;

如何更好的使用结构化工艺文件编制软件?——青创智通

青创智通结构化工艺文件编制软件包括文件创建、文件编制、文件修改、文件复制、文件引用、标准文件库、工艺路线、工艺资源库管理、审批管理、文件导出、文件清单汇总、接口管理等功能。具有以下优势及亮点。 1.集中工艺数据管理 以PLM系统平台为核心的结构化工艺数据支撑平台…

动画圆圈文字标志效果

效果展示 CSS 知识点 实现圆圈文字animation 属性回顾 实现思路 从效果的实现思路很简单&#xff0c;其实就是两个圆圈就可以实现。外层大圆&#xff08;灰色&#xff09;用于圆圈文字的展示&#xff0c;而内圆&#xff08;藏青色&#xff09;主要用于存放 Logo 图片。布局采…

万兆光模块的速度到底有多快?

万兆光模块的速度到底有多快&#xff1f;相信这是很多人都想知道的问题。首先&#xff0c;让我们来了解一下万兆光模块的工作原理。万兆光模块是一种高速率的光电转换模块&#xff0c;发送端把电信号转换成光信号&#xff0c;通过光纤传送后&#xff0c;接收端再把光信号转换成…

php+html+js+ajax实现文件上传

phphtmljsajax实现文件上传 目录 一、表单单文件上传 1、上传页面 2、接受文件上传php 二、表单多文件上传 1、上传页面 2、接受文件上传php 三、表单异步xhr文件上传 1、上传页面 2、接受文件上传php 四、表单异步ajax文件上传 1、上传页面 2、接受文件上传ph…

Scala第二十章节

Scala第二十章节 scala总目录 文档资料下载 章节目标 理解Akka并发编程框架简介掌握Akka入门案例掌握Akka定时任务代码实现掌握两个进程间通信的案例掌握简易版spark通信框架案例 1. Akka并发编程框架简介 1.1 Akka概述 Akka是一个用于构建高并发、分布式和可扩展的基于事…

彻底关闭Win10/Win11关闭自动更新

在自己电脑上发现可以关闭win11系统自动更新&#xff0c;以后效果就不知道了 1.在开始菜单搜索框输入“注册表编辑器”并打开&#xff0c;如图所示 2.在注册表上方输入一下路径&#xff0c;如图所示 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings …

SAP FI BSEG-VBUND 贸易伙伴在过账中使用

主要的配置是在OBA7 主要是通过公司间记账&输入贸易伙伴来控制 第一种情况&#xff0c;两者都不勾选 如果在总账行项目&#xff0c;客户&#xff0c;供应商主记录中维护了贸易伙伴&#xff0c;贸易伙伴会被带入到所有的各自的行项目里面 第二种情况&#xff0c;公司间记账…

全网最细,真实企业性能测试落地实施,一文带你快速打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、什么是性能测试…

墨西哥专线适合企业大批量寄送吗?

随着全球经济一体化的发展&#xff0c;企业间的交流与合作日益密切。跨境物流服务作为企业开展国际贸易的重要基础设施&#xff0c;其重要性不言而喻。墨西哥专线作为一种高效、快速的跨境物流解决方案&#xff0c;受到了越来越多企业的关注。那么&#xff0c;墨西哥专线是否适…