oracle11g学习笔记(八)

一、oracle的分页

oracle的分页一共有三中方式(这里只有一种)

1.rownum 分页

select * from (select a.*,rownum rn from    (select * from emp) a   where rownum<=15 ) where rn>10;

这条语句是用来将11-15条记录提取出来,拆分这条语句

1.将所有想要的结果查询出来

select * from emp;

2.将上一步的结果作为一个视图,给每一条记录加上一个rn编号并将前15条记录查询出来.其中rownum为oracle的关键字,

且在第一次在查询字段中使用rownum时,如果有条件限制在where子句中也要用rownum,不可以用rn

select a.*,rownum rn from (select * from emp) a where rownum<=15;

3.将前15条数据作为一个视图,提取出11-15条

select * from (select a.*,rownum rn from (select * from emp) a where rownum<=15) where rn>10;

在java程序中只需要替换15和10这两个数字就可以实现分页了

二、用查询结果创建新表

这个命令是一种快捷的建表方法

create table mytable(id,name,sal,job,deptno) as select empno,ename,sal,job,deptno from emp;

三、合并查询

为了合并多个select语句的结果,可以使用集合操作符号,union,union all,intersect(交集),minus(差集)

(1)union

该操作符,用于取得两个结果集的并集,使用时自动去掉相同部分结果集

select ename,sal,job from emp where job='MANAGER' union select ename,sal,job from emp where sal>2500;

(2)union all

与union相似,但是不取消重复行,而且不排序

(3)intersect

取交集

(4)minus

取差集 只会显示存在第一个集合中,而不存在在第二个集合中的数据

集合操作要比and,or效率高很多

四、操作数据

使用特定的格式插入日期值

(1)使用to_date函数

?如何插入带有日期的表,并按照年月日格式插入

insert into emp values(9994,'hou','PRESIDENT',null,to_date('1990-10-10','YYYY-MM-DD'),800,1000,10);

使用to_date函数可以插入任意形式的日期

(2)使用子查询插入数据 一条insert语句可以插入大量的数据,当处理行迁移或者装载外部表的数据到数据库时, 可以使用子查询插入数据

insert into mytable(id,name,deptno) select empno,ename,deptno from emp where deptno=10;

(3)使用子查询更新数据 ?希望员工scott的岗位、工资、补助与SMITH一样

update emp set (job,sal,comm)= (select job,sal,comm from emp where ename='SMITH' ) where ename='SCOTT'; ename的值要用大写,oracle对值的大小写是敏感的

posted @ 2012-04-12 14:30  houjinxin  阅读(387)  评论(0编辑  收藏  举报