[ MySQL ] — 复合查询和内外连接的使用

目录

复合查询

多表查询

自连接

子查询

 单行子查询

多行子查询

多列子查询

在from子句中使用子查询 

合并查询

 union

 union all

表的内连接和外连接

 内连接

 外连接 

  左外连接

  右外连接 


 

复合查询

多表查询

实际开发中往往数据来自不同的表,所以需要多表查询。

这里还是用之前的公司管理系统做演示,这里有三张表EMP、DEPT、SALGRADE。

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

把两张表直接联合查询,就像下图一样,一个员工会匹配多条部门信息,但是我们实际并不想要这种。

 我们只要员工表中deptno和部门表中的deptno匹配即可

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

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

自连接

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

如下图:

使用:

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

子查询的方式

多表查询的方式 (自查询)

子查询

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

 单行子查询

        返回一行记录的子查询。

使用:

显示SMITH同一部门的员工

多行子查询

        返回多行记录的子查询

  • in关键字;判断列信息 是否包含在in()之内的

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

  •  all关键字;列信息与 all() 里的所有内容进行比较

显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号。

  •  any关键字;列信息 与any() 中的任意一个比较,如:大于其中任意一个就返回真 

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

多列子查询

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

使用:

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

在from子句中使用子查询 

        子查询语句出现在from子句中,相当于是把一个子查询的结果当做一个临时表使用。

使用:

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

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

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

解决多表问题的本质:想办法将多表转换为单表,所以MySQL中所有的select问题都可以转换成单表问题。

合并查询

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

 union

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

使用:

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

 union all

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

使用:

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

两条语句要查询的列不对等会报错。

表的内连接和外连接

        表的连接分为内连接和外连接。

 内连接

        内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面的查询都是内连接,也是在开发过程中使用的最多的连接查询。

语法:

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

使用:

显示SMITH的名字和部门名称

 外连接 

        外连接分为左外连接和右外连接。

  左外连接

        联合查询中让 左侧的表 完全显示 就说是左外连接。

使用:

现有两张表

查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来。

 

  右外连接 

        联合查询中让 右侧的表 完全显示 就说是右外连接。

语法:

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

使用:

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

列出部门名称和这些部门的员工信息,同时列出没有员工的部门

 

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

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

相关文章

解决运行在微信小程序中报[ app.json 文件内容错误] app.json: app.json 未找到(env: Windows,mp,1.05.2204

找到project.config.json文件夹 添加 "miniprogramRoot": "unpackage/dist/dev/mp-weixin/", 即可

Docker之Compose

目录 前言 一、Docker-compose概述 1.1Docker Swarm与Docker Compose 1.1.1Docker Swarm 1.1.2Docker Compose 1.1.2.1 三层容器 ​编辑 二、YAML 2.1YAML概述 2.2注意事项 2.3Docker Compose 环境安装 2.3.1下载 三、Docker-Compose配置常用字段 四、Docker-com…

Python学习笔记_实战篇(二)_django多条件筛选搜索

多条件搜索在很多网站上都有用到,比如京东,淘宝,51cto,等等好多购物教育网站上都有,当然网上也有很多开源的比楼主写的好的多了去了,仅供参考,哈哈 先来一张效果图吧,不然幻想不出来…

06 mysql all查询 和 主键查询 和 非索引列查询

前言 本文主要调试一下 mysql 的如下两种查询语句 我们也来深入的看一下, 究竟如下两个普通的查询, mysql 做了什么事情 1. select * from user where id 991; 2. select * from user; 3. select * from user where name jerry991; 环境介绍 测试表 user schema 如下…

机器学习之数据清洗

一、介绍 数据清洗是机器学习中的一个重要步骤,它涉及对原始数据进行预处理和修复,以使数据适用于机器学习算法的训练和分析。数据清洗的目标是处理数据中的噪声、缺失值、异常值和不一致性等问题,以提高数据的质量和准确性。 二、方法 处理…

【3D激光SLAM】LOAM源代码解析--scanRegistration.cpp

系列文章目录 【3D激光SLAM】LOAM源代码解析–scanRegistration.cpp 【3D激光SLAM】LOAM源代码解析–laserOdometry.cpp 【3D激光SLAM】LOAM源代码解析–laserMapping.cpp 【3D激光SLAM】LOAM源代码解析–transformMaintenance.cpp 写在前面 本系列文章将对LOAM源代码进行讲解…

2023-08-21 Unity Shader 开发入门1 —— 渲染管线

文章目录 一、概述二、应用阶段三、几何阶段四、光栅化阶段 一、概述 ​ Unity 中的渲染管线和图形学中的渲染管线基本上指的是相同的概念,但是具体实现和细节方面可能存在一些差异。 ​ Unity 的渲染管线建立在图形学的基础上,但具有自己的实现和拓展。…

ClickHouse安装及部署

文章目录 Docker快速安装Ubuntu预编译安装包安装检查是否支持SSE4.2使用预编译安装包 Tgz安装包配置文件修改修改密码配置远程访问 其他主机访问文章参考 Docker快速安装 本地pull镜像 docker run -d --name ch-server --ulimit nofile262144:262144 -p 9000:9000 -p 8123:81…

stm32的命令规则

stm32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:

Python网络爬虫入门到实战

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 网络爬虫(We…

记录一个用C#实现的windows计时执行任务的服务

记录一个用C#实现的windows计时执行任务的服务 这个服务实现的功能是每天下午六点统计一次指定路径的文件夹大小 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using Syst…

基于互斥锁的生产者消费者模型

文章目录 生产者消费者 定义代码实现 / 思路完整代码执行逻辑 / 思路 局部具体分析model.ccfunc(消费者线程) 执行结果 生产者消费者 定义 生产者消费者模型 是一种常用的 并发编程模型 ,用于解决多线程或多进程环境下的协作问题。该模型包含…

Go语言基础之切片

切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合 切片的定义…

Redis 整合中 Redisson 的使用

大家好 , 我是苏麟 , 今天带来 Redisson 使用 . 官方文档 : GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, Sorte…

Alibaba-Easyexcel 使用总结

简介 简介 EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 的开源项目,在尽可能节约内存的情况下支持读写百 M 的 Excel。 但注意,其不支持: 单个文件的并发写入、读取读取图片宏 常见问题 Excel 术语 Sheet,工作薄…

RNN+LSTM正弦sin信号预测 完整代码数据视频教程

视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…

Nginx代理功能与负载均衡详解

序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。 Nginx代理服务的配置说明 1、上一篇中我们在http…

python的安装

1.进入python官网下载安装包:https://www.python.org/ 2.安装 注意:勾选Add Python 3.8 to PATH选项,并且建议选择Install Now选项,东西多。 解释:这里的path是指系统路径,即将python.exe文件添加到系 统…

常见的网络设备有哪些?分别有什么作用?

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…