当前位置: 首页 > article >正文

oracl:多表查询>>表连接[内连接,外连接,交叉连接,自连接,自然连接,等值连接和不等值连接]

 SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。

sql分类: 

数据查询语言(DQL - Data Query Language)

查询的关键词 select

多表查询>>表连接

表连接: 把2个或多张表左右合并为一张表

表连接的方式: 内连接, 外连接, 自连接, 自然连接, 交叉连接

其中外连接分为: 左外连接, 右外连接, 全外连接

连接的关键词: join  on 

连接关键词书写位置: from 之后, where之前

内连接 join  on 

表中的数据,满足关联条件可以关联上的数据才能被保留下来,没有主表从表之分

格式:  表1 join 表2 on 关联条件

示例: 查询员工工资小于3000的部门信息

注意: 对于在2张表都出现的字段,使用前在字段前加上表名以指定字段, 比如e.deptno表示的emp表的deptno字段,d.deptno表示的是dept表中的deptno字段 

确定表

select 后面需要展现的查询结果是:  部门信息>>即dept表的所有字段的信息>>dept表

where 条件过滤中需要用到的字段sal >>  emp表

确定连接方式: 满足条件的数据才出现>>内连接

连接条件的确定

通过查看2张表可以知道列DEPTNO是表EMP的外键(FK_DEPTNO), 也是表DEPT的主键(PK_DEPT), 所以可以使用e.deptno=d.deptno作为2张表的连接条件

确定过滤条件where

 工资大于3000, 即where sal < 3000

表和表之间的关系

没有distinct的查询结果中同样的部门信息会出现多次

查询员工工资大于3000的部门信息, 可知最终查询结果只需要每个部门出现一次即可,所以select 后面加destinct

外连接 

外连接: 左外连接, 右外连接, 全外连接

除了全外连接,左/右外连接需要区分主表和从表, 主表的数据会全部保留, 从表的数据只有符合关联连接的数据才会出现在查询结果中, 主表中, 没有和从表关联上的数据也会出现,但在对应的从表中是空值

连接格式

左外连接: 表1  left   [outer]  join 表2 on 连接条件;      left  jion之前是主表

右外连接: 表1  right   [outer]  join 表2 on 连接条件;   right  join 后面的是主表

全外连接:  表1  full  [outer]  join 表2 on 连接条件    

示例: 查询没有员工的部门信息

分析:

确定表

需要查询的是部门信息>>dept表,

条件是部门里没有员工, 即where emp.empno is null >>emp表

关联条件: emp.deptno=dept.deptno

连接方式: emp表的主键是EMPNO员工编号,"没有员工">> >该部门信息不会在emp表中出现, 即emp表中没有相应的deptno数据 >> 不满足关联条件 emp.deptno=dept.deptno 的部门信息需要出现在结果集中, 使用外/左/右连接

确定主表: 不满足关联条件但是需要出现在结果集中的信息是部门信息>>>主表: dept

条件: where emp.empno is null

>>左连接

>>右连接

>>外连接

示例: 全表连接和左/右表连接的不同

>>全连接

>>左连接 (从表dept中未满足关联条件的数据没有出现)

注意: 表连接是左右拼接为一张表, 当关联条件的字段也在查询结果中出现时,该关联字段出现2次

自然连接

 格式: 表1  natrural   jion  表2

一种特殊的内连接(INNER JOIN),它不需要明确指定连接条件。自然连接会自动使用两个表中具有相同名称的列作为连接条件。这些列的值必须相等,才能将对应的行连接起来。

注意: 不能写on 关联条件, 但是表中必须有可以用于关联的条件列(字段名称和数据类型均相同)

示例

>>自然连接

Oracle不允许在NATURAL JOIN中直接使用带有表别名的列进行过滤,因为NATURAL JOIN隐式地使用两个表中具有相同名称的列作为连接条件,而这些列在连接后会被重复,导致歧义。

解决: 使用内连接或套一个子查询

交叉连接 cross join

将两个表中的每一行与另一个表中的每一行配对,生成笛卡尔积(Cartesian Product)。这意味着结果集中的行数将是两个表行数的乘积。

语法: 表1 cross join 表2 

示例

select * from emp, dept;

