【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 来拼接两个结果,前提是必须保证两个表的列数是相同的。

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

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

相关文章

韦东山嵌入式Liunx入门驱动开发四

文章目录 一、异常与中断的概念及处理流程1-1 中断的引入1-2 栈(1) CPU实现a ab的过程(2) 进程与线程 1-3 Linux系统对中断处理的演进1-4 Linux 中断系统中的重要数据结构(1) irq_desc 结构体(2) irqaction 结构体(3) irq_data 结构体(4) irq_domain 结构体(5) irq_domain 结构…

Redis入门与应用

Redis入门与应用 Redis的技术全景 Redis一个开源的基于键值对(Key-Value)NoSQL数据库。使用ANSI C语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的API。 两大维度 两大维度:应用维度、底层原理维度 我们…

记一次dockerfile无法构建问题追溯

我有一个dockerfile如下: ENTRYPOINT ["/sbin/tini","-g", "--"] CMD /home/scrapy/start.sh 我原本的用意是先启动tini,再执行下面的cmd命令启动start.sh。 为啥要用tini? 因为我的这个docker…

git介绍4.2

git(版本控制工具) 一、git 介绍 1、git是目前世界上最先进的分布式版本控制系统,可以有效,高速的处理从小到大的项目版本管理。 2、git是linux torvalds 为了帮助管理linux内核开发二开发的一个开放源码的版本控制软件。 3、git作用:更好…

PageHelper开源框架解读

在使用springboot开发系统时&#xff0c;列表查询经常会用PageHelper来进行分页。使用起来很方便&#xff0c;但从未想过它的实现原理&#xff0c;所以对其进行解读。 Service public class ScUserServiceImpl extends ServiceImpl<ScUserMapper, ScUser> implements IS…

WIN10 无密码自动登录

1、家里重装了一下WIN10系统&#xff0c;第一次登陆居然用了微软网站账号&#xff0c;结果密码忘记了&#xff0c;后面只能用PIN码登陆系统。 2、需要登录微软的网站修改密码&#xff1a; Microsoft account | Sign In or Create Your Account Today – Microsoft 3、在运行…

APP自动化测试-入门示例

入门示例 通过上一篇博客APP自动化测试介绍-CSDN博客的学习&#xff0c;相信大家对APP自动化测试已经有了一定的了解&#xff0c;下面演示一下入门示例 1. 配置Appium 1.1. 点击Appium图标&#xff0c;打开服务器&#xff1a; 1.2. 点击Edit Configurations,进入配置页面&am…

【LeetCode】【滑动窗口长度不固定】978 最长湍流子数组

1794.【软件认证】最长的指定瑕疵度的元音子串 这个例题&#xff0c;是滑动窗口中长度不定求最大的题目&#xff0c;在看题之前可以先看一下【leetcode每日一题】【滑动窗口长度不固定】案例。 题目描述 定义&#xff1a;开头和结尾都是元音字母&#xff08;aeiouAEIOU&…

GIT基本的命令

文章目录 04.GIT本地操作-初始化工作区内容小结 05.GIT本地操作-add与commit目标内容小结 06.GIT本地操作-差异比较目标内容小结 07.GIT本地操作-版本回退目标内容小结 08.GIT本地操作-修改撤消目标内容小结 09.GIT本地操作-总结 04.GIT本地操作-初始化工作区 内容 初始化工作…

Java对象大小计算

概述 在实际应用中&#xff0c;尤其是在进行JVM调优时&#xff0c;理解并正确估计对象大小是非常重要的&#xff0c;因为这直接影响到内存分配、垃圾回收效率以及应用程序的整体性能。 对象的组成 在Java中&#xff0c;计算一个对象的大小是为了了解它在内存中占用的确切空间…

第十五天-爬虫项目实战

目录 1.介绍 2.代码 1.main.py 2.PageSider.py 3.DetailSpider.py 4.DataParse.py 5.Constant.py 6.HanderRequest.py 1.介绍 1. 使用多线程爬取网站 2.爬取数据后保存至excel 3.爬取网站(仅做测试)网创类项目爬取&#xff1a;https://www.maomp.com/ 4..实现效果 …

元数据优化:提升您的网站在搜索引擎中的表现

前言 在之前的文章中&#xff0c;我们探讨了如何通过超链接来提高用户在网站的使用体验。本篇将聚焦于元数据的优化&#xff0c;揭示它如何成为提升网站曝光率和点击率的秘密武器。 一、介绍 元数据&#xff0c;或称之为数据的数据&#xff0c;在网页开发中占据着不可忽视的角…

IPD MM流程之业务策略工具:安索夫矩阵

IPD市场管理流程&#xff0c;华为内部称为“MM流程”&#xff08;Market Management&#xff0c;MM&#xff09;。华为市场管理是通过对市场和细分市场的分析&#xff0c;制定细分市场的策略&#xff0c;形成商业计划&#xff0c;把商业计划落实在日常工作当中。MM流程其中一个…

git根据文件改动将文件自动添加到缓冲区

你需要修改以下脚本中的 use_cca: false 部分 #!/bin/bash# 获取所有已修改但未暂存的文件 files$(git diff --name-only)for file in $files; do# 检查文件中是否存在"use_cca: false"if grep -q "use_cca: false" "$file"; thenecho "Ad…

qt5-入门-使用拖动方式创建Dialog

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 目录 实现效果基本流程逐步实操1&#xff09;创建和初始化子部件2&#xff09;把子部件放进布局中3&#xff09;设置tab顺序4&#xff09…

jstat命令查看jvm的GC信息

文章目录 前言jstat命令查看jvm的GC信息1. 概述2. 应用堆内存水位阀值大小怎么确定3. 使用 jps 命令查看 Java 进程的进程号&#xff08;PID&#xff09;![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5097401443314e9d808a83b694dbc6e5.png)4. jstat用法5. 类加载…

UE4 Niagara 关卡3.1官方案例解析二

自己尝试做做&#xff0c;打乱顺序 1、新建空的niagara system&#xff0c;添加空的发射器。更换渲染器为网格体渲染器并添加网格体。 2、发射器更新里面添加Spawn Rate&#xff0c;发射个粒子看看 效果图&#xff1a; 3、采样静态网格体&#xff0c;网格体粒子出生于静态网格…

【排序算法】基数排序

一&#xff1a;基本概念 1.1 基数排序(桶排序)介绍 基数排序&#xff08;radix sort&#xff09;属于“分配式排序”&#xff08;distribution sort&#xff09;&#xff0c;又称“桶子法”&#xff08;bucket sort&#xff09;或bin sort&#xff0c;顾名思义&#xff0c;它是…

【图说】电脑发展史

免责声明:文中有一些图片来源自网络,如有版权请通知我删除,谢谢! “结绳记事”是计算的开端 如果说“结绳记事”仅是计数,那么“算筹”就是真正的计算工具 算盘也是我们老祖宗的杰出发明,最擅长“加减乘除”,包括但不限于乘方、开方、对数等。还能进行开发智力的“珠心算…

鼠标失灵怎么办?电脑出现鼠标失灵的详细处理方法介绍

无论是笔记本电脑还是台式机电脑&#xff0c;鼠标是必不可少的外设之一&#xff0c;而我们在使用电脑的过程中&#xff0c;经常回遇到鼠标突然失灵了&#xff0c;不听使唤&#xff0c;控制不了&#xff0c;接下小编来与大家一起分享&#xff0c;遇到这种情况我们该怎么办 有时…