MySQL中的交叉连接、内连接、外连接

MySQL中的交叉连接、内连接、外连接,第1张

学生student表:

课程course表:

交叉连接:

结果为两张表的笛卡尔积:

内连接(inner join ,inner 可以省略)

显示内连接和隐示内连接获得的查询结果是一样的,都是A表和B表的交集(例:A.id = B.id),但是只能查到有关系的信息,如果A表的一条数据的与B表关联的字段没有对应的信息(如:A.id = null),即:这条数据在B表中没有对应的信息,则无法获得。

外连接(outer join,outer可以省略)

左外连接获得的查询结果是左边的表A的全部信息和A,B两张表的交集,左边A表的全部包含A表中在B表中没有对应关系的信息。

右外连接获得的查询结果是右边的表B的全部信息和A,B两张表的交集,右边B表的全部包含B表中在A表中没有对应关系的信息。

LEFT JOIN是LEFT OUTER JOIN的简写版

内连接(INNER JOIN) :只连接匹配的行 

左外连接( LEFT JOIN 或LEFT OUTER JOIN) :包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行

右外连接( RIGHT JOIN 或RIGHT OUTER JOIN) :包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行

全外连接( FULL OUTER JOIN ) :包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行         

交叉连接        生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配( 开发中避免使用 )

内连接inner join的举例说明 :

select * from  t_institution i

inner join  t_teller t

on  i.inst_no = t.inst_no

where i.inst_no = "5801"

其中inner可以省略

等价于早期的连接语法

select * from t_institution i, t_teller t

where i.inst_no = t.inst_no

and i.inst_no = "5801"

左外连接left outer join的举例说明:

select *  from  t_institution i

left outer join  t_teller t

on  i.inst_no = t.inst_no

其中outer可以省略

右外连接right outer join的举例说明:

select *  from  t_institution i

right outer join t_teller t

on  i.inst_no = t.inst_no

其中outer可以省略

全外连接full outer join的举例说明:

select *  from  t_institution i

full outer join  t_teller t

on  i.inst_no = t.inst_no


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5910872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存