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

MySQL 复合查询(重点)

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

MySQL 复合查询(重点)

收录于专栏[MySQL]
本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

基本查询回顾 

多表查询

自连接 

子查询  

单行子查询 

多行子查询 

 多列子查询

在 from 子句中使用子查询

合并查询

union 

union all 


基本查询回顾 

前面我们讲解的 mysql 表的查询都是一张表进行查询,在实际开发中这远远不够。

如果大家对表的基本查询还是不太了解的话,可以自行去下面链接查看:

MySQL表的基本查询-CSDN博客

查询工资高于 500 或岗位为 MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的J

select * from emp where (sal > 500 or job = 'MANAGER') and ename like 'J%'

按照部门号升序而雇员的工资降序排序

select * from emp order by deptno, sal desc;

使用年薪进行降序排序

select ename,sal*12+ifnull(comm,0) as '年薪' from emp order by 年薪 desc;

显示工资最高的员工的名字和工作岗位

select ename,job from emp where sal = (select max(sal) from emp);

显示工资高于平均工资的员工信息

select ename,sal from emp where sal > (select avg(sal) from emp);

显示每个部门的平均工资和最高工资

select deptno,format(avg(sal),2), max(sal) from emp group by deptno;

显示平均工资低于2000的部门号和它的平局工资

select deptno,avg(sal) as avg_sal from emp group by deptno having avg_sal < 2000;

显示每种岗位的雇员数,平均工资

select job,count(*),format(avg(sal),2) from emp group by job;

多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表 emp,dept,salgrade 来演示如何进行多表查询。

案例:

显示雇佣名、雇员工资以及所在部门的名字因为上面的数据来自 emp 和 dept 表,因此要联合查询

其实我们只要emp表中的 deptno=dept 表中的 deptno 字段的记录

select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptno = dept.deptno

显示部门号为 10 的部门号,员工名和工资

select ename, sal,ename from emp ,dept where emp.deptno=dept.deptno and dept.deptno = 10;

 显示各个员工的姓名,工资,及性别

select ename,sal,grade from emp,salgrade where emp.sal between losal and hisal.

自连接 

自连接是指在同一张表连接查询

案例:

显示员工 FORD 的上级领导的编号和姓名(mgr 是员工领导的编号 -- empno)

使用的子查询 

select empno,ename from emp where emp.empno = (select mgr from emp where ename='FORD');

使用多表查询

select leader.emprno,leader.ename from emp leader,emp worker where leader.emprno = worker.mgr and work.ename = 'FORD';

使用到表的别名

form emp leader,emp worker,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别。

子查询  

子查询是指从嵌入在其他 sql 语句中的 select 语句,也叫嵌套查询

单行子查询 

返回一行记录的子查询

显示 smith 同一部门的员工 

select * from emp where deptno = (select deptno from emp where ename='smith');

多行子查询 

返回多行记录的子查询

in 关键字:查询和 10 部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno = 10) and deptno<>10;

all 关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

select ename,sal,deptno from emp where sal > all(select sal from emp where deptno=30);

any 关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)

select ename,sal,deptno from emp where sal > any(select sal from emp where deptno = 30);

 多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数数据的子查询语句。 

案例:查询和 smith 的部门的岗位完全相同的所有雇员,不含 smith 本人

select ename from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH') and ename <> 'SMITH';

在 from 子句中使用子查询

子查询语句出现在 from 子中。这里要用到数据查询的技巧,把一个子查询当作一个临时表使用。

案例:

显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

select ename,deptno,sal,format(asal,2) from emp, (select avg(sal) asal, deptno dt from emp group by deptno) tmp where emp.sal>tmp.asal and emp.deptno=tmp.dt;

获取各个部门的平均工资,将其看作临时表。 

查找每个部门工资最高的人的姓名、工资、部门、最高工资。 

select emp.ename,emp.sal,emp.deptno,ms form emp,
(select max(sal) ms, deptno from emp group by deptno) tmp
where emp.deptno = tmp.deptno and emp.sal=tmp.ms;

显示每个部门的信息(部门名,编号,地址)和人员数量

方法一:使用多表

select dept.ename,dept.deptno,dept.loc,count(*) '部门人数' from emp,
dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.ename,dept.loc;

方法二:使用子查询 

1. 对emp表进行人员统计
select count(*),deptno from emp group by deptno;
2. 将上面的表看作临时表
select dept.deptno,dname,mycnt,loc from dept,
(select count(*) mycnt,deptno from emp group by deptno) tmp
where dept.deptno = tmp.deptno;

合并查询

在实际应用中,为了合并多个 select 的执行结果,可以使用集合操作符 union,union all

union 

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行

案例:将工资大于2500或职位是MANAGER的人找出来

select ename,sal,job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';

union all 

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉集中的重复行。

案例:将工资大于25000或职位是MANAGER的人找出来 

