日期:2014-05-16  浏览次数:20628 次

Oracle 入门到精通Part 3-查询2

表查询(2)

使用逻辑操作符号
问题:查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J
SELECT * FROM emp WHERE (sal >500 or job = 'MANAGER') and ename LIKE 'J%';
?
使用order by 字句?? 默认asc
问题:如何按照工资的从低到高的顺序显示雇员的信息?
SELECT * FROM emp ORDER by sal;
问题:按照部门号升序而雇员的工资降序排列
SELECT * FROM emp ORDER by deptno, sal DESC;

使用列的别名排序

问题:按年薪排序
select ename, (sal+nvl(comm,0))*12 "
年薪" from emp order by "年薪" asc;
别名需要使用“”号圈中,英文不需要“”

?
分页查询
等学了子查询再说吧。。。。。。。。

Clear
清屏命令

oracle
表复杂查询
?
说明
在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

数据分组 ——maxmin avg sum count
问题:如何显示所有员工中最高工资和最低工资?
SELECT MAX(sal),min(sal) FROM emp e;
?????
最高工资那个人是谁?
错误写法:select ename, sal from emp where sal=max(sal);
正确写法:select ename, sal from emp where sal=(select max(sal) from emp);
注意:select ename, max(sal) from emp;这语句执行的时候会报错,说ORA-00937:非单组分组函数。因为max是分组函数,而ename不是分组函数.......
但是select min(sal), max(sal) from emp;这句是可以执行的。因为minmax都是分组函数,就是说:如果列里面有一个分组函数,其它的都必须是分组函数,否则就出错。这是语法规定的问题:如何显示所有员工的平均工资和工资总和?

问题:如何计算总共有多少员工问题:如何

?

扩展要求:
查询最高工资员工的名字,工作岗位
SELECT ename, job, sal FROM emp e where sal = (SELECT MAX(sal) FROM emp);
显示工资高于平均工资的员工信息