【MySQL】复合查询(重点)-- 详解

 一、基本查询练习回顾

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


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


3、使用年薪进行降序排序


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


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


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


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


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


二、多表查询

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

⚪练习
1、显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自 emp 和 dept 表,因此要联合查询(将数据进行穷举组合 —— 笛卡尔积)

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


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


3、显示各个员工的姓名,工资,及工资级别


三、自连接

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


⚪练习
1、显示员工 FORD 的上级领导的编号和姓名(mgr 是员工领导的编号 —— empno
(1)使用的子查询

先找 FORD 的上级领导的编号(emp),再根据领导的编号来找领导的信息(emp)。


(2)使用多表查询(自查询)
  • 使用到表的别名
from emp e1, emp e2,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别。


四、子查询

子查询是指嵌入在其他  sql  语句中的  select  语句,也叫嵌套查询。
  • 目前学习到的子查询都在 where 子句中充当判断条件。
  • 任何时刻,查询出来的临时结构,本质在逻辑上也是表结构。

1、单行子查询

返回一行记录的子查询。
  • 显示 SMITH 同一部门的员工


2、多行子查询

返回多行记录的子查询。

(1)in 关键字

in 关键字用来判断一个对应的列值是否在某个集合当中,只要在集合当中,说明查找成功。

查询和  10  号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含  10  自己的。
扩展:除了上面的要求以外,还需要显示出对应员工所属岗位的名字。

(2)all 关键字

all 关键字表示与所有的值作比较。

显示工资比部门  30  的所有员工的工资高的员工的姓名、工资和部门号。
另一种写法:

(3)any 关键字

amy 关键字表示与任意的值作比较。

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


3、多列子查询

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

⚪练习
查询和 SMITH 的部门和岗位完全相同的所有雇员,不含 SMITH 本人


4、在 from 子句中使用子查询

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

⚪练习
(1)显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
  • 获取各个部门的平均工资,将其看作临时表
扩展:除了上面的要求以外,还需要显示出对应部门的办公地点。

(2)查找每个部门工资最高的人的姓名、工资、部门、最高工资


(3)显示每个部门的信息(部门名,编号,地址)和人员数量
a. 方法 1:使用多表

解决多表问题的本质:(多表的指导思想)

想办法将多表转化为单表,所以在 MySQL 中,所有 select 的问题全都可以转成单表问题。 


b. 方法 2:使用子查询(推荐)
  • 对 emp 表进行人员统计

  • 将上面的表看作临时表

5、合并查询

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

(1)union
该操作符用于取得两个结果集的并集。当使用该操作符时, 自动去掉结果集中的重复行
练习 —— 将工资大于 2500 或职位是 MANAGER 的人找出来


(2)union all

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

练习 —— 将工资大于 25000 或职位是 MANAGER 的人找出来

注意:select 如果要使用 union / union all 来拼接两个结果,前提是必须保证两个表的列数是相同的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于DisableIEToEdge插件闪退问题的解决方案

关于DisableIEToEdge插件闪退问题.今天终于测试找到最佳解决方案了! 1.管理员权限运行Windows powershell. 2.执行一下两条命令修复系统环境 DISM.exe /Online /Cleanup-image /Restorehealth sfc /scannow 3.关闭Windows安全中心的所有安全选项。 4.管理员权限运行…

Docker 常用操作命令备忘

Docker 一旦设置好了环境,日常就只要使用简单命令就可以运行和停止。 于是,我每次用的时候,都想不起来一些关键性的命令到底怎么用,特此记录。 一、镜像管理 从公有仓库拉取镜像 (对于使用苹果电脑 M1/M2/M3 芯片的 …

店匠科技颁布 Shoplazza Awards:品牌出海迎历史性机遇,赋能品牌腾飞

在全球化的今天,中国品牌在全球市场的地位日益显著,品牌意识的提升推动了企业出海战略的全新转型。以全球电商市场发展为例,根据 ecommerceBD 数据,2023 年全球零售电子商务销售额预计 6.3 万亿美元,到 2026 年&#x…

腾讯云优惠券领取的三个渠道,一个比一个优惠!

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

在VMware上创建kali并改成中文

一.下载VMware 打开官网,获取下载链接 Download VMware Workstation Pro 创建新的虚拟机 之所以选这个是因为kali就是基于debian深度开发 一般窝萌不放在c盘 接下来是三种网络连接类型,我之前做过他们的区别的博客 简单来说就是一般是桥接&#xff0…

【蓝桥杯省赛真题31】python连续正整数之和 中小学青少年组蓝桥杯比赛python编程省赛真题解析

目录 python连续正整数之和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python连续正整数之和 第十二届蓝桥杯青少年组python比赛省赛真题 …

【数据结构】线性表 顺序表(动态、静态分配,插入删除查找基本操作)解析+完整代码

1.线性表的基本概念 定义 线性表(Linear List)是具有相同数据类型的n个数据元素的有限序列。 n为表长,n0时线性表是个空表 前驱、后继 前驱:其中一个数据元素的前一个元素。第一个元素没有前驱。后继:其中一个数据元素…

chalk库的使用

这篇文章主要是对chalk库官方文档的中文翻译以及我自己的一些理解。chalk的官方文档可以看这里。 首先说下chalk库的作用:美化终端输出的文本,例如添加不同的字体颜色、不同颜色的背景、粗体以及添加下划线等等,看下图: 优点 富…

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台,满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕,降低用户开发和运维成本,让数据处理平民化,助力用户以更便捷、高效的方式去挖掘数…

Node.js+vue校内二手物品交易系统tdv06-vscode前后端分离

二手物品交易系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写,使用了vue框架。该系统从三个对象:由管理员和用户、店铺来对系统进行设计构建。主要功能包括:个人信息修改,对用户、店铺、二…

美剧推荐|2024值得期待的二十部美剧,你心里的TOP1是哪一部

关注公众号:萌番bilfun,发送影片名称,即可获取资源链接 2023必看十部美剧推荐: 面目全非,堡垒,暗夜情报员,猎魔人第三季,阿索卡,洲际酒店,怒呛人生&#xf…

Linux 学习笔记(8)

八、 启动引导 1 、 Linux 的启动流程 1) BIOS 自检 2) 启动 GRUB/LILO 3) 运行 Linux kernel 并检测硬件 4) 挂载根文件系统 5) 运行 Linux 系统的第一个进程 init( 其 PID 永远为 1 ,是所有其它进程的父进程 ) 6) init 读取系统引导配置文件…

