8.MySQL复合查询

目录

  • 复合查询
    • 基本查询回顾
    • 多表查询 - 笛卡尔积
    • 自连接
    • 子查询
      • 单行子查询
      • 多行子查询
      • 多列子查询
      • 在from中使用子查询
    • 合并查询
      • union
      • union all
  • 表的内连和外连
    • 内连接
    • 外连接
      • 左外连接
      • 右外连接

复合查询

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

基本查询回顾

我们操作的表还是基于orcale 9i的经典测试表
在这里插入图片描述

1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J
在这里插入图片描述

2.按照部门号升序而雇员的工资降序排序
在这里插入图片描述

3.使用年薪进行降序排序
在这里插入图片描述

4.显示工资最高的员工的名字和工作岗位
最高工资可以聚合函数得出,得到最高工资,再去找这些员工是谁
在这里插入图片描述
这样写太粗糙了,不简洁,所以还有一种写法:
sql语法允许在sql语句的where子句的表达式中,再执行一条select查询,这叫做子查询。先执行内部的(),再执行外部的语句
在这里插入图片描述

5.显示工资高于平均工资的员工信息
在这里插入图片描述

6.显示每个部门的平均工资和最高工资
在这里插入图片描述

7.显示平均工资低于2000的部门号和它的平均工资
在这里插入图片描述

8.显示每种岗位的雇员总数,平均工资
在这里插入图片描述

多表查询 - 笛卡尔积

实际开发中往往数据来自不同的表,所以需要多表查询,以前我们from是跟一张表,实际上可以跟多张表。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询
在这里插入图片描述

示例:

1.显示雇员名、雇员工资以及所在部门的名字
因为上面的数据来自EMP和DEPT表,因此要联合查询(笛卡尔积),什么是笛卡尔积?
a.从第一张表中选出第一条记录,和第二个表的所有记录进行组合
b.然后从第一张表中取第二条记录,和第二张表中的所有记录组合
c.不加过滤条件,得到的结果称为笛卡尔积
在这里插入图片描述
如何做笛卡尔积?
在这里插入图片描述
笛卡尔积本质就是将两张表变为了一张表,未来做数据查询的时候,还是可以和单表查询的方式进行查询。

我们发现,SMITH是20号部门的,但出现了10号部门的信息,这些的信息对于SMITH是没有用的,所以就可以将我们认为有意义的数据筛选出来

在这里插入图片描述

2.显示部门号为10的部门名,员工名和工资
在这里插入图片描述

3.显示各个员工的姓名,工资,及工资级别
在这里插入图片描述

自连接

上面讲的是将两个不同的表做笛卡尔积,那能不能将两个相同的表做笛卡尔积呢?
在这里插入图片描述
这里报错的原因是两个名字是相同的,后续操作这个表时,无法区别一个数据到底是哪个表里的数据,所以需要对表进行重命名。
在这里插入图片描述
对同一张表做笛卡尔积的行为叫做自连接。

示例:

显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号 – empno)
解决方案一:使用where子查询
在这里插入图片描述
解决方案二:自连接
在这里插入图片描述

子查询

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

单行子查询

单行子查询是指子查询只返回单列,单行数据。

示例:

显示SMITH同一个部门的员工
在这里插入图片描述

多行子查询

多行子查询是指返回单列多行数据。

示例:

1.查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的
in关键字:某一列是否在某一个集合中
在这里插入图片描述

2.显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
all关键字:某一列与集合中的所有元素进行比较
在这里插入图片描述

显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)
any关键字:某一列与集合中的任意元素进行比较
在这里插入图片描述

多列子查询

多列子查询是指查询返回多个列数据的子查询语句
在这里插入图片描述

在from中使用子查询

截止目前为止,全部的子查询都是在where子句中充当判断条件,接下来子查询语句会出现在from子句中。

示例:

显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
在这里插入图片描述

查找每个部门最高的人的姓名、工资、部门、最高工资
在这里插入图片描述

显示每个部门的信息(部门号,编号,地址)和人员数量
在这里插入图片描述

合并查询

在实际应用中,为了合并多个select的执行效果,可以使用集合操作符union,union all,这并不是笛卡尔积,这比笛卡尔积的效率要高,笛卡尔积是两个表的穷举,而这个就是单纯的属性相同的合并。

union

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

示例:

将工资大于2500或职位是MANAGER的人找出来
在这里插入图片描述

union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行
在这里插入图片描述

表的内连和外连

内连接

截止目前为止,我们前面学习的都是内连接。内连接实际上就是利用where子句对两种表形成的笛卡尔积进行筛选。

语法:

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

这语法和我们之前做笛卡尔积 + where筛选是一样的,笛卡尔积本质上就是内连接的一种

示例:

显示SMITH的名字和部门名称
在这里插入图片描述

外连接

左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接

语法:

select 字段名 from 表名1 left join 表名2 on 连接条件;

建两张表
在这里插入图片描述

查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
在这里插入图片描述

右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接

语法:

select 字段 from 表名1 right join 表名2 on 连接条件;

示例:

对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来
在这里插入图片描述

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

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

相关文章

HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程

