【Mysql数据库】终于搞懂了左连接、右连接、内连接、全连接

😄作者简介:
小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

一、概念

数据库连接是为了在不同的表中提取我们需要的信息,并将这些信息匹配在一起,达到精简的效果。

那么,如何提取我们需要的信息呢,数据库提供了多种连接方式,其中包括内连接、外连接、全连接,外连接又分为左连接、右连接

  • 内连接
  • 表示两表或多个表的交集
    • 有两种写法:innerinner join
  • 外连接表示以其中一表为主,使用关键词 outer join
  • 左连接或左外连接:left join 或者 left outer join
  • 右连接或右外连接:right join 或者 right outer join
  • 全连接表示将左右表连接在一起
  • 关键字:full join(oracle)、union(mysql)

二、案例演示

现有两张表A表、B表

A表
在这里插入图片描述
B表
在这里插入图片描述

2.1 内连接

内连接查询的是两张表或者多个表的交集,也就是两张表的公共部分。

在这里插入图片描述

内连接查询结果

select * from A join B on A.id = B.id
select * from A inner join B on A.id = B.id
select * from A,B on A.id = b.id

在这里插入图片描述

2.2 左连接

左连接也称为左外链接,是将左表和左右表交集的组合。

左连接以左表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将左表所有的信息列出,而右表只列出on条件与左表满足的部分,其余部分为空。

select * from A left join B on A.id = B.id;

在这里插入图片描述

2.3 右连接

右连接也称为右外链接,是将右表和左右表交集的组合。

右连接以右表为基础,根据on 后给出的条件将两表连接起来,最终的结果会将右表所有的信息列出,而左表只列出on条件与右表满足的部分,其余部分为空。

select * from A right join B on A.id = B.id;

在这里插入图片描述

2.4全连接

mysql可以使用union实现全连接;

select * from A left join B on A.id = B.id
union
select * from A right join B on A.id = B.id;

在这里插入图片描述

  • 16
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
连接查询是指通过两个或多个表中的共同列将它们连接在一起进行查询的过程。在MySQL中,连接查询可以使用JOIN语句来实现。常用的JOIN类型有以下几种: 1. INNER JOIN内连接):返回两个表中共同存在的行。 2. LEFT JOIN左连接):返回左表中所有行和右表中与左表匹配的行。 3. RIGHT JOIN右连接):返回右表中所有行和左表中与右表匹配的行。 4. FULL OUTER JOIN(全外连接):返回左表和右表中所有的行,如果某个表中没有匹配的行,则为NULL。 下面是一个INNER JOIN的例子: ``` SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column; ``` 这个查询将返回table1和table2中共同存在的行,并且它们的column列值相等。 左连接右连接的例子: ``` SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column; ``` 这个查询将返回table1中所有的行和与它们匹配的table2中的行。如果table2中没有与table1匹配的行,则返回NULL。 ``` SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column; ``` 这个查询将返回table2中所有的行和与它们匹配的table1中的行。如果table1中没有与table2匹配的行,则返回NULL。 全外连接的例子: ``` SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column = table2.column; ``` 这个查询将返回table1和table2中所有的行,并且它们的column列值相等。如果某个表中没有匹配的行,则为NULL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小曾同学.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值