【MySQL专栏】MySQL数据库的复合查询语句

在这里插入图片描述

文章目录

  • 1、首先练习MySQL基本语句的练习
      • ①查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J
      • ②按照部门号升序而雇员的工资降序排序
      • ③使用年薪进行降序排序
      • ④显示工资最高的员工的名字和工作岗位
      • ⑤显示工资高于平均工资的员工信息
      • ⑥显示每个部门的平均工资和最高工资
      • ⑦显示平均工资低于2000的部门号和它的平均工资
      • ⑧显示每种岗位的雇员总数,平均工资
  • 2、多表查询
      • ①显示部门号为10的部门名,员工名和工资
      • ②显示各个员工的姓名,工资,及工资级别
  • 3、自连接
      • ①显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号--empno)
  • 4、子查询
    • (1)where子语句的单行子查询
      • ①显示SMITH同一部门的员工——之和SMITH这一行数据作比较
    • (2)where子语句的多行子查询
      • ①in关键字:查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的
      • ②all关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
      • ③any关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)
    • (3)where子语句的多列子查询
      • ①案例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人
    • (4)from子句中的子查询
      • ①显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
      • ②查找每个部门工资最高的人的姓名、工资、部门、最高工资
      • ③显示每个部门的信息(部门名,编号,地址)和人员数量
  • 5、合并查询
    • (1)union关键字:进行取两个结果集的并集,会自动去重。
      • 案例:将工资大于2500或职位是MANAGER的人找出来
    • (2)union all:取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
      • 案例:将工资大于25000或职位是MANAGER的人找出来

1、首先练习MySQL基本语句的练习

语句练习的基础数据:
①一个关于公司员工部门工资的数据库:
创建数据库:scott。

create database scott;

②三张表:dept:部门表、emp:员工表、salarge:薪资表。
创建三张表,结构数据如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

考察where条件筛选。
在这里插入图片描述

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

考察MySQL排序查询,下面是先满足部门号升序,存在相同部门号的,再按照工资降序排序。
在这里插入图片描述

③使用年薪进行降序排序

此处需要注意的是在comm列属性中的NULL不参与运算,任何数据和NULL运算都是NULL,因此用ifnull判断。
在这里插入图片描述
不作判断就是为NULL:不符合。
在这里插入图片描述

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

考察数学函数的使用:max()。
在这里插入图片描述

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

先查询平均工资,然后再查询工资高于平均工资的员工信息。
在这里插入图片描述

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

先分组然后统计分组后的平均工资和在该部门中的最高工资
在这里插入图片描述

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

即每个部门的平均工资,查询在对应部门低于平均工资的部门号和该部门的平均工资
在这里插入图片描述

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

看到每个岗位,就想到按岗位分组,然后统计,相同岗位的平均工资
在这里插入图片描述

上面是一些基本的查询语句,接下来主要看一下:多表查询、自连接、子查询、合并查询等相关知识。

2、多表查询

首先,什么是多表查询,即在多张表中查看想要的结果。上面来练习的语句中都是单表查询,而此处的多表查询实际上也可以看作是单表查询,只不过是经过组合的一张表,通过笛卡尔积组合后就是一张表了,然后从整个大表中进行筛选即可。

什么是笛卡尔积?有图简易说明:
在这里插入图片描述
先通过下面语句看到笛卡尔积的现象:可以看到员工表和部门表进行笛卡尔积后得到很多数据,其中有些数据是不符合的,因此需要进行筛选,即我们只要emp表中的deptno = dept表中的deptno字段的记录。
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

即姓名和工资属于一张表,工资级别一张表,笛卡尔积后需要查询工资在对应范围的才是正确的:
在这里插入图片描述

总结:在进行多表查询的时候,先进行无脑笛卡尔积,然后通过唯一值条件筛选即可,唯一值条件即是能说明多张表组合后,只能有一条数据在符号要求的。

3、自连接

什么是自连接?即在同一张表中作连接查询,有人会觉得这有真没意义,通过下面例子说明:

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

在这里插入图片描述
在这里插入图片描述

也可以通过给自己表取别名,得到新的表,作笛卡尔积,再进行判断员工对应的mgr编号和领导表中的empno是否相同:
在这里插入图片描述

4、子查询

子查询:即嵌入在其他SQL语句中的select语句,也叫嵌套查询。

(1)where子语句的单行子查询

即在查询过程中之和一行数据进行比较查询,只返回一行数据的子查询语句,这里的返回一行是字子查询里面返回的数据是一行。

①显示SMITH同一部门的员工——之和SMITH这一行数据作比较

即先查询SMITH所在的部门,再通过部门信息查找和该部门相同的员工信息即可。
在这里插入图片描述

(2)where子语句的多行子查询

即查询的时候比较数据不止一行数据,子查询返回的数据是多行的,也就再次查询的时候比较就有多行数据
主要用到:in、all、any 查询关键字。

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

即先查10部门的工作岗位有哪些?
然后根据更为查询对应的员工。看查找的员工的岗位是否在上面查询的岗位范围内。
在这里插入图片描述
不等于的两种写法:!= 或者 <>
在这里插入图片描述

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

