【正文】
EPTNO 8002000 2001500030 5 1 20 2 3 10 1 2 select ,“8002000”,“20015000” from(select deptno,count(*)as “8002000” from emp where sal between 800 and 2000 group by deptno)t join(select deptno,count(*)as “20015000” from emp where sal between 2001 and 5000 group by deptno)t1 on = 第五篇:黑馬程序員c語言教程:Oracle指令總結(jié)一下select語法 select from where group by having order by執(zhí)行順序very important!首先執(zhí)行where語句將原有記錄過濾;第二執(zhí)行g(shù)roup by 進行分組;第三執(zhí)行having過濾分組;然后將select 中的字段值選出來;最后執(zhí)行order by 進行排序;/* 按照部門分組統(tǒng)計,求最高薪水,平均薪水 只有薪水是1200以上的才參與統(tǒng)計并且分組結(jié)果中只包括平均薪水在1500以上的部門 而且按照平均薪水倒敘排列 */ select max(sal),avg(sal)from emp where sal1200 group by deptno having avg(sal)1500 order by avg(sal)desc/* 把雇員按部門分組,求最高薪水,部門號,過濾掉名字中第二個字母是39。A39。的,要求分組后的平均薪水1500,按照部門編號倒序排列 */ select max(sal),deptno from emp where ename not like 39。_A%39。group by deptno having avg(sal)1500 order by deptno desc/* very very important!*/ select ename, deptno from emp。select deptno, dname from dept。老語法:等值連接:求員工姓名以及員工所在部門的名字同時顯示出來select ename,dname, from emp,dept where = select ename,dname, from emp e,dept d where = 非等值連接:要求每位雇員的薪水等級 select * from salgrade select ename,sal,grade,losal,hisal from emp,salgrade where sal =losal and sal =losal and sal 也可以同一個表做跨表連接:求每位員工的姓名,及其上級經(jīng)理的姓名select , from emp e1,emp e2 where = 新語法在SQL1992的語法規(guī)則中,語句過濾的條件和表連接的條件都被放在了where子句中,當(dāng)條件過多時,容易造成混淆,SQL1999修正了這個缺點,將連接條件和數(shù)據(jù)過濾條件區(qū)分開來,交叉連接結(jié)果會產(chǎn)生這兩張表的笛卡爾乘積select * from emp cross join dept要用deptno作為等值連接條件,我們可以這樣寫 select * from emp join dept using(deptno)select ename, dname from emp join dept using(deptno)。相當(dāng)于select ename, dname from emp join dept on = 也可以用于非等值連接求每位雇員的薪水等級select * from emp join salgrade on(sal =losal and sal多個join,where組合使用(求工作職位是’PRESIDENT’的雇員姓名,部門名稱和薪水等級時)select * from emp join dept on = join salgrade on(sal =losal and sal外連接取出表中連接不到一起的多余的數(shù)據(jù)沒有全內(nèi)連接,沒有右內(nèi)連接其中outer也可以省略,簡寫為left join , right join , full joinleft inner join可以縮寫成inner join 也可以縮寫成join,意思是左內(nèi)。update emp set deptno=20 where ename=39。SMITH39。mit。select * from emp。select * from dept。delete from dept where deptno=99。左內(nèi),從左往右找,匹配不上的記錄不顯示 select ename, from emp join dept on = 。select ename, from emp inner join dept on = 。沒有這種語法:select ename, from emp left inner join dept on = 。左外連接,從左往右找,匹配不上的記錄也顯示一行 select ename, from emp left /*outer*/ join dept on = 。右外連接,從右往左找,匹配不上的記錄,也顯示一行 select ename, from emp right /*outer*/ join dept on = 。沒有右內(nèi)連接:select ename, from emp right inner join dept on = 。全外連接 select ename, from emp full /*outer*/ join dept on = 。左外,右外的區(qū)別