查询结果: 先是dept表的第一行数据和emp表的每一行数据都进行连接, 再到dept表的第二行数据和emp表的每一行数据进行连接, 以此类推.所以结果集行数= emp表的行数*dept表的行数

自连接

通过取别名的方式让表自己连接自己, 可以把同一列的数据经过自连接后转到同一行(列转行)

示例: 原表

示例: 自连接>>获取每个城市及其所属省份的关系,从而实现层级结构的数据展示。

通过取别名的方式把areas表变成p表和c表, 再用关联条件把这2张表进行连接

SQL92标准的连接方式

没有join on 关键词,

使用where写连接条件, 连接效果和内连接相同; 连接条件为恒等式(比如1=1)时,形成交叉连接

示例 : 内连接效果

示例: 交叉连接效果 

外连接和内连接

当2张表可以使用内连接时, 意味着使用全/左/右连接都可以,并且不需要关注主表从表, 因为最终满足关联条件的数据都会返回

示例 : 查询员工工资小于3000的部门信息

左连接如下

右连接如下 

全外连接如下

 

连接条件的确定

通常基于两个表中具有关联性的列来确定

注意: 关联条件的字段不一定相同, 但是含义必须相同

等值连接和不等值连接

等值连接: 基于两个表中具有相等值的列来连接表 =

不等值连接/范围连接

1.使用不等运算符(如 <, >, <=, >=, <>!=)来连接两个表的条件。

2. 使用between 值1 and 值 2  ; 值1<值2

3. 使用in / not in 

4.like

where和on的区别

示例

相关文章:

oracl:多表查询>>表连接[内连接,外连接,交叉连接,自连接,自然连接,等值连接和不等值连接]

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理和操作关系数据库的标准编程语言。 sql分类: 数据查询语言&#xff08;DQL - Data Query Language&#xff09; 查询的关键词 select 多表查询>>表连接 表连接: 把2个…...

Day31-【AI思考】-关键支点识别与战略聚焦框架

文章目录 关键支点识别与战略聚焦框架**第一步&#xff1a;支点目标四维定位法****第二步&#xff1a;支点验证里程碑设计****第三步&#xff1a;目标网络重构方案****第四步&#xff1a;动态监控仪表盘** 执行工具箱核心心法 关键支点识别与战略聚焦框架 让思想碎片重焕生机的…...

ARIMA详细介绍

ARIMA&#xff08;AutoRegressive Integrated Moving Average&#xff0c;自回归积分滑动平均模型&#xff09;是一种用于时间序列分析和预测的统计模型。它结合了自回归&#xff08;AR&#xff09;、差分&#xff08;I&#xff09;和移动平均&#xff08;MA&#xff09;三种方…...

如何解决Unit sshd.service could not be found

出现 Unit sshd.service could not be found 错误时&#xff0c;通常是因为系统中未安装 OpenSSH 服务、服务名称不匹配或系统未使用 systemd 管理服务。以下是详细的解决方案&#xff1a; 一、确认 SSH 服务是否安装 1. 检查是否已安装 OpenSSH 服务器 不同 Linux 发行版的包…...

飞致云开源社区月度动态报告(2025年1月)

自2023年6月起&#xff0c;中国领先的开源软件公司飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源运营数据概览&…...

【搜索回溯算法篇】:拓宽算法视野--BFS如何解决拓扑排序问题

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索&#xff08;BFS&#xff09;解决拓扑排…...

WPS怎么使用latex公式?

1、下载并安装mathtype https://blog.csdn.net/weixin_43135178/article/details/125143654?sharetypeblogdetail&sharerId125143654&sharereferPC&sharesourceweixin_43135178&spm1011.2480.3001.8118 2、将mathtype嵌入在WPS MathType面板嵌入器,免费工具…...

简单的爱心跳动表白网页(附源码)

一&#xff1a;准备工作 在开始之前&#xff0c;确保已经具备基础的 HTML、CSS 和 JavaScript 知识。同时&#xff0c;也要准备好一个代码编辑器&#xff0c;比如 VS Code 或 Sublime Text。接下来&#xff0c;我们需要创建三个文件&#xff1a;index.html、styles.css 和 scr…...