可以先查找部门30号的员工中最高的工资,然后在其他部门查找比该工资还高的信息。
在这里插入图片描述

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

即这里的比部门30的任意员工工资高,是说只要查找到的员工工资高于部门30里面员工工资其中一个都满足。
因此先统计部门30的所有员工工资,然后通过any进行查询。
在这里插入图片描述

(3)where子语句的多列子查询

多列子查询则是指查询返回多个列数据的子查询语句。

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

这里的多列子查询就体现在刚开始查询的结果就存在多列,即部门和岗位,因此叫多列子查询。
即先查询到SMITH的部门和岗位。

包含SMITH的时候:
在这里插入图片描述
不包含本人的时候:
在这里插入图片描述

(4)from子句中的子查询

从上买此查询的语句中可以看到都是跟到where子语句中的,作为条件子查询。而在from子语句后面的,则是通过select查询出来的作为一张临时表进行与其他表进行筛选的。下面 通过例子来看:

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

即先按部门分组,分别计算出每个部门的平均工资,然后通过查询表中高于平均工资的员工相关信息。但是真正编写SQL语句返现执行报错,因为需要显示员工姓名,而多个员工会存在在同一个部门,但是又以部门分组,显然不符合分组的条件,无法分组,因此需要通过from子句的子查询来完成。
先通过分组得到对应部门的平均工资,然后把该结果作为临时表,然后和emp表进行一起查询。
临时表
在这里插入图片描述
在这里插入图片描述

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

即和上面一样需要from子句的查询,先根据分组得到每个部门的最高工资:
在这里插入图片描述
然后和emp表进行结合查询:
在这里插入图片描述

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

使用多表查询的,即员工表和部门表,以部门表进行分组查询:
在这里插入图片描述
使用子查询:即先对员工表以部门分组进行人员统计
在这里插入图片描述

5、合并查询

即合并多个selecct查询出来的结果,使用集合操作符号:union,union all关键字。

(1)union关键字:进行取两个结果集的并集,会自动去重。

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

使用子查询:
在这里插入图片描述
使用union取并集:必须保证两张表的属性列一样,数量一样才可以合并。
在这里插入图片描述

(2)union all:取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

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

即没有去重的数据:union
在这里插入图片描述

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

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

相关文章

Python爬虫(5)静态页面抓取实战:requests库请求头配置与反反爬策略详解

目录 一、背景与需求‌二、静态页面抓取的核心流程‌三、requests库基础与请求头配置‌3.1 安装与基本请求3.2 请求头核心参数解析‌3.3 自定义请求头实战 四、实战案例&#xff1a;抓取豆瓣读书Top250‌1. 目标‌2. 代码实现3. 技术要点‌ 五、高阶技巧与反反爬策略‌5.1 动态…

HTML给图片居中

在不同的布局场景下&#xff0c;让 <img> 元素居中的方法有所不同。下面为你介绍几种常见的居中方式 1. 块级元素下的水平居中 如果 <img> 元素是块级元素&#xff08;可以通过 display: block 设置&#xff09;&#xff0c;可以使用 margin: 0 auto 来实现水平居…

【高频考点精讲】前端构建工具对比:Webpack、Vite、Rollup和Parcel

前端构建工具大乱斗:Webpack、Vite、Rollup和Parcel谁是你的菜? 【初级】前端开发工程师面试100题(一) 【初级】前端开发工程师面试100题(二) 【初级】前端开发工程师的面试100题(速记版) 最近在后台收到不少同学提问:“老李啊,现在前端构建工具这么多,我该选哪个?…

赶紧收藏!教您如何用 GitHub 账号,获取永久免费的 Docker 容器!!快速搭建我们的网站/应用!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 永久免费的 Docker 容器 📒🚀 注册与登录➕ 创建 Docker 容器💻 部署你的网站🔑 注意事项💡 使用场景⚓️ 相关链接 ⚓️📖 介绍 📖 还在为搭建个人网站寻找免费方案而烦恼? 今天发现一个宝藏平台!只需一个 Git…

Java大师成长计划之第3天:Java中的异常处理机制

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在 Java 编程中&#xff0c;异常处理…

大数据去重

实验4 大数据去重 1.实验目的 通过Hadoop数据去重实验&#xff0c;学生可以掌握准备数据、伪分布式文件系统配置方法&#xff0c;以及在集成开发环境Eclipse中实现Hadoop数据去重方法。 2.实验要求 了解基于Hadoop处理平台的大数据去重过程&#xff0c;理解其主要功能&…

http协议、全站https

一、http协议 1、为何要学http协议? 用户用浏览器访问网页,默认走的都是http协议,所以要深入研究web层,必须掌握http协议 2、什么是http协议 1、全称Hyper Text Transfer Protocol(超文本传输协议) ### 一个请求得到一个响应包 普通…

使用 Logstash 迁移 MongoDB 数据到 Easysearch

