数据库表的连接方式(超详细讲解)

Mysql数据库内联查询、左连接查询、右连接查询、自连接查询介绍,库和表的相关练习 一.内联查询 1.inner join:只查询键值一致(交叉)的部分 2.演示 二.左连接 1.left join:以左表为标准,查询输出左表中没有的字段信息 2.演示 三.右连接 1.rightjoin:以右表为标准,查询输出右表中没有的字段信息 2.演示 四.自连接 将一张表通过别名虚拟为两张表,查询比较其中的不同字段 五.练习 1.新建/删除库和字段 2.单/多表查询 阅读详情

左连接

在SQL中,LEFT JOIN 是一种用于合并两个表的连接方式。它会返回左表(第一个表)中的所有记录,以及右表(第二个表)中与左表匹配的记录。如果右表中没有匹配的记录,则结果集中将包含NULL值。

左连接的基本语法

SELECT 表1.列, 表2.列, ...
FROM 表1
LEFT JOIN 表2
ON 表1.匹配列 = 表2.匹配列;

左连接的特征

  1. 包含左表所有记录:无论右表是否有匹配的记录,左表中的每一行都会出现在结果集中。

  2. 右表匹配行:如果右表中有与左表匹配的记录,则显示这些记录。如果没有匹配的记录,则结果中包含NULL值。

示例

假设有两个表:学生 和 成绩。

学生表

学生ID学生姓名
1张三
2李四
3王五

成绩表

成绩ID学生ID成绩
1185
2392

如果我们想要获取所有学生及其对应的成绩,使用 LEFT JOIN:

SELECT 学生.学生ID, 学生.学生姓名, 成绩.成绩
FROM 学生
LEFT JOIN 成绩
ON 学生.学生ID = 成绩.学生ID;

结果

学生ID学生姓名成绩
1张三85
2李四NULL
3王五92

在这个例子中,李四没有成绩记录,因此成绩列显示为NULL。

总结

LEFT JOIN 是非常有用的工具,特别是在需要保留左表所有数据的情况下。它可以帮助你避免丢失数据,同时从多个表中提取信息。

其他连接方式

在SQL中,除了LEFT JOIN,还有其他几种类型的连接(JOIN),它们可以帮助你在不同情况下合并表。以下是常见的连接类型及其说明:

1. INNER JOIN

  • 定义:只返回两个表中匹配的记录。
  • 特点:如果某条记录在任一表中没有匹配项,则不会出现在结果集中。
  • 示例:
SELECT 表1.列, 表2.列, ...
FROM 表1
INNER JOIN 表2
ON 表1.匹配列 = 表2.匹配列;

2. RIGHT JOIN

  • 定义:返回右表中的所有记录,以及左表中与右表匹配的记录。
  • 特点:如果左表中没有匹配的记录,则结果集中将包含NULL值。
  • 示例:
SELECT 表1.列, 表2.列, ...
FROM 表1
RIGHT JOIN 表2
ON 表1.匹配列 = 表2.匹配列;

3. FULL OUTER JOIN

  • 定义:返回左表和右表中所有的记录。
  • 特点:如果某张表中没有匹配的记录,则结果集中将包含NULL值。
  • 示例:
SELECT 表1.列, 表2.列, ...
FROM 表1
FULL OUTER JOIN 表2
ON 表1.匹配列 = 表2.匹配列;

4. CROSS JOIN

  • 定义:返回左表和右表的笛卡尔积,即不考虑任何匹配条件,将左表的每一行与右表的每一行组合。
  • 特点:结果集的行数等于左表行数乘以右表行数。
  • 示例:
SELECT 表1.列, 表2.列, ...
FROM 表1
CROSS JOIN 表2;

5. SELF JOIN

  • 定义:将表与其自身进行连接。
  • 特点:通常用于表中数据的比较。
  • 示例:
SELECT a.列, b.列, ...
FROM 表 a, 表 b
WHERE a.匹配列 = b.匹配列;

总结

