1. 使用逻辑操作符进行查询
Or \and
查询出工资大于500,或者工作为manager并且名字的首字母为J的员工
Select *from emp where (sal>500 or job=manager) and enname like ‘J%’;(大小写的区别)
2. order by
工资从低到高的顺序排列出员工的信息
Select * from emp order by sal desc ; 默认是从低到高 (asc) 高到低 desc
部门编号从升序,雇员的工资降序。
Select *from emp order by depot asc , sal desc;
3.采用列名查询
查询一下全部雇员的年薪是多少并按照降序排列
select ename ,(sal+nvl(comm,0))*12 "年薪总共" from emp order by "年薪总共";// 列名排序
4.分页查询(子查询先学习)
5.复杂的查询
在日常生活中经常用到的查询都是一些复杂的查询,现在学习oracle 的复杂查询。
数组的分组,max(最大) 、min(最小)、avg(平均)、 sum(求和) 、count(计数)
所有员工的最高工资和最低工资。
select max(sal),min(sal)from emp;
薪资最高员工的名字(子查询)
select ename,sal from emp where sal=(select max(sal) from emp);
薪资最高员工的名字和工作
select ename, job,sal from emp where sal=(select max(sal) from emp);
计算共有多少个员工
select count (ename) “共有员工”from emp ;
计算员工的平均工资和工资总和。
select sum(sal)"总和",avg(sal)"平均" from emp;
显示工资最高的员工的姓名,和工作岗位。
select ename,job,sal from emp where sal=(select max(sal) from emp);
显示工资高于平均工资的员工信息。
select *from emp where sal>(select avg(sal) from emp );
显示工资低于平均工资的员工信息。
select *from emp where sal<(select avg(sal) from emp );
group by和 having
group by 对查询的数据分组统计。
Having 用于限制分组数据的统计。
1. 查询平均工资,并显示最大工资,显示最大工资在那个部门。
select avg(sal),max(sal),deptno from emp group by deptno;//按照那个分组,这个字段不许放到前面。
显示每个部门的平均工资和最低工资。
Select avg(sal),min(sal),deptno from emp group by deptno;
2. 显示每个部门的每种岗位的平均工资,最高工资和大于平均工资的人。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000;
总结
1分组函数只能出现在列表中,having 、order by 子句中。
2如果在查询语句中包含group by ,having ,order by 那么他们的顺序是group by \having\order by 顺序。必须的。
显示每个部门的每种岗位的平均工资,最高工资和大于平均工资的人。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000 order by deptno desc;\\降序排列。
3. 在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by 中,否则就会出错。
select avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000 order by deptno desc;