前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL六大连接解析:内连接、外连接、全连接、交叉连接、自连接、自然连接

SQL六大连接解析:内连接、外连接、全连接、交叉连接、自连接、自然连接

作者头像
鳄鱼儿
发布2024-05-21 20:57:11
1030
发布2024-05-21 20:57:11
举报

内连接(inner join)

内连接:也称为等值连接,返回两张表都满足条件的部分。inner join 就等于 join

代码语言:javascript
复制
select * from A inner join B on A.id=B.id

外连接(outer join)

外连接分为左外连接(left outer join)和右外连接(right outer join)。 left outer joinleft join 等价, 一般写成left join right outer joinright join等价,一般写成right join

左外连接

取左边的表的全部,右边的表按条件,符合的显示,不符合则显示null

代码语言:javascript
复制
select * from A left join B on A.id=B.id

右外连接

取右边的表的全部,左边的表按条件,符合的显示,不符合则显示null

代码语言:javascript
复制
select * from A right join B on A.id=B.id

SQLite 支持 左外连接(left outer join),但不支持 右外连接(right outer join)

全连接(full join)

全连接(full join)结合的左,右外连接的结果。连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果

代码语言:javascript
复制
select * from A full join B on A.id=B.id

MySQL不支持FULL JOIN

交叉连接(cross join)

用于生成两张表的笛卡尔结果集,结果集为左表中的每一行与右表中的所有行组合。

代码语言:javascript
复制
select * from A , B

select * from A cross join B

select * from A , B语句就是返回笛卡尔结果集,等同于 select * from A cross join B

隐式交叉连接与显式交叉连接

交叉连接有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。 例如:下面的语句1和语句2的结果是相同的。

语句1:隐式的交叉连接,没有CROSS JOIN。

代码语言:javascript
复制
SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O , CUSTOMERS C
WHERE O.ID=C.ID;

语句2:显式的交叉连接,使用CROSS JOIN。

代码语言:javascript
复制
SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME
FROM ORDERS O CROSS JOIN CUSTOMERS C
on O.ID=C.ID;

自连接

连接自身表,需配合别名使用,

代码语言:javascript
复制
select * from A a1, A a2 where a1.id=a2.id

自然连接(natural join)

自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。

如:A中a,b,c字段,B中有c,d字段,则select * from A natural join B 相当于select A.a,A.b,A.c,B.d from A.c = B.c

代码语言:javascript
复制
select * from A natural join B
select A.a,A.b,A.c,B.d from A.c = B.c
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内连接(inner join)
  • 外连接(outer join)
    • 左外连接
      • 右外连接
      • 全连接(full join)
      • 交叉连接(cross join)
        • 隐式交叉连接与显式交叉连接
        • 自连接
        • 自然连接(natural join)
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档