Oracle 多表查询

多表查询

1.1内连接
一般使用INNER JOIN关键字指定内连接,INNER可以省略,默认表示内连接。查询结果中只包含两表的公共字段值相等的行,列可以是两表中的任意列

1.2外连接查询
包括左外连接、右外连接、全外连接

(1)左外连接 LEFT JOIN
结果集中包括两表连接后满足ON后面指定的连接条件的行,还显示JOIN关键字左侧表中所有满足检索条件的行,如何左表的某行在右表中没有匹配行,则在结果中,右表的所有选择列均为NULL。

(2)右外连接 RIGHT JOIN
是左外连接的反向连接。

(3)完全外连接 FULL JOIN
完全外连接查询的结果集包括两表内连接的结果集和左表与右表中不满足条件的行。

  

 下面使用emp和dept表进行多表查询:

1 select ename,dname
2 from emp
3 where ename=SMITH

执行结果:

改成:

1 select ename,(select dname from dept where deptno=20) as 部门   
2 from emp
3 where ename=SMITH

若不知道SMITH在20号部门,则要改成

1 select ename,(select dname from dept where deptno=select deptno from emp where ename=SMITH)) as 部门   

执行结果:

 

 

多表查询

1、内连接
一般使用INNER JOIN关键字指定内连接,INNER可以省略,默认表示内连接。查询结果中只包含两表的公共字段值相等的行,列可以是两表中的任意列

1 select enme,dname
2 from emp,dept
3 where emp.deptmo=dept.deptno and emp.ename=SMITH

 2、外连接