推荐:分析:内联、左外联、右外联、全连通、交叉连通的差异
本文详细分析介绍了内部链接、左外部链接、右外部链接、全连接、交叉连接的区别。 有需要的朋友参考下连接,分为内部连接、外部连接、交叉连接一、内部连接最常用的定义。 在两个表中只组合满足连接条件的行作为结果集。 内连接仅将两个表中匹配的行输出到结果集
1、内联接(典型的联接运算,使用=和这样的比较运算符)。 包括等效键和自然键。
内部联接使用比较运算符根据每个表中公共列的值匹配两个表中的行。 例如,检索students表和courses表中具有相同中学生标识号的所有行。
2、外结合。 外侧连接可以是左外侧连接、右外侧连接或完全外部连接。
在FROM子句中指定外部联接时,可以从以下一组关键字中指定:
1 )左连接或左输出连接
左外部联接的结果集不仅包含联接列匹配的行,还包含在LEFT OUTER子句中指定的左表中的所有行。 如果左侧表中的行中没有与右侧表匹配的行,则在相关结果集中,右侧表中所有选择列表中的行都为空。
2 ) RIGHT JOIN或RIGHT OUTER JOIN
右向外连接是左向外连接的反向连接。 返回右表中的所有行。 如果右表中的行中没有与左表匹配的行,则左表返回空值。
3 )全连接或全输出连接
完整的外部联接返回左表和右表中的所有行。 如果一行在另一个表中没有匹配的行,则另一个表的选择列表列包含空值。 如果表之间存在匹配行,则结果集中的整个行都将包含基表的数据值。
3、交叉耦合交叉耦合返回左表中的所有行,左表中的每行与右表中的所有行组合。 交叉耦合也称为笛卡尔乘积。
FROM子句中的表或视图可以通过内部联接或完全外部联接按任何顺序指定。 但是,在左侧或右侧通过向外合并指定表或视图时,表或视图的顺序很重要。 有关使用左侧或右侧的外侧联接放置表的详细信息,请参阅使用外侧联接。
示例:
------------- -请参阅
a表id name b表id job parent_id
一张3 1 23 1
2 zsdhlb 2 34 2
3王武334
a.id与parent_id有关
------------- -请参阅
1 )内部连接
select a.*,b.* fromainnerjoinbona.id=b.parent _ id
结果呢
一张3 1 23 1
2 zsdhlb 2 34 2
2 )左连接
select a.*,b.* fromaleftjoinbona.id=b.parent _ id
结果呢
一张3 1 23 1
2 zsdhlb 2 34 2
3王武空
3 )右连接
select a.*,b.* fromarightjoinbona.id=b.parent _ id
结果呢
一张3 1 23 1
2 zsdhlb 2 34 2
空3 34 4
4 )完全连接
select a.*,b.* fromafulljoinbona.id=b.parent _ id
结果呢
一张3 1 23 1
2 zsdhlb 2 34 2
空3 34 4
3王武空
------------- -请参阅
例如,以下语句1和语句2的结果相同。
语句1 :隐式交叉连接,无CROSS JOIN。 SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
来自订单o,客户c
WHERE O.ID=1;