-
1核心:通過別名,將同一張表視為多張表?
2select e.ename 員工姓名,b.ename 老板姓名 from emp e,emp b
?where e.mgr=b.empno;
查看全部 -
1外連接就是為了解決:通過外鏈接,把對于連接條件上不成立的記錄,仍然包含在最后的結果中,
2 左外鏈接:當連接條件不成立的時候,等號左邊的表仍然被包含? where e.deptno=d.deptno(+)?
3右外鏈接:當連接條件不成立的時候,等號右邊的表仍然被包含 ? ? ?where e.deptno(+)=d.deptno
查看全部 -
select e.ename,e.sal,s.grade
from emp e,salgrade s?
where e.sal between s.losal and s.hisal
1超過一張表就屬于多表查詢
2多表查詢基于笛卡爾集
3.加上自己的篩選條件(等于連接 不等于連接 外連接 自連接)
查看全部 -
1.笛卡爾集:emp*dept.列數相加,行數相乘
2.通過連接條件,避免使用笛卡爾全集
查看全部 -
groupby語句增強
?select deptno,job,sum(sal)
?from emp group by rollup(deptno,job);
group by rollup分組等價于 group by deptno +group by job+null group by null
工作中用法:
select deptno,job,count(EMPNO)? from emp? group by? rollup(deptno,job)
分別按照部門,職位統計,只按照部門統計,全數統計
查看全部 -
select max (avg(sal))
from emp
group by deptno;
查看全部 -
having與where區別
查看全部 -
from 后面可以是表,也可以是查詢語句
查看全部 -
使用子查詢,where ,having,select(單行子查詢,返回一個結果),from(查詢語句,看成是一張表),group by 不能使用子查詢
查看全部 -
select sum(sal) ,
sum(decode(to_char(hiredate,'YYYY'),'1980',1,0)) "1980" ?,
sum(decode(to_char(hiredate,'YYYY'),'1981',1,0)) "1981" ,
sum(decode(to_char(hiredate,'YYYY'),'1982',1,0)) "1982" ,
sum(decode(to_char(hiredate,'YYYY'),'1987',1,0)) "1987"?
from emp;
查看全部 -
執行計劃:explain plan from select .......
查看執行計劃:select * from table(dbms_xplan.display);
select empno,empname,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal from emp e
where ?sal>(select avg(sal) from emp where e.deptno=deptno)
查看全部 -
select e.depno,e.empno,e.empname,f.avgsal
from emp e,(select depno,avg(sal) avgsal from emp group by depno) f
where e.depno=f.depno and e.sal>f.avgsal
查看全部 -
select r,empno,empname,sal from?
(select rownum r , empno,empname,sal
from (select rownum,empno,empname,sal from emp where ?order by sal desc ) a1 ?where ?rownum<=8) a2
where r>=5
查看全部 -
group by:所有未包含在組函數中的列必須包含在group by子句中
group by:只能使用having進行條件篩選
break on deptno skip 2:相同的部門號只顯示一次,不同的部門號跳過兩行(間隔兩行)
set pagesize:設置查詢頁面的大小
group by:主要應用于報表
where:子句中不能使用組函數
?能使用where語句的不使用having
查看全部 -
? 查詢工資大于部門平均工資的員工
--相關子查詢:
select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsalfrom emp e
where sal>(select avg(sal) from emp where deptno=e.deptno)
--多表查詢:
select e.empno,e.ename,e.sal,d.avgsal
from emp e,(select deptno,avg(sal) avgsal from emp group by deptno) d
where e.deptno=d.deptno and e.sal>d.avgsal
--比較解釋計劃窗口 的相關子查詢比多表查詢占用cpu少
查看全部
舉報