1.Left Outer Join左外连接
设数据库中有A、B两表,A和B有共同的交集C,当我们想查询出A的所有记录时我们可以使用左外连接:
select <select_list> from TableA A Left Join TableB B on A.key=B.key
当我们只想查询出只有A表才有的数据而B表没有的数据时,即去掉集合C
select <select_list> from TableA A Left Join TableB B on A.key=B.key where B.key is NULL
2.右外连接
右外连接与左连接是类似的,只是我们把哪个表看为基础表的区别而已。左外连接将A作为基础表,右连接我们把B作为基础表。在A、B表中,查询出B表的所有记录
select <select_list> from TableA A Right Join TableB B on A.key=B.key
只查询出B表存在而A表没有的记录
select <select_list> from TableA A Right Join TableB B on A.key=B.key where B.key is NULL
3.全连接
当需要查询出A、B两表的所有数据时可以使用全链接(Full Join)但在Mysql中是不支持Full Join的。但我们可以通过左连接+右连接的联合达到Full Join的效果,即:
select <select_list> from TableA A Left Join TableB B on A.key=B.key UNION ALL select <select_list> from TableA A Right Join TableB B on A.key=B.key
4.交叉连接
交叉连接(cross join)又称为笛卡儿积连接(cartesian join)或差乘,如果A和B是两个集合,它们的交叉连接记为:A x B。即A表中的一条记录与B表中每一条记录进行匹配,产生一个新的结果集。如果A中有4条记录,B中有5条记录,则会产生20条结果
select <select_listA>,<select_listB> from TableA A CROSS JOIN TableB B