A Inner join:返回所有符合条件的行,不包含不一致的行。
A.1 Natural Join:要求有同名同数据类型的列名,在使用的时候不能运用表的别名,可以连接多个表。
Select * from table_a natural join table_b;
A.2 Join using:有同名但数据类型不一致的列名,可将列名加在using后。也不能使用表的别名。
Select * from table_a join table_b using(column_1,column_2);
A.3 Join on:可以不同列名不同数据类型,可以使用表的别名。
Select * from table_a ta join table_b tb on ta.column_1=tb.column_2;
等同Select * from table_a ta join table_b tb where ta.column_1=tb.column_2;
A.4 Cross join:进行笛卡儿集的计算,表a有n行,表b有m行,结果返回m×n行。
Select * from table_a cross join table_b;
等同Select * from table_a ,table_b;
B Outer join:返回所有符合条件的行,包含不一致的行。
B.1 left outer join:将join左边不符合条件的行也一起查询出来。
Select * from table_a left join table_b using(column_1);
Select * from table_a ta left outer join table_b tb on ta.column_1=tb.column_2;
等同Select * from table_a ta ,table_b tb where ta.colume_1(+)=tb.cloumn_2;
B.2 right outer join:将join右边不符合条件的行也一起查询出来。
Select * from table_a right join table_b using(column_1);
Select * from table_a ta right outer join table_b tb on ta.column_1=tb.column_2;
等同Select * from table_a ta ,table_b tb where ta.colume_1=tb.cloumn_2(+);
B.3 full outer join:将join两边不符合条件的行也一起查询出来。
Select * from table_a ta full outer join table_b tb on ta.column_1=tb.column_2;
等同Select * from table_a ta ,table_b tb where ta.colume_1(+)=tb.cloumn_2 union Select * from table_a ta ,table_b tb where ta.colume_1=tb.cloumn_2(+);
C other join:
C.1 self-join:表自己做连接,由于需要写2个表的别名,因此不能用natural join和join using。
Select ta.* from table_a ta inner join table_a tb on ta.column_1=tb.cloumn_2;
等同Select ta.* from table_a ta, join table_a tb where ta.column_1=tb.cloumn_2;