如何學好java

          如何學好java,其實很簡單,只要用心體會,慢慢積累!
          posts - 106, comments - 7, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          oracle的常用查詢操作

          Posted on 2011-05-28 16:33 哈希 閱讀(175) 評論(0)  編輯  收藏 所屬分類: sql 總結
          1.列出至少有一個員工的所有部門。(兩個表聯合查詢,及group by...having的用法)
          select dname from dept where deptno in(select deptno from emp group by deptno having count(*)>1);

          2.列出薪金比“SMITH”多的所有員工。(經典的自連接查詢)
          select ename from emp where sal>(select sal from emp where ename like'SMITH');

          3.列出所有員工的姓名及其直接上級的姓名。(多次對自己查詢,為表的取個別名,內部查詢可以像對象一樣引用外部的對象的字段,這里引用與編程中的作用域相似,即與{}類比)

          select ename,(select ename from emp where empno in(a.mgr)) from emp a ;

          4.列出受雇日期早于其直接上級的所有員工。(同上,日期可直接拿來比較)

          select ename from emp a where HIREDATE<(select HIREDATE from emp where empno in(a.mgr));

          5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門(以emp表為主,左連接查詢)

          select dname,emp.* from dept left join emp on dept.deptno=emp.deptno;

          6.列出所有“CLERK”(辦事員)的姓名及其部門名稱。(域,注意())

          select ename,(select dname from dept where deptno in(a.deptno)) as dname from emp a where JOB like'CLERK';

          7.列出最低薪金大于1500的各種工作。
          select job from emp where sal>1500;

          8.列出在部門“SALES”(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。(經典的兩個表連接)

          select ename from emp where deptno=(select deptno from dept where dname like'SALES');

          9.列出薪金高于公司平均薪金的所有員工。(反復查自己)

          select ename from emp where sal>( select avg( sal) from emp);

          10.列出與“SCOTT”從事相同工作的所有員工。(排除自己)

          select ename from emp where job in(select job from emp where ename like'SCOTT') and ename!='SCOTT' ;

          11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。(any的用法,且排擠)

          select ename,sal from emp where sal=any(select sal from emp wheredeptno=30) and deptno!=30;

          12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。(max的用法)

          select sal,ename from emp where sal>(select max(sal) from emp where deptno=30);


          13.列出在每個(每個是關鍵字,對此group by)部門工作的員工數量、平均工資和平均服務期限。(經典的group by用法)

          select deptno,count(*),avg(a.sal),avg(sysdate-HIREDATE) from emp a group by deptno;

          14.列出所有員工的姓名、部門名稱和工資.(經典的兩個表的連接查詢,用具體的名稱替換一個表中的主鍵的id (解決很多人在實際運用中會遇到的不能綁定多列的問題),也可用where來查詢 ,與題5比較)

          select ename,sal,(select dname from dept a where a.deptno=b.deptno)as dname from emp b;

          15.列出所有部門的詳細信息和部門人數。(因為是*,將顯示dept和后面臨時表b的全部字段(注意:不只是dept的字段,注意*號))

          select * from dept a left join (select deptno,count(*) from emp group by deptno) b on a.deptno=b.deptno ;

          16.列出各種(與每個同義(參看題13))工作的最低工資。

          select job,min(sal) from emp group by job ;


          17.列出各個部門的MANAGER(經理,經理唯一,不用group by)的最低薪金。

          select min(sal) from emp where job like'MANAGER';(因為MANAGER是值不是字段,所以不能用小寫)

          18.列出所有員工的年工資,按年薪從低到高排序。(nvl:空轉化函數)

          select ename,sal+nvl(comm,0) as sal from emp order by sal ;
          主站蜘蛛池模板: 南投县| 昌吉市| 新野县| 彝良县| 兴城市| 格尔木市| 远安县| 凤山县| 昌黎县| 甘南县| 南丰县| 青州市| 齐河县| 洪江市| 鄂州市| 长垣县| 靖宇县| 敖汉旗| 大宁县| 叶城县| 东方市| 海城市| 永定县| 灵丘县| 深水埗区| 封开县| 昌图县| 秦安县| 新田县| 鄂尔多斯市| 磴口县| 奉新县| 镇安县| 赞皇县| 丰城市| 夏邑县| 宁乡县| 东明县| 邵东县| 许昌市| 鄱阳县|