Oracle经典实例查询及详解(强烈推荐)
一:深入浅出子查询
1. 查询工资高于500或是岗位为manager的雇员的信息,同时还要满足他们的姓名首写字母为大写J:
select * from emp where (sal>500 or job='manager') and ename like 'J%';括号里满足至少满足一个,并且姓名首写字母为大写J。
2. 按工资由低到高的顺序显示员工信息:
select * from emp order by sal desc ;
注:desc高到低;asc 低到高,升序这是默认的。
3.按照部门号升序而雇员的工资降序排列。(知道某个部门最高工资的员工最低工资的员工是谁。)
select * from emp order by deptno,sal desc;(先按部门排再按工资排)
4.使用列的别名排序按升序显示员工年薪信息。
elect ename,(sal+nvl(comm,0))*12 年薪 from emp order by 年薪
5.使用子查询。(分组函数:max,min,avg,sum,count.)
select min(sal),max(sal)from emp //在这里查询的列都必须是分组函数。
6.显示工资最高的员工信息
(1)这里可以分两步走:先查询出来最高工资;select max(sal) from epm (2)select ename ,sal from emp where sal=(select max(sal) from epm);//select max(sal) from emp返回一个值。注:where 后的列如sal不能直接等于分组函数,Sal=max(sal)是错的。要解决此题就要用到子查询。
7.子查询(分步拆分思想):显示与smith同一部门的员工信息。