select e.empno,e.ename,d.deptno,d.dname,d.loc
from emp e,dept d
where e.deptno(+)= d.deptno;(这为右连接,右连接是显示出左边没有的数据,右边唯有的部
门数据 40 部门) 需参考
左右连接的说明举例 在查询中,比如查询职位上级领导的时候,在查询出最高领导的时候
是不显示的最高领导本身,但加上左右连接以后也能显示出该信息
子查询
在一个查询的内部还包括另外一个查询,则此查询为子查询
例:查询工资大于 7654 的雇员信息
select sal from emp where empno = 7654;(先查询出 7654 的工资是多少,然后在进行子查询)
select * from emp where sal>(select sal from emp where empno = 7654);
例:查询出工资大于 7654 的雇员信息,并且工作于 7788 相同的雇员信息
第一步骤,先查询出 7654 的工资是多少:select sal from emp where empno = 7654;
第二步骤,查询出与 7788 相同工作雇员的信息:select job from emp where empno = 7788;
第三步骤,最后进行条件连接,sal > 7654 job = 7788 ;
第四步骤,进行编辑
select * from emp
where sal > (select sal from emp where empno = 7654)
and
job = (select job from emp where empno = 7788);
例:查出工资最低的雇员姓名,工作,工资
分析 查出工资最低用到的函数是 MIN
select min(sal) from emp;
select ename,job,sal from emp
where sal = (select min(sal) from emp);
查询出,部门名称,部门的员工数量,部门的平均工资,部门的最低收入雇员的姓名.
分析步骤:1
程序需要两张表关联:dept,emp
如果要想求出每个部门的员工数量,及平均工资,则肯定要使用分组统计,按 deptno 进行
分组,
select deptno,count(empno),avg(sal)
from emp
group by deptno;
分析步骤:2
但是如果要想查询部门的名称,则需要与 dept 表进行关联。(若是表关联必须消除笛卡
尔积)
select d.dname,ed.c,ed.a
from dept d,
(select deptno,count(empno) c,avg(sal) a