Oracle学习笔记20150822分页查询sql语句分类和集合运算
来源:互联网 发布:linux系统命令 编辑:程序博客网 时间:2024/05/21 16:22
分页查询
MySQL中 select * from 表名 where 条件 limit 从第几条取,取几条.
sql server中select top 1 * from 表名 where id not in(select top 4 id from 表名 where 条件);作用是排除4条取四条,就是取出了5到8条.
Oracle中是三层过滤机制效率极高
例如select t2.* from (select t1.*,rownum rn from (select * from emp) t1 where rownum<=6) t2 where rn>=4;这个方法在百万级别都可以及时响应.
测试分页查询效率
模拟一个10w的表
(1)create table mytest as select empnno,ename,sal,comm,deptno from emp;
(2)自我复制insert into mytest (empno,ename,sal,comm,deptno) select empno,ename,sal,comm,deptno from mytest;(执行14次)
如果我们需要针对不同情况分页包括多表我们都在第一层处理(最内层).
20150818
(3)合并查询
union用于取两个结果集的并集,当使用该操作符时会自动去掉结果集中重复行.
select ename,sal,job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';
(4)union all 只是单纯的将两个结果集相加不去除重复行也不排序2015/8/18.
select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='MANAGER';
(5)intersect 取两个结果的交集.
*(6)minus 差集只显示第一个结果集减去与第二个结果集交集的部分.
(7)cube用法 select avg(sal),deptno,job from emp group by cube(deptno,job);显示按deptno分组,再显示按job分组,最后显示按deptno和job分组.
(8)Oracle表的内连接和外连接.
内连接就是利用where子句对两张表形成的笛卡尔集进行筛选,例如显示雇员信息和部门名称select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno;特殊写法select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno;
创建两张表
create table stu(id number,name varchar2(32));
insert into stu values(1,'jack');
insert into stu values(2,'tom');
insert into stu values(3,'kity');
insert into stu values(4,'none');
create table exam(id number,grade number);
insert into stu values(1,56);
insert into stu values(2,76);
insert into stu values(11,80);
内连接的特点是只有两张表都匹配这个条件才会被选中.
使用左外连让成绩为空的学生也显示出来.
select stu.name,stu.id,exam.grade from stu left join exam on stu.id=exam.id;等同于select stu.name,stu.id,exam.grade from stu, exam where stu.id=exam.id(+);
入股左表的记录没有和exam记录匹配也要被选中.
右外连同理
select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;等同于select stu.name,stu.id,exam.grade from stu, exam where stu.id(+)=exam.id;
完全外连不管匹不匹配都显示两张表全部内容,没有就显示空.
select stu.name,stu.id,exam.grade from stu full outer join exam on stu id=exam.id;
***一不小心我们就迎来了这个万众期待的用java代码实现对oracle的操作.
sql语句分类
dml语句(数据操作语句)[insert,update,delete]
ddl语句(数据定义语句)[create table,drop table]
dql语句(数据查询语句)[select]
dtl语句(数据控制语句)[commit,rollback]
MySQL中 select * from 表名 where 条件 limit 从第几条取,取几条.
sql server中select top 1 * from 表名 where id not in(select top 4 id from 表名 where 条件);作用是排除4条取四条,就是取出了5到8条.
Oracle中是三层过滤机制效率极高
例如select t2.* from (select t1.*,rownum rn from (select * from emp) t1 where rownum<=6) t2 where rn>=4;这个方法在百万级别都可以及时响应.
测试分页查询效率
模拟一个10w的表
(1)create table mytest as select empnno,ename,sal,comm,deptno from emp;
(2)自我复制insert into mytest (empno,ename,sal,comm,deptno) select empno,ename,sal,comm,deptno from mytest;(执行14次)
如果我们需要针对不同情况分页包括多表我们都在第一层处理(最内层).
20150818
(3)合并查询
union用于取两个结果集的并集,当使用该操作符时会自动去掉结果集中重复行.
select ename,sal,job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';
(4)union all 只是单纯的将两个结果集相加不去除重复行也不排序2015/8/18.
select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='MANAGER';
(5)intersect 取两个结果的交集.
*(6)minus 差集只显示第一个结果集减去与第二个结果集交集的部分.
(7)cube用法 select avg(sal),deptno,job from emp group by cube(deptno,job);显示按deptno分组,再显示按job分组,最后显示按deptno和job分组.
(8)Oracle表的内连接和外连接.
内连接就是利用where子句对两张表形成的笛卡尔集进行筛选,例如显示雇员信息和部门名称select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno;特殊写法select emp.ename,dept.dname from emp inner join dept on emp.deptno=dept.deptno;
创建两张表
create table stu(id number,name varchar2(32));
insert into stu values(1,'jack');
insert into stu values(2,'tom');
insert into stu values(3,'kity');
insert into stu values(4,'none');
create table exam(id number,grade number);
insert into stu values(1,56);
insert into stu values(2,76);
insert into stu values(11,80);
内连接的特点是只有两张表都匹配这个条件才会被选中.
使用左外连让成绩为空的学生也显示出来.
select stu.name,stu.id,exam.grade from stu left join exam on stu.id=exam.id;等同于select stu.name,stu.id,exam.grade from stu, exam where stu.id=exam.id(+);
入股左表的记录没有和exam记录匹配也要被选中.
右外连同理
select stu.name,stu.id,exam.grade from stu right join exam on stu.id=exam.id;等同于select stu.name,stu.id,exam.grade from stu, exam where stu.id(+)=exam.id;
完全外连不管匹不匹配都显示两张表全部内容,没有就显示空.
select stu.name,stu.id,exam.grade from stu full outer join exam on stu id=exam.id;
***一不小心我们就迎来了这个万众期待的用java代码实现对oracle的操作.
sql语句分类
dml语句(数据操作语句)[insert,update,delete]
ddl语句(数据定义语句)[create table,drop table]
dql语句(数据查询语句)[select]
dtl语句(数据控制语句)[commit,rollback]
0 0
- Oracle学习笔记20150822分页查询sql语句分类和集合运算
- Oracle学习笔记 -- day05 多表查询、连接查询、子查询、分页、行转列、集合运算
- sql server2005和oracle分页查询语句
- Oracle和MySQL分页查询SQL语句
- 【Oracle学习笔记】SQL语句分类
- ORACLE分页查询SQL语句
- oracle 查询分页sql语句
- Oracle分页查询sql语句
- oracle 分页查询sql语句
- Oracle 10g SQL分页查询语句和效率分析
- MySQL、Oracle和SQL Server的分页查询语句
- oracle 分页查询和sql server 分页查询 的sql语句
- oracle 多表查询,子查询,集合运算,分页查询
- 【oracle学习】3.子查询和集合运算练习
- oracle,sqlserver分页查询sql语句
- Oracle 分页查询的 SQL 语句
- oracle分页查询sql原理与语句
- Oracle 分页查询的 SQL 语句
- xcode修改代码目录结构出现clang:error:nosuchfileordirectory解决方法
- 青蛙的约会(扩展欧几里得模板题(模板已升级))
- hibernate3第三章之关联映射
- 深入理解PHP原理之错误抑制与内嵌HTML
- ARM处理器寄存器
- Oracle学习笔记20150822分页查询sql语句分类和集合运算
- leetcode263_264:Ugly Number & Ugly Number II
- Cocos2d-x 创建精灵的五种方法
- 腾讯微博分享的时候,无法进行授权。
- django学习(1)编写技巧
- hdoj 1257 最少拦截系统【贪心】
- adaptiveThreshold函数
- Java中的自增操作符与中间缓存变量机制
- 153Sum