MySQL五大连接

Mysql 连接

在一般的业务情况下,我们大致将 Mysql多表连接 分为如下几种:

  • 内连接:INNER JOIN – 可简写为 JOIN
  • 左外连接:LEFT OUTER JOIN – 可简写为 LEFT JOIN
  • 右外连接:RIGHT OUTER JOIN – 可简写为 RIGHT JOIN
  • 全连接:使用 UNION 完成;
  • 交叉连接:CROSS JOIN – 也称为 笛卡儿乘积连接,大抵不使用;

内连接 – INNER JOIN

SQL 语句:

SELECT * 
FROM a 
INNER JOIN b ON(a.id = b.id)
 
 
  • 1
  • 2
  • 3

解释:
查询出 a表b表交集

图例:
INNER JOIN


左外连接 – LEFT OUTER JOIN

SQL 语句:

SELECT * 
FROM a 
LEFT OUTER JOIN b ON(a.id = b.id)
 
 
  • 1
  • 2
  • 3

解释:
查询出 左边表 -- 即a表 的完全集,而 右边表 -- 即b表 中匹配的则有值,没匹配的以 null 值取代;

图例:
LEFT OUTER JOIN


右外连接 – RIGHT OUTER JOIN

SQL 语句:

SELECT * 
FROM a 
RIGHT OUTER JOIN b ON(a.id = b.id)
 
 
  • 1
  • 2
  • 3

解释:
左外连接相反 ,查询出 右边表 -- 即b表 的完全集,而 左边表 -- 即a表 中匹配的则有值,没匹配的以 null 值取代;

图例:
RIGHT OUTER JOIN


全连接 – UNION

事实上由于 Mysql 不支持 FULL JOIN,所以我们将使用 UNION 来完成 全连接

SQL 语句:

SELECT * FROM a LEFT OUTER JOIN b ON(a.id = b.id) 
UNION 
SELECT * FROM a RIGHT OUTER JOIN b ON(a.id = b.id)
 
 
  • 1
  • 2
  • 3

解释:
全连接左右外连接 的并集,连接表包含被连接的表的所有记录,如果缺少匹配的记录,,则以 null 取代;

图例:
这里写图片描述


交叉连接 – CROSS JOIN

关于 交叉连接 的教程,可以参考:MySQL交叉连接(CROSS
JOIN)
,本文此处便是转载于此;

CROSS JOIN 子句从连接的表返回行的 笛卡儿乘积

假设使用 CROSS JOIN 连接两个表;
结果集将包括两个表中的所有行,其中结果集中的每一行都是第一个表中的行与第二个表中的行的组合;
当连接的表之间没有关系时,会使用这种情况;

要特别注意的是,如果每个表有 1000 行,那么结果集中就有 1000 x 1000 = 1,000,000 行,那么数据量是非常巨大的;

在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值