连接类型特点及用途
INNER JOIN只返回匹配的记录
LEFT JOIN返回左表所有记录,右表匹配的记录或NULL
RIGHT JOIN返回右表所有记录,左表匹配的记录或NULL
FULL JOIN返回左右表所有记录,未匹配的列填充NULL
CROSS JOIN返回左右表的笛卡尔积,不考虑匹配条件
SELF JOIN将表与其自身连接,用于表内数据比较

这些连接方式提供了灵活的工具,帮助你在不同场景下有效地查询和合并数据。

详细举例说明

下面为每种连接类型提供一个实际的例子,假设我们有两个表:学生 和 课程。

学生表

学生ID学生姓名
1张三
2李四
3王五
4赵六

课程表

课程ID学生ID课程名称
11数学
21英语
33物理
44化学

1. INNER JOIN

  • 目的:找出学生及其所选课程,仅包含已选课的学生。
  • 查询:
SELECT 学生.学生姓名, 课程.课程名称
FROM 学生
INNER JOIN 课程
ON 学生.学生ID = 课程.学生ID;
  • 结果:
    学生姓名课程名称
    张三数学
    张三英语
    王五物理
    赵六化学

2. LEFT JOIN

  • 目的:列出所有学生及其所选课程,包括未选课的学生。
  • 查询:
SELECT 学生.学生姓名, 课程.课程名称
FROM 学生
LEFT JOIN 课程
ON 学生.学生ID = 课程.学生ID;
  • 结果:
    学生姓名课程名称
    张三数学
    张三英语
    李四NULL
    王五物理
    赵六化学

3. RIGHT JOIN

  • 目的:列出所有课程及其选课学生,包括没有学生选的课程。
  • 查询:
SELECT 学生.学生姓名, 课程.课程名称
FROM 学生
RIGHT JOIN 课程
ON 学生.学生ID = 课程.学生ID;
  • 结果:
    学生姓名课程名称
    张三数学
    张三英语
    王五物理
    赵六化学

(注:在这个例子中,所有学生都选了课,因此结果与INNER JOIN相同。)

4. FULL OUTER JOIN

  • 目的:列出所有学生和所有课程,包括未选课的学生和未被选的课程。
  • 查询:
SELECT 学生.学生姓名, 课程.课程名称
FROM 学生
FULL OUTER JOIN 课程
ON 学生.学生ID = 课程.学生ID;
  • 结果:
    学生姓名课程名称
    张三数学
    张三英语
    李四NULL
    王五物理
    赵六化学

(注:在这个例子中,所有学生都选了课,因此结果与LEFT JOIN相同。)

5. CROSS JOIN

  • 目的:列出所有学生与所有课程的组合,不考虑是否选课。
  • 查询:
SELECT 学生.学生姓名, 课程.课程名称
FROM 学生
CROSS JOIN 课程;
  • 结果:
    学生姓名课程名称
    张三数学
    张三英语
    张三物理
    张三化学
    李四数学
    李四英语
    李四物理
    李四化学
    王五数学
    王五英语
    王五物理
    王五化学
    赵六数学
    赵六英语
    赵六物理
    赵六化学

6. SELF JOIN

  • 目的:找出选同一课程的学生。
  • 查询:
SELECT a.学生姓名, b.学生姓名, 课程.课程名称
FROM 课程 a
JOIN 课程 b
ON a.课程名称 = b.课程名称
AND a.学生ID != b.学生ID;
  • 结果:
    学生姓名学生姓名课程名称
    张三张三数学
    张三张三英语

(注:在这个例子中,张三选了两门课,因此结果中显示了他与自己的组合。)

这些例子展示了不同连接类型在实际数据中的应用,帮助你更好地理解它们的功能和用途。

数据库表的几种连接说明 新建两张表格, 一张是学生的信息表, 另一张是学生的成绩表:StudentScore,以下分别展示这两张表的连接方式内连接 :inner 、inner join外连接 :outer join左外连接 :left outer join左连接 :left join右外连接 right outer join右连接:right join全连接 full join 、union。 阅读详情

