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

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

Silvaco TCAD | 从极化效应到高频开关:GaN HEMT仿真设计与性能验证

本文深入探讨了使用Silvaco TCAD进行GaN HEMT仿真设计与性能验证的关键技术。从极化效应到高频开关特性,详细解析了2DEG形成机制、器件结构设计优化及高频特性仿真技巧,帮助工程师提升GaN HEMT的性能与可靠性。通过实战案例展示了如何通过仿真优化击穿电压和导通电阻,实现开关品质因数的显著提升。

weixin_30872337的博客 484

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

数据库连表方式 内连接 :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万+

CUBEMX ADC 单/多通道+DMA

本文使用的是STM3F103C8T6 Cubemx进行单/多通道DMA配置。

记录学习 1403

数据库表的连接方式

数据库表的连接方式 先总体概述一下:一般用的是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

微机原理--输入输出实验--emu8086

通过实验,验证了基本要求,实现了一位数加法运算的功能,同时实现了两位数加法运算的功能,还有一位数的除法。思考题(1)输入输出数据和计算用数据的区别:从键盘上输入以及输出的数据要在通过转化为计算机所识别的二进制的数字,和计算所用的数据之间相差30H。(2)单字符输入输出和串输入输出的不同之处:单字符的输入使用1号功能键,输出通过2号功能调用,且待显示字符送给DL寄存器;串输入使用0A功能,输出通过9号功能调用,DS:DX指向待显示字符串,且字符串必须以“$”结束。

m0_58837398的博客 2417

RTAB-MAP实战:用Realsense D435i在ROS中搭建室内3D地图(附避坑指南)

本文详细介绍了如何在ROS环境下,使用Intel Realsense D435i深度相机和RTAB-MAP算法进行室内3D地图构建的完整实战流程。内容涵盖环境配置、核心节点数据流解析、关键参数调优、地图保存与重定位,并提供了实用的避坑指南,帮助机器人开发者和研究者快速实现稳定的视觉SLAM应用。

weixin_29095049的博客 490

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

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

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

【华为OD机考真题】- 斗地主之顺子(B卷-200分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 815

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

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

weixin_43676350的博客 931

(第100天)Oracle GoldenGate 常见故障处理指南

OGG 运维的核心在于细致的配置管理和主动的问题排查。熟悉常见错误、掌握关键操作流程、并善用日志和调试工具,是保障数据同步任务稳定运行的关键。希望这份指南能帮助您更高效地解决 OGG 同步中遇到的问题。祝您运维顺利!

LuciferLiu_DBA 301

零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模

特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。

amy_mhd的博客 249

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

【LLC快速上手系列】如何在LLC谐振里优雅地调死区时间?

用示波器死盯Vds波形,找到ZVS临界点;别听“经验值”,亲自调才准;死区时间并非越短越好,也不是越长越稳,而是要“刚刚好”;用热成像看MOSFET温升变化,ZVS调好了,温度马上掉2~5℃;轻载难ZVS?适当提升频率 or 降低Lr可破!

weixin_43199439的博客 493

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

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

m0_63845988的博客 1825

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

suncrafted的专栏 3448

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据库DataBase(DB)

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

woshiwu6666的博客 4222

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据仓库之拉链表

拉链表一、数据仓库二、拉链表原理三、拉链表实现步骤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、付费专栏及课程。

余额充值