【AI】DeepSeek 概念/影响/使用/部署

在大年三十那天&#xff0c;不知道你是否留意到&#xff0c;“deepseek”这个词出现在了各大热搜榜单上。这引起了我的关注&#xff0c;出于学习的兴趣&#xff0c;我深入研究了一番&#xff0c;才有了这篇文章的诞生。 概念 那么&#xff0c;什么是DeepSeek&#xff1f;首先百…...

代理模式 - 代理模式的应用

引言 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用&#xff0c;从而可以在不改变目标对象的情况下&#xff0c;增加额外的功能或控…...

DeepSeek超越ChatGPT的能力及部分核心原理

DeepSeek超越ChatGPT的能力及部分核心原理 目录 DeepSeek超越ChatGPT的能力及部分核心原理超越ChatGPT的能力核心原理超越ChatGPT的能力 推理计算能力更强:在复杂的数学计算、法律文件审查等任务中,DeepSeek的推理能力可媲美甚至超越部分国际顶尖AI模型,包括ChatGPT。例如在…...

【4Day创客实践入门教程】Day3 实战演练——桌面迷你番茄钟

Day3 实战演练——桌面迷你番茄钟 目录 Day3 实战演练——桌面迷你番茄钟1. 选择、准备元件、收集资料2. 硬件搭建3.编写代码 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟…...

Git 出现 Please use your personal access token instead of the password 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 1. 问题所示 执行Git提交代码的时候,出现如下所示: lixiaosong@IT07 MINGW64 /f/java_project/JavaDemo (master) $ git push -u origin --all libpng warning: iCCP: known incorrect sRGB profile libpng warning...

LeetCode题练习与总结:不含连续1的非负整数--600

一、题目描述 给定一个正整数 n &#xff0c;请你统计在 [0, n] 范围的非负整数中&#xff0c;有多少个整数的二进制表示中不存在 连续的 1 。 示例 1: 输入: n 5 输出: 5 解释: 下面列出范围在 [0, 5] 的非负整数与其对应的二进制表示&#xff1a; 0 : 0 1 : 1 2 : 10 3 :…...

AndroidCompose Navigation导航精通1-基本页面导航与ViewPager

文章目录 前言基本页面导航库依赖导航核心部件简单NavHost实现ViewPagerPager切换逻辑图阐述Pager导航实战前言 在当今的移动应用开发中,导航是用户与应用交互的核心环节。随着 Android Compose 的兴起,它为开发者提供了一种全新的、声明式的方式来构建用户界面,同时也带来…...

【环境搭建】1.1源码下载与同步

目录 写在前面 一&#xff0c;系统要求 二&#xff0c;安装depot_tools 三&#xff0c;获取代码 四&#xff0c;代码同步 五&#xff0c;代码结构 写在前面 当前的开发背景是基于Google的开源Chromium&#xff0c;来开发Android设备的浏览器方案。 一&#xff0c;系统要…...

Node.js——body-parser、防盗链、路由模块化、express-generator应用生成器

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)

python | OpenCV小记&#xff08;一&#xff09;&#xff1a;cv2.imread&#xff08;f&#xff09;读取图像操作 1. 为什么 [:, :, 0] 提取的是第一个通道&#xff08;B 通道&#xff09;&#xff1f;OpenCV 的通道存储格式索引操作 [:, :, 0] 的解释常见误解 1. 为什么 [:, :,…...

C语言指针专题四 -- 多级指针

目录 1. 多级指针的核心原理 1. 多级指针的定义 2. 内存结构示意图 3. 多级指针的用途 2. 编程实例 实例1&#xff1a;二级指针操作&#xff08;修改一级指针的值&#xff09; 实例2&#xff1a;动态二维数组&#xff08;二级指针&#xff09; 实例3&#xff1a;三级指…...

本地部署 DeepSeek-R1 大模型

本地部署 DeepSeek-R1 大模型指南 1. 引言 1.1 DeepSeek-R1 模型简介 在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLM&#xff09;正如一座巨大的宝库&#xff0c;里面储存着丰富的信息和无限的潜力。而DeepSeek-R1&#xff0c;就像那扇打开智慧之门的钥匙。它…...

深度学习的应用

