-
inner join
SELECT column_name(s)
FROM table1
[INNER] JOIN table2 ON table1.column_name = table2.column_name;
结果为: table 1和table 2中都有的数据
-
left outer join
SELECT column_name(s)
FROM table_name1
LEFT [OUTER] JOIN table_name2
ON table_name1.column_name=table_name2.column_name
结果: table1 中的全部,table 2中没有的补null
-
right outer jion
SELECT column_name(s)
FROM table_name1
RIGHT [OUTER] JOIN table_name2
ON table_name1.column_name=table_name2.column_name
结果:table2 中的全部,table 1 补null
-
full outer join
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
结果:left join 和 right join 的并 ,两边都有补null
-
cross join
SELECT *
FROM table1
CROSS JOIN table2
等价于
select * from table1,table2
-
cross join 和full join 的区别
cross join 返回talbe1的行数*table2的行数
full join 返回max(table1的行数,tabel2的行数)
-
自然连接和内连接
自然连接是通过对参与表关系中所有同名的属性对取等(即相等比较)来完成的,故无须自己添加连接条件
内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)