数据库表各种连接区别专题

一,内连接(Inner Join)

  • 返回两个表中有匹配的记录
  • 如果表中有至少一个匹配,它就会返回行

二,左连接(Left Join)

返回左表中的所有记录,以及右表中匹配的记录。如果右表没有匹配,则结果中右表的部分会包含NULL。

驱动表是左表,即LEFT JOIN关键字左边的表。根据“小表驱动大表”法则,使用左连接时,应该让左表为小表,右表为大表

三,右连接(Right Join)

与左连接相反,它返回右表中的所有记录,以及左表中匹配的记录。如果左表没有匹配,结果中左表的部分会包含NULL。

驱动表是右表,即RIGHT JOIN关键字右边的表。根据“小表驱动大表”法则,使用右连接时,应该让右表为小表,左表为大表

四,全连接(Full Join)

返回左表和右表中的所有记录。如果某一侧没有匹配,那么另一侧的结果将会包含NULL。

五,交叉连接(Cross Join)

  • 返回两个表中所有可能的行组合,这通常被称为笛卡尔积。
  • 如果两个表分别有x和y行,交叉连接的结果将有x*y行。

笛卡尔积是没有任何连接条件时的交叉连接,其结果是第一个表中的每一行与第二个表中的每一行组合。这通常不是一个有用的操作,因为它生成大量的组合,而这些组合中的大多数通常都是无意义的。 

六,连接和笛卡尔积的区别

连接和笛卡尔积之间的区别:

  • 连接是有目的的,通常基于相关的键(如主键和外键)来匹配行。
  • 笛卡尔积没有连接条件,因此会产生大量不必要的数据,这通常不是我们想要的结果。

在实际应用中,通常会避免笛卡尔积,因为它会造成性能问题,并返回大量无用的数据。相反,连接用于精确提取我们需要的数据,通常是通过在两个表之间定义明确的关系来实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Nathaniel333

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

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

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

打赏作者

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

抵扣说明:

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

余额充值