大家好&#xff01;在前面的文章中&#xff0c;我们已经详细介绍了如何通过 Logstash 和 Canal 工具实现 MySQL 数据向 Easysearch 的迁移。如果您正在使用 MongoDB 作为数据存储&#xff0c;并希望将其数据迁移到 Easysearch 中&#xff0c;这篇指南或许能为您提供一些帮助。 …

亚马逊英国站FBA费用重构:轻小商品迎红利期,跨境卖家如何抢占先机?

一、政策背景&#xff1a;成本优化成平台与卖家共同诉求 2024年4月&#xff0c;亚马逊英国站&#xff08;Amazon.co.uk&#xff09;发布近三年来力度最大的FBA费用调整方案&#xff0c;标志着英国电商市场正式进入精细化成本管理时代。这一决策背后&#xff0c;是多重因素的叠…

使用Qt Quick Controls创建自定义日历组件

目录 引言相关阅读1. DayOfWeekRow2. MonthGrid3. WeekNumberColumn 项目结构及实现工程结构图代码实现及解析1. 组件封装2. 主界面实现 运行效果 总结下载链接 引言 Qt6 Quick框架提供了一套丰富的日历相关组件&#xff0c;包括 MonthGrid、DayOfWeekRow 和 WeekNumberColumn…

【AI微信小程序开发】大转盘小程序项目代码:自设转盘选项和概率(含完整前端+后端代码)

系列文章目录 【AI微信小程序开发】AI减脂菜谱小程序项目代码:根据用户身高/体重等信息定制菜谱(含完整前端+后端代码)【AI微信小程序开发】AI菜谱推荐小程序项目代码:根据剩余食材智能生成菜谱(含完整前端+后端代码)【AI微信小程序开发】图片工具小程序项目代码:图片压…

redis相关问题整理

Redis 支持多种数据类型&#xff1a; 字符串 示例&#xff1a;存储用户信息 // 假设我们使用 redis-plus-plus 客户端库 auto redis Redis("tcp://127.0.0.1:6379"); redis.set("user:1000", "{name: John Doe, email: john.doeexample.com}"…

Vue-组件的懒加载,按需加载

在Vue项目中实现组件的懒加载&#xff08;也称为按需加载或代码分割&#xff09;&#xff0c;可以大大提升应用的加载速度和性能。懒加载主要通过Webpack的代码分割功能实现&#xff0c;特别是使用动态导入&#xff08;import()语法&#xff09;。 为什么要使用懒加载&#xf…

C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)报错:参数无效,如何将图像分块化处理?

C#处理非常大的图像&#xff08;如 32043x32043 像素&#xff09;时&#xff0c;确实需要采取分块化处理的方法来避免内存不足的问题。分块化处理可以将大图像分割成多个较小的块&#xff0c;分别进行处理和保存&#xff0c;最后再合并这些块以形成完整的图像。以下是一个详细的…

如何使用极狐GitLab 的外部状态检查功能?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部状态检查 (ULTIMATE ALL) pending 状态引入于极狐GitLab 16.5 pending 状态检查的超时时间为两分钟引入于极狐GitLab 16…

深入探索Spark-Streaming:从Kafka数据源创建DStream

在大数据处理领域&#xff0c;Spark-Streaming是一个强大的实时流处理框架&#xff0c;而Kafka作为高性能的分布式消息队列&#xff0c;二者结合能实现高效的数据处理。今天就来聊聊Spark-Streaming中从Kafka数据源创建DStream的相关知识。 早期&#xff0c;Spark-Streaming通过…

Kafka 详解

1.基本概念&#xff1a;Kafka 是分布式发布 - 订阅消息系统&#xff0c;具有高吞吐量、可扩展性等优势&#xff0c;支持点对点和发布订阅两种消息模式&#xff0c;涉及 Broker、Topic、Partition 等多种角色。 2.安装步骤&#xff1a;需先安装 JDK 和 Zookeeper&#xff0c;下…

uniapp-商城-34-shop 购物车 选好了 进行订单确认整体

在shop页面选中商品添加到购物车&#xff0c;可选好后&#xff0c;进行确认和支付。具体呈现在shop页面。 1 购物车栏 shop页面代码&#xff1a; 购物车代码&#xff1a; 代码&#xff1a; <template><view><view class"carlayout"><!-- 车里…

数据仓库是什么?数据仓库架构有哪些?

目录 数据仓库是什么&#xff1f;数据仓库架构有哪些&#xff1f; 一、数据仓库是什么&#xff1f; 二、数据仓库的架构分层 1. 获取层 2. 数据层 3. 应用层 4. 访问层 三、数据仓库的价值体现 1.决策支持 2.业务优化 3.提升竞争力 四、数据仓库的未来发展趋势 总…

单片机——使用printf调试

配置printf()输出函数 1、来自于<stdio.h> 2、运行C语言时&#xff0c;输出到终端 3、单片机没有终端&#xff0c;需要使用串口&#xff0c;将要输出的内容传到电脑&#xff08;串口调试助手&#xff09;上 例子如下 #include <stdio.h> #include &qu…