内连接(inner_cross_join)
INNER_JOIN :
内连接即关联多张表时根据连接条件筛选符合条件的数据(书写时可以省略inner关键字)
外连接(outer_join)
在外连接中又分为三类,主要有左外连接(left_outer_join)、右外连接(right_outer_join)、全外连接(full_outer_join):
LEFT_OUTER_JOIN/LEFT_JOIN:
左外连接在多表关联时根据关联条件匹配符合条件的数据,左表的数据会全匹配,而在右表中无法匹配的数据则显示NULL
RIGHT_OUTER_JOIN/RIGHT_JOIN:
右外连接与左外连接相反,即右表数据全匹配,左表数据无法匹配则为NULL
FULL_OUTER_JOIN/FULL_JOIN:
全外连接则显示所有的不管是否能关联上的数据,没匹配上的为NULL
除此之外外连接还可以用(+)来表示
select ename,sal,dname from emp a left join dept b on a.deptno=b.deptno;
等价于
select ename,sal,dname from emp a,dept b where a.deptno=b.deptno(+);
自连接:
自连接即将单一的表用别名区别当作两张表来关联
NATURAL JOIN:
自然连接是一种特殊的等值连接,它会删除关联表的重复列
CROSS_JOIN:
交叉连接,连接生成两张表的笛卡儿积。返回的记录数等于两张表相乘,将两张表的数据相互连接。
USING子句
- USING子句只能用于等值连接
- USING要求关联字段名相同
- USING和natural join冲突