oracle复杂查询
*在from子句中使用子查询
.显示高于自己部门平均工资的员工的信息。//1、查询出各个部门的平均工资和部门号
select deptno ,avg(sal) mysal from emp group by deptno;
//2、把上面的查询看作是一张子表a1,再结合emp表来进行多表查询
select a2.ename, a2.sal,a2.deptno, a1.mysal from emp a2,(select deptno ,avg(sal) mysal from
emp group by deptno) a1 where a2.deptno = a1.deptno and a2.sal > a1.avg(sal);
注意:oracle 中给列取别名可以用as,但是给表取别名就不行了。
*分页查询
oracle分页一共有三种方式。其中一种是 rownum分页
.查询分页中序号是4~9 的员工的信息,工资按降序来显示。
步骤:
//1、从emp表查询所有信息,工资按降序来显示
select ename, sal from emp order by sal desc;
//2、分页显示序号 <=9 的员工信息
select a1.*,rownum rn from (select ename,sal from emp order by sal desc) a1 where rownum <=9;
//3、从分页表中显示 >=4 的员工信息
select * from (select a1.*, rownum rn from (select ename,sal from emp order by sal desc) a1
where rownum <=9) where rn >=4;
//这里不知道为什么 最后的‘where rn >= 4’中的rn不能改成rownum,说不清楚了。
*用查询结果创建新表
用这个命令可以快捷地创建一个表create table mytable (id,name,sal,job,deptno) as select empno,ename,sal,job,deptno from emp;
这个可以创建了表,同时新表里面也已经有了原来表的数据,可以用来做导出表和在测试的时候不想对原
来的表修改删除什么的,也可以先导出来在上面做测试。
*合并查询
比较少用
二、创建数据库
两种方法:1)通过oracle提供的向导工具
向导工具:oracle Database Configuration Assistant可以用来创建、删除、配置管理数据库。