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对值的大小写是敏感的