相关推荐

Azure数据库服务比较:SQL Database vs Cosmos DB

结构化数据场景:如订单管理、用户认证等需要强事务支持的业务非结构化/半结构化场景:如物联网设备日志、社交网络数据、实时推荐系统:基于传统关系型数据库(SQL Server)的云原生服务,支持ACID事务和复杂SQL查询Cosmos DB:全球分布式NoSQL数据库,支持多模型(文档、键值、图、宽列)和弹性扩展两者的架构设计哲学有何本质区别?数据建模和查询语言的差异如何影响开发体验?一致性、可用性、吞吐量的权衡模型如何选择?典型业务场景下的选型决策依据是什么?技术原理对比。

AI云原生与云计算技术学院 1968

数据库-表连接的几种方式

在关系型数据库中,表与表之间的连接是非常重要的操作。连接可以将两个或多个表中的数据进行合并,实现数据的查询和分析。常见的连接方式有内连接、左连接、右连接、全连接、交叉连接和联合查询。下面将分别对这几种连接方式进行详细介绍。

向诸位大佬虚心学习 1万+

SQL高级语句-CREATE DATABASE 用于创建数据库。

CREATE DATABASE 语句 CREATE DATABASE 用于创建数据库。 SQL CREATE DATABASE 语法 CREATE DATABASE database_name SQL CREATE DATABASE 实例 现在我们希望创建一个名为 "my_db" 的数据库。 我们使用下面的 CREATE DATABASE 语句: CREATE

qq_35144470的博客 2860

图解左连接、右连接、内连接、全连接(小白入门)

左连接(left join)全名是左外连接(left outer join),左连接会返回左边表中的。这个连接条件表示将两个表中personId不相等的记录连接起来,其余的则保留左表,右表剩余的位置用。相等的记录连接起来,其余的则保留左表,右表剩余的位置用。这个连接条件表示将两个表中。这里B.Key要求为。就是要让左连接得到的。右连接跟左连接类似。

cool-wangtongzhou 3万+

oracle数据库中的表连接方式及书写规范

本文主要介绍如下图中7中表连接方式的书写规范 首先创建测试表并插入测试数据: A表的数据: B表的数据: INNER JOIN 全内连接 产生A和B的交集 select * from A inner join B on A.id=B.id; --join写法 select * from A,B where A.id=B.id; --where写法 FULL OUTER JOIN 全外连接 产生 A 和 B 的并集。对于没有匹配的记录,则以 null 做为值。 select * from A

xiaobai_laobai的博客 1335

5G NR 帧结构

本节主要介绍5G NR中的帧结构[38.211-4.3]。5G帧结构(Frame Structure)为时域结构。其设计比其4G LTE更为灵活,这种灵活性使5G能够根据应用需求(如增强移动宽带eMBB,超高可靠低时延通信URLLC)进行调整,同时支持差异化的应用场景,提高了5G的利用效率与响应能力。具体而言,5G帧结构是基于时隙和OFDM符号设计的,且5G网络能够根据服务需求动态调整各时隙持续时长。

夫子喵的博客 5286

图解数据库左连接、右连接、内连接、外连接、全连接的区别

数据库连表方式 内连接 :inner 、inner join 外连接 :outer join 左外连接 :left outer join 左连接 :left join 右外连接 right outer join 右连接: right join 全连接 full join 、union 准备 现在有2张表,A表和B表,数据和表结构如下 内连接 内连接查询的是两张表的并集,也就是A表和B表都必须有数据才能查询出来; 以下三个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3的数据 --

叶新东老师的博客 7万+

巨量千川M-API实战:异步报表与批量操作自动化指南

API(应用程序编程接口)是现代软件系统间通信和数据交换的核心技术,它定义了服务间交互的协议和规范。在数字营销领域,营销API(Marketing API)通过程序化接口实现了广告账户管理、数据获取和操作自动化的能力,其技术价值在于将重复性人工操作转化为高效、准确的自动化流程,显著提升运营效率并降低人为错误。在广告投放精细化运营场景中,面对海量数据报表的获取与批量广告状态管理的需求,异步任务处理和批量操作接口成为关键技术解决方案。本文聚焦巨量千川M-API,深入解析其异步报表获取机制与批量操作实现,涵盖从任

