解锁数据关联之道:SQL 表连接详解

文章目录

  • 概述
  • 表关系
  • 横向连接
    • 内连接 inner join
    • 左连接 left join
    • 右连接 right join
    • 全连接 full join
    • 交叉连接 cross join
  • 纵向合并
    • UNION ALL
    • UNION

概述

在数据处理、数据分析中常会用到表连接。表连接的作用是将多个表中的数据关联起来,以便在查询过程中获取更全面和准确的信息。。通过表连接,可以更灵活地处理和分析数据库中的数据,提供更全面和准确的查询结果。使用表连接有以下功能:

  • 获取相关数据: 当数据分散在多个表中时,通过表连接可以将这些表中的相关数据关联起来。例如,在一个电子商务系统中,订单信息可能存储在一个表中,而客户信息可能存储在另一个表中。通过表连接,可以将订单表和客户表中的数据关联起来,从而获取包括订单和客户信息的完整记录。
  • 实现数据聚合: 表连接可以用于将多个表中的数据进行聚合计算。通过连接与聚合函数结合使用,可以进行复杂的统计和汇总操作。例如,在销售数据分析中,可以将订单表和产品表连接,并使用聚合函数计算每个产品的销售总额、平均价格等统计指标。
  • 支持复杂的查询条件: 使用表连接可以在查询条件中同时使用多个表的列进行筛选和过滤。这样可以根据多个表的关系和条件进行更精确的查询。例如,可以通过连接客户表和订单表,并根据客户的地理位置和订单的日期范围进行筛选,以获取特定地区在特定时间内的订单数据。
  • 提高查询性能: 通过适当地使用表连接,可以减少数据冗余和重复存储,从而提高查询性能。

表关系

表关系指的是数据库中不同表之间的关联关系。这种关系通常通过表中的共同列(键)建立起来,以便在查询数据时能够在不同表之间建立连接并获取相关信息。表关系通常可以分为以下几种类型:

  • 一对一关系: 两个表中的每个记录在关联字段上都有唯一的对应。这种关系通常用于将不同方面的信息分开存储,以保持数据的规范性和整洁性。
    在这里插入图片描述

  • 一对多关系: 一个表中的记录在关联字段上可以对应多个另一个表中的记录。这种关系常见于主从表的关系,例如一个客户可能有多个订单。

  • 多对一关系: 多个表中的记录在关联字段上对应同一个表中的记录。这种关系通常指向关联字段具有相同值的情况。
    在这里插入图片描述

  • 多对多关系: 两个表之间的记录可以相互关联,并且每个记录在关联字段上可以对应多个另一个表中的记录。为了建立这种关系,通常需要通过第三张关系表来实现。
    在这里插入图片描述

通过合理设计表关系,可以避免数据冗余、确保数据一致性,并且使得数据库的结构更加清晰和易于维护。在进行数据查询时,表关系能够帮助我们获取跨表的相关信息,进行复杂的数据分析和处理操作。

横向连接

数据:
在这里插入图片描述

内连接 inner join

返回左表与右边关键值一致的行(两表的交集)。

select * from t1 inner join  t2 on t1.key1 = t2.key2;

在这里插入图片描述

左连接 left join

返回左表中的所有行,以及右表中与左表匹配的行。

select * from t1 left join  t2 on t1.key1 = t2.key2;

在这里插入图片描述

右连接 right join

返回右表中的所有行,以及左表中与右表匹配的行。

select * from t1 right join  t2 on t1.key1 = t2.key2;

在这里插入图片描述

全连接 full join

返回左右两个表中所有的行,并将它们匹配起来,如果其中一个表中没有匹配的行,则用 NULL 值填充。(两表的并集)

select * from t1 full join  t2 on t1.key1 = t2.key2;

在这里插入图片描述

交叉连接 cross join

交叉连接会返回两个表的笛卡尔积,即左表中的每一行都会与右表中的每一行匹配。

SELECT *
FROM table1
CROSS JOIN table2;

示例:
在这里插入图片描述

纵向合并

纵向合并是为了追加/增加记录。通常情况下,纵向合并需要满足以下条件:

  • 两张表必须拥有相同数量的字段
  • 两张表字段的顺序必须相同
  • 两张表对应字段的数据类型必须一致
  • 字段名可以不相同,选取主数据集的字段名
    在这里插入图片描述

UNION ALL

UNION ALL操作符用于合并结果集时不会去重,即结果集中可能包含重复的行。

SELECT column1, column2
FROM table1
UNION ALL
SELECT column1, column2
FROM table2;

UNION

UNION操作符用于合并结果集时会自动去重,即去除重复的行。

SELECT column1, column2
FROM table1
UNION 
SELECT column1, column2
FROM table2;

在SQL中,UNION和UNION ALL都是用于合并两个或多个SELECT语句的结果集的操作符。它们的主要区别在于对重复行的处理方式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LabVIEW FPGA入门】使用事件发生函数同步FPGA循环

1.使用事件发生函数 使用 Occurrences 函数来控制单独的同步活动。特别是,当您希望程序框图的一部分等待程序框图的另一部分完成任务而不强制 LabVIEW 进行轮询时,请使用这些函数。 您可以使用全局变量执行类似于occurrences函数的功能,通过一…

通过Windows事件日志介绍APT-Hunter

APT-Hunter是用于Windows事件日志的威胁搜寻工具,该工具能够检测隐藏在Windows事件日志中的APT运动,如果您是弄威胁情报的人,那么我保证您会喜欢使用此工具的,为什么?我将在本文中讨论原因,请注意&#xff…

音视频开发9 FFmpeg 解复用框架说明,重要API说明

