图文并茂的带你理解 SQL--内部连接/左连接/右连接/全连接/交叉连接

友情提示:不同的SQL支持的连接方式是不同的,就像SQL server 和MySQL支持的部分就是不同的。
但连接的原理都是一样的,大家可以根据自己使用的来理解需要的部分,以下是博主根据各种SQL的连接原理的解释以及个人作图,供参考~
………………………………………………………………………………

内部连接–join/inner join

只取A&B连接表中共同的部分,结果表中删除了连接表没有匹配行的所有行

SELECT fieldlist
FROM table1 [INNER] JOIN table2
ON table1.column=table2.column

NJ

左连接–left join

保留A&B连接表左表中的所有行,如果左表的某一行在右表中没有匹配的行,则关联的结果表中,来自右表的所有列表均为NULL

SELECT fieldlist
FROM table1 left JOIN table2
ON table1.column=table2.column

LJ

右连接–right join

保留A&B连接表右表中的所有行,如果右表的某一行在左表中没有匹配的行,则关联的结果表中,来自左表的所有列表均为NULL

SELECT fieldlist
FROM table1 right JOIN table2
ON table1.column=table2.column

RJ

完整/全连接–fulljoin

保留A&B连接表中的所有行,当某一行在另一个表中没有匹配行,则按照NULL值填充返回

SELECT fieldlist
FROM table1 full JOIN table2
ON table1.column=table2.column

FJ

交叉连接–cross join

在没有WHERE子句的交叉连接将产生连接所涉及的表的笛卡尔积。
第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。

交叉连接中的列=原表中列数量的总和(相加)
交叉连接表中的行=原表中的行数的积(相乘)

SELECT fieldlist
FROM table1 cross JOIN table2

CJ

连接多表

where 子句连接

SELECT fieldlist
FROM table1,table2,table3……
where table1.column=table2.column 
and table2.column=table3.column and……

from子句连接

SELECT fieldlist
FROM table1
join table2
join table3……
on table1.column=table2.column
and table2.column=table3.column
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值