SQL标准中 join的类型
1、内连接 (INNER)
2、全外连接(FULL OUTER)
JOIN 3、左外连接(LEFT OUTER)
4、右外连接 (RIGHT OUTER)
5、交叉连接 (CROSS)
首先准备两张表 西天取经四人组 和 悟空的朋友们
1、INNER JOIN (内连接)
内连接基于连接谓词 将两张表的列组合到一起,产生新的结果表
执行:select * from fourmangroup a inner join wukongFriends b on a.user_name=b.user_name
结果:
2、LEFT OUTER JOIN (左外连接)
查询取经四人组中哪些人不是悟空的结拜兄弟
执行:select * from fourmangroup a left join wukongFriends b on a.user_name=b.user_name
结果:查出A表中所有数据,并且与B表没有关联的项将被置为空
3、RIGHT OUTER JOIN(右外连接)
与左外连接正好相反 ,结果会保留b表中的中的所有数据 ,和a表没有关联的项将被置为空
执行:
4、FULL JOIN(全连接)
查询出A表和B表中所有的数据,或查询出A表和B表所有的数据并将重复部分给过滤掉。
注意:在mysql中默认是不支持FULL JOIN的 会报出1604的错误
转化思想:左连接的结果+右连接 =全连接
left join 。。。。。。 uinon all .... right join ....
执行:select * from fourmangroup a left join wukongFriends b on a.user_name=b.user_name
union all
select * from fourmangroup a right join wukongFriends b on a.user_name=b.user_name where b.user_name is not null
结果:
5、Cross JOIN(交叉连接)
又称笛卡尔连接或叉乘,即A表2条记录,B表3条记录,则结果为2*3 6条记录
执行:select * from fourmangroup a cross join wukongFriends b
结果: