oracle表复杂查询--多表查询

多表查询是指基于两个和两个以上的表或是视图的查询,在实际应用中,查询单个表可能不能满足你的要求,如显示sales部门位置和其员工的姓名,这种情况下需要使用到dept表和emp表。

 

 
 

select * from emp,deptno;

从dept表中选出第一条记录,然后与emp表的每一条记录进行匹配,14*5=56。

 

 

 

 

 

 

?       显示雇员名、雇员工资及所在部门的名字【笛卡尔集】

select ename,sal,dept.dname from emp,dept where emp.deptno=dept.deptno;

【笛卡尔集】在多表查询的时候,如果不带任何条件,则会出现笛卡尔集,怎样避免笛卡尔集?规定:多表查询的条件是至少不能少于表的个数-1

?       如何显示部门号为10的部门名、员工名和工资

select dept.dname,ename,sal from emp,dept where emp.deptno=dept.deptno and emp.deptno=10;

?       显示各个员工的姓名、工资,及其工资的级别

select ename,sal,salgrade.grade from emp,salgrade where emp.sal between salgrade.losal and salgrade.hisal;

在多表查询的时候,需不需要加表名:如果两个表或多个表的列同名,则需要加表名区分,如果不同名,则可以不加,建议都加上表名,可读性较好。

注意:建议大家,在进行多表查询的时候,使用别名,这样方便。

扩展要求:

?       显示雇员名、雇员工资及所在部门的名字,并按部门排序。

select ename,sal,dept.dname from emp,dept where emp.deptno=dept.deptno order by dept.dname;

 

posted @ 2019-07-01 14:04  樊伟胜  阅读(291)  评论(0编辑  收藏  举报