oracle表复杂查询--多表查询
多表查询是指基于两个和两个以上的表或是视图的查询,在实际应用中,查询单个表可能不能满足你的要求,如显示sales部门位置和其员工的姓名,这种情况下需要使用到dept表和emp表。
|
? 显示雇员名、雇员工资及所在部门的名字【笛卡尔集】
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;