oracle表查询

  1、简单查询

    (1)查看表结构    desc  emp;

    (2)查询所有列           select * from dept;

    (3)查询指定列    select ename , sal , job, from emp;

        取消重复行    select distinct deptno, job from emp;

    (4)使用算术表达式  nvl和null

       (a)nvl(comm, 0)----如果该员工comm列中为空的,则以0计算;如果comm(奖金)不是空的,则以comm计算

           例如,公司员工的总薪水有工资和奖金,但其中有些人没奖金

           select sal*13+nvl(comm,0)*13"年薪",ename,comm from emp;

                    (b)null

           显示没有上级的员工的情况?

           错误写法:select * from emp where mgr=‘’;

           正确写法:select * from emp where mgr is null;

    (5)使用逻辑操作符号  order by和desc(按降序排列)

        按工资从低到高的顺序显示员工的信息

        select * from emp order by sal;

  2、oracle表复杂查询

    (1)分组函数----max,  min,  avg,  sum,  count

        (a)如果列里面有一个分组函数,其他的都必须是分组函数,否则出错

            例如,显示最高工资的员工信息

            错误写法:select ename, sal from emp where sal=mal(sal);

                正确写法:select ename, sal from emp where sal=(select max(sal) from emp);

        (b)group by 和 having

          分组查询的话,分组的字段deptno一定要出现在查询的列表中

          显示平均工资低于2000的部门号,最高工资及平均工资

          select avg(sal), max(sal), deptno from emp group by deptno having avg(sal)<2000;

原文地址:https://www.cnblogs.com/imdaizy/p/4503380.html