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

news2025/2/1 17:06:35

 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的区别

示例

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

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

相关文章

ARIMA详细介绍

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

飞致云开源社区月度动态报告(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;首先百…

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

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

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

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

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

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

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

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

深度学习的应用

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

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 归一化梯度消失与梯度爆…

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;因此寻求一个最优的调度方案是非常有必要的 通…

玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

OpenCV:闭运算

目录 1. 简述 2. 用膨胀和腐蚀实现闭运算 2.1 代码示例 2.2 运行结果 3. 闭运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 闭运算的应用场景 5. 注意事项 相关阅读 OpenCV&#xff1a;图像的腐蚀与膨胀-CSDN博客 OpenCV&#xff1a;开运算-CSDN博客 1. 简述…

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN k8s搭建教程 首先下载代码文件 git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN编译镜像 代码相关文件在github https://github.com/x…

万物皆有联系:驼鸟和布什

布什&#xff1f;一块布十块钱吗&#xff1f;不是&#xff0c;大家都知道&#xff0c;美国有两个总统&#xff0c;叫老布什和小布什&#xff0c;因为两个布什总统&#xff08;父子俩&#xff09;&#xff0c;大家就这么叫来着&#xff0c;目的是为了好区分。 布什总统的布什&a…