kosam

任重道远 毋忘奋斗

导航

oracle 11g 学习笔记 10_27

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   
可以用来创建、删除、配置管理数据库。  

2)手工创建

posted on 2012-10-27 15:24  kosam  阅读(147)  评论(0编辑  收藏  举报