select ename,sal,job from emp where sal>2500 union all
select ename,sal,job from emp where job='MANAGER';

相关文章:

MySQL 复合查询(重点)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 MySQL 复合查询&#xff08;重点&#xff09; 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …...

ASP.NET |日常开发中连接Oracle数据库详解

ASP.NET &#xff5c;日常开发中连接Oracle数据库详解 前言一、安装和配置 Oracle 数据访问组件1.1 安装ODP.NET&#xff08;Oracle Data Provider for.NET&#xff09;&#xff1a;1.2 引用相关程序集&#xff1a; 二、配置连接字符串2.1 连接字符串的基本组成部分&#xff1a…...

java_连接数据库的方法_后端处理_前端调用_打通整体思路

参考&#xff1a;14 尚上优选项目-平台管理端-权限管理模块-开发角色管理接口&#xff08;上&#xff09;_哔哩哔哩_bilibili 第一步. 定义数据 在数据库中定义好数据&#xff08;如role表格&#xff09;&#xff0c;在java后端定义好对应的实体类&#xff08;Role类&#xf…...

网络安全知识点

第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 1.2.3 网络安全的种类P5 &#xff08;1…...

pyfink1.20版本下实现消费kafka中数据并实时计算

1、环境 JDK版本&#xff1a;1.8.0_412python版本&#xff1a;3.10.6apache-flink版本&#xff1a;1.20.0flink版本&#xff1a;1.20kafka版本&#xff1a;kafka_2.12-3.1.1flink-sql-connector-kafka版本&#xff1a;3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…...

国产Tomcat东方通(TongWeb):Linux系统部署全攻略

国产Tomcat东方通&#xff08;TongWeb&#xff09;&#xff1a;Linux系统部署全攻略 国产tomcat东方通tongweb在linux系统上部署全流程 [这里是图片001] 项目地址: https://gitcode.com/Resource-Bundle-Collection/fca68 项目介绍 在当前的软件开发和运维环境中&#xff0c…...

bilstm -crf 的torch官方的教程 不支持 batchsize 。。。。有更效率更高的方案吗

根据您的需求&#xff0c;您正在寻找一个支持批量处理&#xff08;batch size&#xff09;的BiLSTM-CRF模型的PyTorch教程。以下是一些资源&#xff0c;它们提供了更高效的解决方案&#xff0c;包括批量处理的支持&#xff1a; 1. **a-PyTorch-Tutorial-to-Sequence-Labeling*…...

Python面试常见问题及答案6

一、基础部分 问题1&#xff1a; 在Python中&#xff0c;如何将字符串转换为整数&#xff1f;如果字符串不是合法的数字字符串会怎样&#xff1f; 答案&#xff1a; 在Python中&#xff0c;可以使用int()函数将字符串转换为整数。如果字符串是合法的数字字符串&#xff0c;转换…...

代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素

感觉上是可以轻松完成的&#xff0c;因为对链接的结构&#xff0c;元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了&#xff0c;用malloc折腾半天&#xff0c;忘记了用new&#xff0c;真想扇自己嘴巴子到飞起删除后写一个函数&#xff0c;把链表打印…...

1. 机器学习基本知识(5)——练习题(1)

1.7 &#x1f426;‍&#x1f525;练习题&#xff08;本章重点回顾与总结&#xff09; 0.回答格式约定&#xff1a; 对于书本内容的回答&#xff0c;将优先寻找书本内容作为答案进行回答。 书本内容回答完毕后&#xff0c;将对问题进行补充回答&#xff0c;上面分割线作为两个…...

vue 自定义组件image 和 input

本章主要是介绍自定义的组件&#xff1a;WInput&#xff1a;这是一个验证码输入框&#xff0c;自动校验&#xff0c;输入完成回调等&#xff1b;WImage&#xff1a;这是一个图片展示组件&#xff0c;集成了缩放&#xff0c;移动等操作。 目录 一、安装 二、引入组件 三、使用…...

系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件

每日禅语 古代&#xff0c;一位官员被革职遣返&#xff0c;心中苦闷无处排解&#xff0c;便来到一位禅师的法堂。禅师静静地听完了此人的倾诉&#xff0c;将他带入自己的禅房之中。禅师指着桌上的一瓶水&#xff0c;微笑着对官员说&#xff1a;​“你看这瓶水&#xff0c;它已经…...

Jfinal项目整合Redis

1、引入相关依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency><depen…...

在Ubuntu服务器上备份文件到自己的百度网盘

文章目录 概述安装bypy同步文件定时任务脚本 概述 之前自购了一台阿里云服务器&#xff0c;系统镜像为Ubuntu 22.04&#xff0c; 并且搭建了LNMP开发环境&#xff08;可以参考&#xff1a;《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》&#xff09;。由于项目运行中会产生附…...