在本文中,我们将深入探讨如何使用 JavaScript 实现经典的俄罗斯方块游戏。俄罗斯方块是一款广为人知的益智游戏,通过操纵各种形状的方块,使其在游戏区域内排列整齐,以消除完整的行来获得分数。 效果图如下: 一、游戏界面与布局 我们首先使用 HTML 和 CSS 来创建游戏的界面…

java智能物流管理系统源码(springboot)

项目简介 智能物流管理系统实现了以下功能: 智能物流管理系统的主要使用者分为管理员,顾客,员工,店主。功能有个人中心,顾客管理,员工管理,店主管理,门店信息管理,门店…

查看Chrome安装路

谷歌Google浏览器查看安装路径,浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源:笔记云

idea安装visualVm插件

idea 安装visualVM插件用于分析java程序, 1.在插件市场安装visualvm launcher 2.安装成功后,重启idea,此时启动按钮旁边有这两个按钮 3.需要在这里配置插件的visualvm位置 4.配置完后,点击启动

已解决 django.db.utils.OperationalError: (1051, “Unknown table

报错信息: django.db.utils.OperationalError: (1051, "Unknown table bjybolg.tool_submission")python manage.py migrate --fake 命令用于告诉 Django 假装已经应用某个迁移,而不实际执行该迁移的操作。这通常在以下情况下非常有用&#x…

Layout 布局组件快速搭建

文章目录 设置主题样式变量封装公共布局组件封装 Logo 组件封装 Menu 菜单组件封装 Breadcrumb 面包屑组件封装 TabBar 标签栏组件封装 Main 内容区组件封装 Footer 底部组件封装 Theme 主题组件 经典布局水平布局响应式布局搭建 Layout 布局组件添加 Layout 路由配置启动项目 …

Linux: Shell编程入门

Shell 编程入门 1 ) Shell 概念 shell 是 在英语中 壳, 外壳的意思可以把它想象成嵌入在linux这样的操作系统里面的一个微型的编程语言不像C语言, C 或 Java 等编程语言那么完整,它可以帮我们完成很多自动化任务例如保存数据监测系统的负载等等,我们同样…

【ArcGIS Pro实操第8期】绘制WRF三层嵌套区域

【ArcGIS Pro实操第8期】绘制WRF三层嵌套区域 数据准备ArcGIS Pro绘制WRF三层嵌套区域Map-绘制三层嵌套区域更改ArcMap地图的默认显示方向指定数据框范围 Map绘制研究区Layout-布局出图 参考 本博客基于ArcGIS Pro绘制WRF三层嵌套区域,具体实现图形参考下图&#xf…

从零开始学五笔(七):折区字根

讲解格式: 先介绍按键的区位号、口诀内容、口诀说明然后列每个字根能组成什么汉字,难拆字将用中括号标出 ‍ N 键 区位号:51 口诀:已半巳满不出己,左框折尸心和羽 说明: 已半巳满不出己:指…

CentOS 8修改Linux配置文件指定属性的值

1.前提: 存在test空文件(test位于/etc/sysconfig/network-scripts目录) 2.test文件插入内容: 1)添加内容:IPADDR192.168.132.129 echo IPADDR192.168.132.129 | sudo tee -a /etc/sysconfig/network-sc…

Linux中级(DNS域名解析服务器)

一。产生原因1.IP地址:是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别,但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机…

大数据治理平台建设规划方案(71页WORD)

随着信息化时代的到来,大数据已成为企业管理和决策的重要基础。然而,大数据的快速增长和复杂性给数据的管理和治理带来了巨大挑战。为了有效应对这些挑战,构建一个高效、稳定的大数据治理平台显得尤为重要。 文档介绍: 该平台旨在…

Boost电路双闭环控制MATLAB仿真

一、Boost电路电流内环控制MATLAB仿真模型 1.MATLAB仿真模型 1.1.仿真模型图 因为要使用电流内环控制,相比较于开环控制中直接给定MOS开关的占空比,这里通过把电路的平均电流和一电流基准值相比较来控制MOS开关的占空比,因此称为闭环控制。…

MAC电脑的JDK、MAVEN配置及IDEA激活

1、JDK配置环境 vim ~/.bash_profile # 添加 Java 目录,类路径和指令路径的配置,若已存在则用目标值覆盖 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/…

React中的hook

React中的hook究竟是什么? 有哪些hook? hook的两大规则 为什么hook要在顶层调用? hook的调用需要在每一次render后都按照一样的顺序进行调用,否则会出现类似“野指针”的情况,但是要做到这一步,就需要hook在…

新手直播方案

简介 新手直播方案 ,低成本方案 手机/电脑 直接直播手机软件电脑直播手机采集卡麦电脑直播多摄像机 机位多路采集卡 多路麦加电脑(高成本方案) 直播推流方案 需要摄像头 方案一 :手机 电脑同步下载 网络摄像头 软件&#xff08…

spring整合使用xml方式整合Druid数据源连接池

1.普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求 一个,执行完成后再断…

【WIN】WIN10_WSL_Ubuntu18.04_ROS_rviz_docker

WIN10安装WSL Microsoft Store 安装编译套件 sudo apt-get install build-essential apt换源 Debian / Ubuntu 的官方源在国内访问很慢,咱们更换为清华大学 TUNA 的软件源镜像 执行下面命令,备份 apt 安装源: sudo cp /etc/apt/sources.l…

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 用到的技术: 1. python…