• 基本SQL查询语句


    使用Emp表和Dept表完成下列练习

    Emp员工表

    empno

    ename

    job

    Mgr

    Hiredate

    Sal

    Comm

    Deptno

    员工号

    员工姓名

    工作

    上级编号

    受雇日期

    薪金

    佣金

    部门编号

    Dept表

    Deptno

    Dname

    Loc

    部门编号

    部门名称

    地点

    1.列出至少有一个员工的所有部门。

    2.列出薪金比“SMITH”多的所有员工。

    3.列出所有员工的姓名及其直接上级的姓名。

    4.列出受雇日期早于其直接上级的所有员工。

    5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

    6.列出所有“CLERK”(办事员)的姓名及其部门名称。

    7.列出最低薪金大于1500的各种工作。

    8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

    9.列出薪金高于公司平均薪金的所有员工。

    10.列出与“SCOTT”从事相同工作的所有员工。

    11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

    12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

    13.列出在每个部门工作的员工数量、平均工资和平均服务期限。

    14.列出所有员工的姓名、部门名称和工资。

    15.列出从事同一种工作但属于不同部门的员工的一种组合。

    16.列出所有部门的详细信息和部门人数。

    17.列出各种工作的最低工资。

    18.列出各个部门的MANAGER(经理)的最低薪金。

    19.列出所有员工的年工资,按年薪从低到高排序。

      1 1.
      2 select distinct dname
      3 from dept 
      4 where deptno in 
      5           (select distinct deptno 
      6            from emp);
      7 --要查部门编号如果存在于emp 表中,说明这个部门有员工。
      8 2.
      9 select ename,job,mgr,hiredate,sal
     10 from emp
     11 where sal>
     12         (select sal
     13          from emp
     14          where ename='SMITH');
     15 3.
     16 select e.ename, e.mgr , w.ename
     17 from emp e, emp w
     18 where e.mgr=w.empno;
     19 4.
     20 select e.ename, e.mgr , e.hiredate,w.ename,w.hiredate
     21 from emp e, emp w
     22 where e.mgr=w.empno
     23 and e.hiredate< w.hiredate;
     24 5.
     25 select e.ename,e.hiredate, d.dname,d.deptno
     26 from emp e, dept d
     27 where e.deptno (+)=d.deptno;
     28 --本例子使用的是外连接, 也可以用右连接。
     29 select e.ename,e.hiredate, d.dname,d.deptno
     30 from emp e right join dept d 
     31 on e.deptno=d.deptno;
     32 6.
     33 select e.ename,e.hiredate,e.job, d.dname,d.deptno
     34 from emp e, dept d
     35 where e.deptno =d.deptno
     36 and e.job=upper('clerk');
     37 7.
     38 select job, min(sal)
     39 from emp
     40 group by job
     41 having min(sal)>1500;
     42 8.
     43 select e.ename,d.dname
     44 from emp e,dept d
     45 where e.deptno=d.deptno
     46 and d.dname=upper('sales');
     47 --或者:
     48 select ename
     49 from emp 
     50 where deptno =
     51       (select deptno 
     52        from dept
     53        where dname=upper('SALES'));
     54 9.
     55 select ename, job, sal
     56 from emp
     57 where sal> 
     58         (select avg(sal)
     59          from emp );
     60 10.
     61 select ename, job
     62 from emp
     63 where job =
     64        (select job 
     65         from emp 
     66         where ename=upper('scott'));
     67 11.
     68 select ename, sal,job
     69 from emp
     70 where sal in
     71        (select sal
     72         from emp 
     73         where deptno=30);
     74 12.
     75 select ename, sal,job
     76 from emp
     77 where sal >all
     78        (select sal
     79         from emp 
     80         where deptno=30);
     81 --或者
     82 select ename ,sal 
     83 from emp 
     84 where sal>
     85        (select max(sal)
     86         from emp
     87         where deptno=30);
     88 13.
     89 select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate))
     90 from emp e, dept d
     91 where e.deptno(+)= d.deptno
     92 group by d.deptno,dname;
     93 --或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。
     94 select e.*,d.dname ,
     95 from (select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)) 
     96       from emp 
     97       group by deptno) e, dept d
     98 where e.deptno =d.deptno;
     99 14.
    100 select d.dname, e.ename, sal+nvl(comm,0)
    101 from emp e, dept d
    102 where d.deptno=e.deptno;
    103 15.
    104 select e.ename,e.job, e.deptno ,d.job, d.deptno
    105 from emp e, emp d
    106 where e.job=d.job and e.deptno<>d.deptno;
    107 16.
    108 select count(e.ename),d.dname
    109 from emp e, dept d
    110 where e.deptno(+)= d.deptno
    111 group by e.deptno,d.dname;
    112 --或者写成
    113 select d.deptno,e.*,d.dname 
    114 from (select deptno,count(ename) 
    115      from emp 
    116      group by deptno) e,dept d
    117 where e.deptno(+)= d.deptno;
    118 17.
    119 select job,min(sal+nvl(comm,0))from emp group by job;
    120 18.
    121 select deptno,min(sal) from emp where job=upper('manager')
    122 group by deptno ;
    123 19.
    124 select ename , (sal+nvl(comm,0))*12   yearsal
    125 from emp
    126 order by yearsal ;

     

     

     

     

     

     

  • 相关阅读:
    一个关于java线程的面试题
    【Feature】初探Feature
    Foreign Keys in the Entity Framework
    JS keycode
    SQLyog8.3 . 8.4 Enterprise/Ultimate crack
    Win7下使用toad连接oracle出现can't initialize OCI 1
    ADO 数据类型转换表
    简单Jscript(ASP)模版操作文件
    自适应宽度的左右结构DIV+CSS
    一个比较好用的 classic asp Jscript 框架 SmartAsp
  • 原文地址:https://www.cnblogs.com/nqdxt/p/11418929.html
Copyright © 2020-2023  润新知