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;