目录 一、机器视觉 1.1 应用场景 1.2 常见的计算机视觉任务 1.2.1 图像分类 1.2.2 目标检测 1.2.3 图像分割 二、自然语言处理 三、推荐系统 3.1 常用的推荐系统算法实现方案 四、图像分类实验补充 4.1 CIFAR-100 数据集实验 实验代码 4.2 CIFAR-10 实验代码 深…...

想学习Python编程,应该如何去学习呢

学习Python编程是一个循序渐进的过程&#xff0c;以下是一个详细的学习路径和建议&#xff1a; 一、基础入门 安装Python环境&#xff1a; 从Python官方网站下载并安装适合你操作系统的Python版本。确保将Python添加到系统路径中&#xff0c;以便在命令行中方便地访问。 学习…...

RabbitMQ 多种安装模式

文章目录 前言一、Windows 安装 RabbitMq1、版本关系2、Erlang2.1、下载安装 Erlang 23.12.2、配置 Erlang 环境变量 3、RabbitMQ3.1、下载安装 RabbitMQ 3.8.93.2、环境变量3.3、启动RabbitMQ 管理插件3.3、RabbitMQ3.4、注意事项 二、安装docker1、更新系统包&#xff1a;2、…...

吴恩达深度学习——有效运作神经网络

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 训练集、验证集、测试集偏差、方差正则化正则化参数为什么正则化可以减少过拟合Dropout正则化Inverted Dropout其他的正则化方法数据增广Early stopping 归一化梯度消失与梯度爆…...

《DeepSeek-R1 问世,智能搜索领域迎来新变革》

DeepSeek-R1是由DeepSeek公司开发的一款创新型人工智能模型&#xff0c;自2024年5月7日发布以来&#xff0c;迅速在AI领域引起广泛关注。该模型凭借其卓越的语言理解能力、高效的数据处理能力、自适应学习能力、高安全性与可靠性以及广泛的应用场景与拓展性&#xff0c;在众多人…...

深入解析 Linux 内核中的页面错误处理机制

在现代操作系统中,页面错误(Page Fault)是内存管理的重要组成部分。当程序试图访问未映射到物理内存的虚拟内存地址时,CPU 会触发页面错误异常。Linux 内核通过一系列复杂的机制来处理这些异常,确保系统的稳定性和性能。本文将深入解析 Linux 内核中处理页面错误的核心代码…...

Java手写简单Merkle树

Java手写Merkle树代码 package com.blockchain.qgy.component;import com.blockchain.qgy.model.MerkleTreeNode; import com.blockchain.qgy.util.SHAUtil;import java.util.*;public class MerkleTree<T> {//merkle树private List<MerkleTreeNode<T>> lis…...

DDD - 微服务架构模型_领域驱动设计(DDD)分层架构 vs 整洁架构(洋葱架构) vs 六边形架构(端口-适配器架构)

文章目录 引言1. 概述2. 领域驱动设计&#xff08;DDD&#xff09;分层架构模型2.1 DDD的核心概念2.2 DDD架构分层解析 3. 整洁架构&#xff1a;洋葱架构与依赖倒置3.1 整洁架构的核心思想3.2 整洁架构的层次结构 4. 六边形架构&#xff1a;解耦核心业务与外部系统4.1 六边形架…...

数据结构与算法之二叉树: LeetCode LCP 10. 二叉树任务调度 (Ts版)

二叉树任务调度 https://leetcode.cn/problems/er-cha-shu-ren-wu-diao-du/description/ 描述 任务调度优化是计算机性能优化的关键任务之一。在任务众多时&#xff0c;不同的调度策略可能会得到不同的总体执行时间&#xff0c;因此寻求一个最优的调度方案是非常有必要的 通…...

在AWS上使用KMS客户端密钥加密S3文件,同时支持PySpark读写和Snowflake导入

现有AWS EMR集群上运行PySpark代码&#xff0c;可以读写S3上的数据文件&#xff0c;Snowflake数据仓库也需要导入S3上的文件到表。现在要用AWS KMS有客户端密钥加密S3上的文件&#xff0c;同时允许PySpark代码&#xff0c;可以读写S3上的数据文件&#xff0c;Snowflake数据仓库…...