weixin_32932149的博客 429

数据库表的连接方式

数据库表的连接方式 先总体概述一下:一般用的是join 和 union 1. 笛卡尔积:join 2. 内连接:inner join on 3. 外连接:全外连接(full join on),左外连接(left join on),右外连接(right join on) 4. 联合查询:Union 和Union all 用于测试的两张表: 1.笛卡尔积 (join) 两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。 select * from t1 join t2 结果: 2.内连接 (i

weixin_44844089的博客 9652

推荐系统在音乐领域的实践:网易云音乐推荐算法解析

你是否有过这样的经历?打开网易云音乐,“私人FM”里总能推到你想听的歌;“每日推荐”的歌单,往往藏着你没听过但一入耳就爱上的曲目。这些“懂你”的推荐背后,是一套复杂却精密的推荐系统在运转。问题陈述:音乐推荐的难点远超一般商品——音乐是高度主观的艺术,用户兴趣易随心情、场景变化;小众音乐的“长尾效应”显著,如何让冷门好歌被发现?传统协同过滤依赖历史行为,面对新用户/新歌曲的“冷启动”问题束手无策;而单纯的内容推荐又难以捕捉用户的隐性兴趣。核心方案:网易云音乐采用“混合推荐策略”——融合协同过滤(CF)

AI天才研究院 2085

【大模型】MHA,MQA,GQA及KV Cache详解

在自回归模型中(Autoregressive Models),模型会逐个生成文本的每个token,这个过程可能比较慢,因为模型一次只能生成一个token,而且每次新的预测都依赖于之前的上下文。这意味着,要预测第1000个token,你需要用到前999个token的信息,这通常涉及到对这些token的表示进行一系列矩阵乘法运算。而要预测第1001个token,你不仅需要前999个token的信息,还要加上第1000个token的信息。

酒酿小圆子呀~ 2612

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含表结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2399

FANUC机器人RSR与PNS功能深度解析及实战应用指南

本文深度解析了FANUC机器人RSR(远程程序启动)与PNS(程序号选择)两大核心功能。文章详细阐述了RSR的队列执行机制与PNS的二进制编码原理,提供了从硬件连接到参数配置的完整实战指南,并分享了混合使用策略与常见故障排除方法,旨在帮助工程师实现高效、稳定的生产线自动化程序调度。

neovim7hacker的博客 308

数据库表连接方式详解及区别

连接类型关键字返回结果使用场景测试关注点内连接INNER JOIN两表匹配行常规关联查询匹配数据完整性左连接LEFT JOIN左表全部+右表匹配主表查询左表数据完整性,NULL处理右连接RIGHT JOIN右表全部+左表匹配从表查询右表数据完整性,NULL处理全连接FULL JOIN两表所有行数据对比完整数据覆盖,NULL处理交叉连接CROSS JOIN笛卡尔积组合生成结果集大小控制自连接表自身关联层级数据关系正确性。

weixin_43676350的博客 931

部署与可视化系统:移动端跟踪系统:YOLOv8 + ByteTrack 结合 Android CameraX 实现实时行人计数 App

本文详细介绍了在Android移动端实现实时行人检测、跟踪与计数系统的完整方案。系统采用YOLOv8+ByteTrack技术栈,基于NCNN推理引擎,无需云端算力即可在手机端侧完成全流程处理。文章从技术选型、系统架构、CameraX集成等多个维度进行深入解析,重点阐述了移动端部署面临的工程挑战和优化策略。通过四层管道模型设计,实现了从图像采集到目标跟踪的高效处理流程,并采用C++ NDK开发确保性能。该系统在中端手机上可达到10FPS,旗舰机型可达30FPS,为移动端实时目标跟踪提供了可落地的解决方案。

ZXSXJ的博客 91

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6986

PHP PEAR中Database(DB)使用介绍

DSN连接方式DB目前支持的连接方式如下最完整的格式:phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value别外还有一些缩写的格式:phptype://username:password@protocol+hostspec:110//usr/db_file.dbphptype

jxyuhua的地盘 3060

零基础速成simulink代码生成——stateflow基础3

此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

不断debug,优化中…… 1711

Hive操作库、操作表及数据仓库的简单介绍

本文内容包括数仓和数据库的区别、hive数据库操作、数仓分层、ETL和ELT、内部表、外部表、查看表、修改表、映射表、导入数据到hive表、从hive表导出数据到文件、分区表、分桶表、复杂类型。

m0_63845988的博客 1825

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Oracle数据库中表的四种连接方式讲解

Oracle数据库中表的四种连接方式讲解     表的连接是指在一个SQL语句中通过表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的连接主要可分四种,分别为相等连接,外连接,不等连接和自连接,本文将主要从以下几个典型的例子来分析Oracle表的四种不同连接方式:  1. 相等连接  通过两个表具有相同意义的列,可以建立相等连接条件。  只有连接列上在两个表中

suncrafted的专栏 3448

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据库DataBase(DB)

特点 持久化存储数据 方便存储和管理 使用了统一的方式-SQL sql,结构化查询语言 数据库是文件夹 表是文件 表中的数据就是数据 通用语法 SQL分类 操作数据库:crud C:创建 R:查询 U:修改 D:删除 查询所有数据库的名称: show databases; 创建数据库,判断不存在,再创建: create database if not exists 数据库名称; 修改删除和使用 改数据库的字符集 alter database 数据库名称 character set 字符集名称;

woshiwu6666的博客 4222

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数据仓库之拉链表

拉链表一、数据仓库二、拉链表原理三、拉链表实现步骤1、准备数据:2、数据加载过程:3、刷新customer_inc表数据到customer表(2017-01-02):4、刷新customer_inc表数据到customer表(2017-01-03)5、查询拉链表: 今天看到了一篇讲解数仓建设之拉链表的好文。看过之后,感觉甚好。讲解的很是详细。在这里贴出来一方面是给自己留个记录,可以之后翻出来看看;另外一方面就是分享给大家。 大家也可以直接点击下面地址跳转到原文链接下阅读: 原文链接 https://www

weixin_41998764的博客 3215

SQLite附加数据库(ATTACH DATABASE)

在开发过程中,经常需要多个表之间进行操作。对于同一个数据库来说,相互之间连接表,容易实现。但是对于不同的数据库,使用Sqlite该怎么实现呢? 针对这种需要不同数据库之间的表连接操作的情况,SQLite提供了一种将外部数据库附加到当前数据库连接的机制——ATTACH DATABASE。 这里我们有俩张测试表,company和userinfo ,其中表Company放在Study.db库中,表...

HobbyFull的博客 7847

ORACLE表连接方式分析及常见用法 【转贴】

摘要: 针对在数据仓库环境下,由于超大数据量的处理而产生的效率问题,本文深入分析了ORACLE表的几种连接方式、特点、适用范围,以及对于如何使用和优化做了详细的探讨。 关键字: 数据仓库 ORACLE 表连接 一 引言 ...

csqm87956的博客 394

db文件怎么修改_详解MySQL数据库的db.opt文件含义及作用

概述MySQL数据库存放数据目录里的db.opt文件是MySQL建库过程中自动生成的。细心的朋友可能会发现有时候在MySQL数据库的某些库目录下有个db.opt文件,那这个文件是干什么用的呢?如果你用记事本等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。db.optMySQL的每个数据库目录中有一个文件db.opt,该文件主要 用来存储当前数据库的默认字符集和字...

weixin_39856607的博客 2467
上一篇: 力扣1502. 判断能否形成等差数列(Array数组详解)
下一篇: 阿里巴巴Java开发手册(最新最全)
AffectionGF
博客等级 码龄3年 78粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值