2D割草/吸血鬼游戏 性能优化——GPU Spine动画

视频中万人同屏方案(gpu动画、渲染、索敌、避障等功能),可某宝搜店铺:【游戏开发资源商店】获取整套方案源码。 在过去的几年里,割草、类吸血鬼玩法的游戏频出爆款,其丰富的技能、满屏特效、刷怪清屏的解压畅快是此类游戏的核心&…

uni-app部署H5到相对路径,支持file协议打开

uni-app支持部署H5到相对路径,部署到服务端或在本地使用file协议打开均可 配置 在manifest.json文件中配置,Web配置->运行的基础路径配置为./即可 例:/5/,代表在域名的/5目录下部署运行。如设为./,则代表相对路径&#xff0c…

TCP为什么要三次握手?

TCP三次握手协议是为了在不可靠的互联网环境中可靠地建立起一个连接,三次握手可以确保两端的发送和接收能力都是正常的。 那么,为什么是三次而不是二次或四次握手呢? 为什么不是二次握手? 如果是二次握手,即客户端发…

QT TCP传输文件+ui

TCPFile tcp协议传输文件 TCPFile.pro QT core gui networkclientwidget.h #include <QWidget> #include <QTcpSocket> // 通信套接字 #include <QFile>private slots:void on_pushButton_clicked();private:QTcpSocket *tcpSocket;QFile file; /…

openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划

文章目录 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 完成资源负载管理功能配置前&#xff0c;需要先根据业务模型完成租户资源的规划。业…

2024年10个超炫酷的前端 3D 开源项目,那几个你用?

本文将分享 10 个超炫酷的前端 3D 开源项目。从令人惊叹的视觉效果到富有创新概念的交互体验&#xff0c;这些项目展示了前端技术的无限可能。无论你是新手还是经验丰富的开发者&#xff0c;都值得一探究竟&#xff01; 蛋仔派对&#xff08;three.js版&#xff09; 利用 Rea…

安卓使用ExoPlayer出现膨胀类异常

1.导包 implementation com.google.android.exoplayer:exoplayer-core:2.15.1implementation com.google.android.exoplayer:exoplayer-ui:2.15.1 2.在Androidifest.xml加入权限&#xff0c;我这里加了忘了与读写权限 <uses-permission android:name"android.permissio…

Crime Scene Report 犯罪现场报告 Python字符串处理

Crime Scene Report 犯罪现场报告 Victim and Suspect were hiking along a remote trail in the Mojave Desert. By the time Victim and Suspect were able to hike back to the trailhead and receive medical attention, Victim was in critical condition. Suspect repor…