Unity 模板测试透视效果(URP)

可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...

《计算机视觉证书:开启职业发展新航道》

一、引言 在当今科技飞速发展的时代&#xff0c;计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知&#xff0c;计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证&#xff0c;其作用愈发凸显…...

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

一、使用VSCode开发.NET项目 1、创建文件夹&#xff0c;使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具&#xff0c;外部dll包依靠它来加载 法1》&#xff1a;NuGet Gallery&#xff0c;注意要启动科学的工具 法2》NuGet Package Manager GUl&#xff0c…...

Git-分布式版本控制工具

目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中&#xff0c;我们经常会遇到以下几个场景&#xff1a;备份、代码回滚、协同开发、追溯问题代码编写人和编写时间&#xff08;追责&#xff09;等。备份的话是为了…...

C++ 第10章 对文件的输入输出

https://www.bilibili.com/video/BV1cx4y1d7Ut/?p147&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcee8984989cddeb3ef7b7e9fd89098dbe8 &#x1f341;&#x1f341;&#x1f341;本篇为贺宏宏老师C语言视频教程文件输入输出部分笔记整理…...

【机器学习】手写数字识别的最优解:CNN+Softmax、Sigmoid与SVM的对比实战

一、基于CNNSoftmax函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 二、 基于CNNsigmoid函数进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分析 三、 基于CNNSVM进行分类 1数据集准备 2模型设计 3模型训练 4模型评估 5结果分…...

5分钟搞定:Buzz音频转录软件常见问题快速解决指南 [特殊字符]

5分钟搞定&#xff1a;Buzz音频转录软件常见问题快速解决指南 &#x1f3af; 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz …...

7.1 DRAM Basics: Internals, Operation

这两段截图是《Memory Systems》一书中关于 DRAM 最基础定义的阐述。我为您提供翻译和深度解读: 1. 中文翻译 图1: 随机存取存储器(RAM)如果每一位使用一个单一的晶体管-电容器对,则被称为动态随机存取存储器(DRAM)。图 7.3 在右下角展示了 DRAM 存储单元的电路。这个电…...

3个关键步骤:在macOS上制作Windows启动盘的完整指南

3个关键步骤&#xff1a;在macOS上制作Windows启动盘的完整指南 【免费下载链接】windiskwriter &#x1f5a5; Windows Bootable USB creator for macOS. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f47e; UEFI & Legacy Sup…...

8大网盘高速下载终极指南:免费实现全平台直链解析,告别限速烦恼

8大网盘高速下载终极指南&#xff1a;免费实现全平台直链解析&#xff0c;告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 /…...

终极游戏光标解决方案:YoloMouse让你的鼠标在游戏中清晰可见

终极游戏光标解决方案&#xff1a;YoloMouse让你的鼠标在游戏中清晰可见 【免费下载链接】YoloMouse Game Cursor Changer 项目地址: https://gitcode.com/gh_mirrors/yo/YoloMouse 你是否曾在激烈的游戏战斗中迷失了鼠标光标&#xff1f;当屏幕上特效绚烂、技能乱飞时&…...

如何用Win11Debloat免费为Windows系统瘦身:终极优化指南

如何用Win11Debloat免费为Windows系统瘦身&#xff1a;终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …...

ARMv8内存访问指令STLUR与STLXP详解

1. ARMv8内存访问指令概述 在ARMv8架构中&#xff0c;内存访问指令构成了处理器与内存系统交互的基础设施。作为RISC架构的典型代表&#xff0c;ARMv8通过精简但功能明确的指令集实现了高效的内存操作。其中存储(Store)类指令负责将寄存器数据写入内存&#xff0c;而根据不同的…...

Spring Security权限进阶:用@PostAuthorize和@PostFilter保护你的API返回数据(Spring Boot 3.x实战)

Spring Security权限进阶&#xff1a;用PostAuthorize和PostFilter保护你的API返回数据&#xff08;Spring Boot 3.x实战&#xff09; 在构建现代Web应用时&#xff0c;数据安全始终是开发者面临的核心挑战之一。传统权限控制往往聚焦于"入口检查"——确保只有合法用…...

终极Windows与Office智能激活解决方案:KMS_VL_ALL_AIO全面解析与实战指南

终极Windows与Office智能激活解决方案&#xff1a;KMS_VL_ALL_AIO全面解析与实战指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款功能强大的Windows与Office智能激活脚…...

QCustomPlot交互秘籍:手把手实现数据点拾取、矩形框选与自定义高亮样式

QCustomPlot交互功能深度解析&#xff1a;从数据点拾取到视觉定制全攻略 1. 交互式数据可视化的核心价值 在现代数据可视化应用中&#xff0c;静态图表已经无法满足用户日益增长的交互需求。QCustomPlot作为Qt生态中功能强大的绘图库&#xff0c;其交互功能的设计既考虑了开发…...