一,播放器框架 二 常用音视频术语 容器/文件(Conainer/File): 即特定格式的多媒体文件, 比如mp4、flv、mkv等。 媒体流(Stream): 表示时间轴上的一段连续数据&#xff0…

数据整理的Compact流程 (二)|OceanBase数据转储合并技术解读(二)

上篇文章《数据整理的Compact流程 (一)|OceanBase数据转储合并技术解读(二)》中,有讲解到,在OceanBase数据库中,当MemTable写满时,将其下刷到Mini SSTable的过程包含两个…

「小明赠书活动」第四期《Java开发坑点解析:从根因分析到最佳实践》

目录 ⭐️ 赠书 - 《Java开发坑点解析:从根因分析到最佳实践》 参 加 活 动 方 式 见 文 末 ⭐️内容简介 -《Java开发坑点解析:从根因分析到最佳实践》 ⭐️阅读建议 -《Java开发坑点解析:从根因分析到最佳实践》 ⭐️《Java开发坑…

CSS 介绍及用法,常用属性

一、CSS介绍 A. 简介 CSS全称:全称为层叠样式表(Cascading Style Sheets),是一种用于描述网页外观和格式的计算机语言。CSS可以使网页的布局更加丰富和多样化,并且可以将样式信息与网页内容分离,使得网…

C语言——基于stm32G030的温湿度传感器项目实验

一、功能要求: 设备自检功能: 设备上电自检(检查传感器采集是否正常, DHT11有存在响应, 可以自检使用, )自检通过后,由串口打印设备状态信息。 自动控制功能: 进入自动控…

python连接FTP服务器:[WinError 10054] 远程主机强迫关闭了一个现有连接

一、原始报错信息 pythonProcess finished with exit code -1073740791 (0xC0000409) 这个报错信息,太过于笼统,是分析不出代码出了什么问题的。 二、打印详细报错信息 在服务器相关可能报错的地方,进行报错信息追踪: import …

如何在OrangePi AIpro智能小车上实现安全强化学习算法

随着人工智能和智能移动机器人的广泛应用,智能机器人的安全性和高效性问题受到了广泛关注。在实际应用中,智能小车需要在复杂的环境中自主导航和决策,这对算法的安全性和可靠性提出了很高的要求。传统的强化学习算法在处理安全约束时存在一定…

SpringBoot搭建OAuth2

背景 前几天自己从零开始的搭建了CAS 服务器,结果差强人意(反正是成功了)。这几天,我躁动的心又开始压抑不住了,没错,我盯上OAuth2了,大佬们都说OAuth2比CAS牛批,我就想知道它有多牛…

Elasticsearch不删原有jdk8导致的系列安装和启动问题

以前在空机器直接装elasticsearch,没有遇到什么问题。今天在现有JDK上安装,遇到的问题记录一下: 1. JDK的环境变量配置与我原有的不一致报如下错误: [estestZK-DES-I root]$ /usr/elasticsearch/bin/elasticsearch could not fi…

SSL函数01-数组函数Array Functions

一、数组的初始化 SSL中,数组下标从1开始! 1-1、不知道数组的长度 :DECLARE a6; a6 : {}; Aadd(a6,a); Aadd(a6,b); Aadd(a6,c); 当用a : {}创建一个数组的时候,不可以用a[1] 值,来赋值! 1-2、知道数组的长度 方式一…

【录用案例】2天录用!提交可录,沾边即可!

本周投稿推荐 SSCI • 2区社科类,3.0-4.0(录用友好) EI • 计算机工程生物医学等(2天录用) CNKI • 3天内初审录用,随即出版(急录友好) SCI&EI • 4区生物医学类&#x…

数据链路层 + NAT技术

数据链路层:负责设备之间的数据帧的传送和识别。 一、以太网 以太网的帧格式 如何分离报头和有效数据? 报头是固定长度的 如何将数据交给上层协议? 通过类型,如果是0800,则交给IP协议,如果是0806&#xf…

JavaScript正则表达式

一、介绍 正则表达式是用于匹配字符串中字符组合的模式。在javascript中,正则表达式也是对象。通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。 正则表达式的作用: 表单验证(匹配)、过滤敏感…

筛斗数据提取:解锁信息宝藏的关键步骤

在数字化时代,数据已成为推动社会进步和企业发展的关键要素。然而,数据本身并不直接产生价值,其价值在于我们如何从中提取有用的信息。数据提取,作为解锁信息宝藏的关键步骤,对于任何希望从海量数据中获取洞察力和竞争…

十四天学会Vue——Vue核心(理论+实战)上篇(第一天)

一、Vue核心(上篇) 热身tops:选取开发模式 ①用于开发模式 我们只需要知道 我们是开发模式,开发模式他会跟你提示代码出现错误的地方以及出错原因,而生产模式比较简洁。 ②用于生产模式 1.1 new Vue()实例 了解Vue&a…

人脸识别——筛选与删除重复或近似重复数据提高人脸识别的精确度

1. 概述 人脸识别研究通常使用从网上收集的人脸图像数据集,但这些数据集可能包含重复的人脸图像。为了解决这个问题,我们需要一种方法来检测人脸图像数据集中的重复图像,并提高其质量。本文介绍了一种检测人脸图像数据集中重复图像的方法。该…

有趣的css - 双开门按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个双开门的按钮,交互效果比较强,但是实现很简单,快学起来吧。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码cs…

充电宝哪家好用推荐?买什么充电宝性价比高?2024年充电宝排行榜

说实话,我其实是个手机重度使用者,买过的充电宝也有无数款了,每次手机没电的时候插座都离得不是特别近,不是要下床充电就是要固定在一个位置充电感觉怪麻烦的,但是有了充电宝后可以在床上玩手机都不用担心手机没电&…