使用Oracle特有的查询语法, 可以达到事半功倍的效果
1. 树查询
create table tree (
id number(10) not null primary key,
name varchar2(100) not null,
super number(10) not null // 0 is root
);
-- 从子到父
select * from tree start with id = ? connect by id = prior super
-- 从父到子
select * from tree start with id = ? connect by prior id = suepr
-- 整棵树
select * from tree start with super = 0 connect by prior id = suepr
2. 分页查询
select * from (
select my_table.*, rownum my_rownum from (
select name, birthday from employee order by birthday
) my_table where rownum < 120
) where my_rownum >= 100;
3. 累加查询, 以scott.emp为例
select empno, ename, sal, sum(sal) over(order by empno) result from emp;
EMPNO ENAME SAL RESULT
---------- ---------- ---------- ----------
7369 SMITH 800 800
7499 ALLEN 1600 2400
7521 WARD 1250 3650
7566 JONES 2975 6625
7654 MARTIN 1250 7875
7698 BLAKE 2850 10725
7782 CLARK 2450 13175
7788 SCOTT 3000 16175
7839 KING 5000 21175
7844 TURNER 1500 22675
7876 ADAMS 1100 23775
7900 JAMES 950 24725
7902 FORD 3000 27725
7934 MILLER 1300 29025
4. 高级group by
select decode(grouping(deptno),1,'all deptno',deptno) deptno,
decode(grouping(job),1,'all job',job) job,
sum(sal) sal
from emp
group by ROLLUP(deptno,job);
DEPTNO JOB SAL
---------------------------------------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 all job 8750
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2975
20 all job 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 all job 9400
all deptno all job 29025
5. use hint
当多表连接很慢时,用ORDERED提示试试,也许会快很多
SELECT /**//*+ ORDERED */*
FROM a, b, c, d
WHERE
分享到:
相关推荐
- 索引:加快数据查询速度,有B树索引、位图索引等多种类型。 - 物理存储:包括段(Segment)、区(Extent)和块(Block),管理数据的物理分配和回收。 4. **安全性与权限管理** - 用户与角色:每个数据库用户...
6. **索引**:Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等,它们加速了数据查询速度。 7. **备份与恢复**:Oracle提供完整备份、增量备份、逻辑备份等多种备份策略,并有RMAN(恢复管理器)工具...
以下是对"Oracle高级查询技巧"的详细阐述。 一、子查询 子查询是嵌套在其他SQL语句中的查询,用于获取主查询所需的值。它可以作为SELECT、FROM或WHERE子句的一部分。例如,你可以使用子查询来找到某个部门薪水最高...
在Oracle数据库中,树结构查询是一种常见的数据操作方式,特别是在处理层次关系的数据时。Oracle提供了一种称为“连接查询”(Connect By)的特有语法,使得我们可以方便地对具有层级关系的数据进行检索。本资料...
- **高级查询**:包括联接(`JOIN`)、子查询(`SUBQUERY`)、分组(`GROUP BY`)、排序(`ORDER BY`)等更复杂的技术。 #### 六、Java操作Oracle - **JDBC连接**:使用Java JDBC驱动程序连接Oracle数据库,进行数据读写...
索引是提高查询速度的关键,Oracle支持B树索引、位图索引、函数索引等多种类型,创建索引使用CREATE INDEX语句。 14. **权限与角色** Oracle使用GRANT和REVOKE语句管理用户权限,角色是权限的集合,方便权限的...
调优是Oracle高级编程的重要部分,涵盖SQL调优、存储调优、内存调优和并发控制等多个方面。SQL调优主要通过优化查询结构、减少全表扫描、使用索引等方式实现。存储调优涉及到表空间、数据块、段和分区等概念,调整...
分区是Oracle数据库提供的一种高级存储策略,它将大表分解为逻辑上独立、物理上独立的部分,称为分区。这样做的主要目的是提高查询性能,简化管理和维护,以及增强数据的可用性。Oracle支持多种分区策略,如范围分区...
- **索引**:提高查询性能的关键,有B树、位图等多种类型。 - **约束**:包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY,用于数据完整性。 - **视图**:虚拟表,方便数据查询和安全控制。 - **同义词**:提供别名...
052作为Oracle OCP认证的一部分,通常涉及到Oracle数据库的深入操作和管理,包括性能优化、备份恢复、安全策略、数据库架构以及SQL高级特性等关键领域。以下是基于这个主题的详细知识点解释: 1. **SQL查询优化**:...
在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...
这份文档涵盖了从1996年到2013年的技术积累,由多位专家共同编写,旨在帮助开发者充分利用Oracle数据库的高级特性,尤其是对象关系模型。 文档的核心内容可能包括以下几个方面: 1. **对象关系特性**:Oracle...
Oracle高级SQL学习与练习涵盖了数据库编程中的一系列高级主题,旨在帮助数据库开发者和管理员提高解决复杂问题的能力。在Oracle数据库系统中,高级SQL技能是进行高效数据管理、查询优化和复杂数据处理的基础。 1. ...
PL/SQL是Oracle特有的过程化语言,结合了SQL的查询能力与高级编程语言的控制结构,常用于数据库应用程序开发。 三、表和索引 在Oracle 8i中,数据存储在表中,而索引则用于加速数据检索。表可以有多种分区策略,如...
通过"Oracle高级SQL培训与讲解"的学习,读者将掌握如何编写高效、复杂的SQL查询,更好地管理和优化Oracle数据库,提升数据库应用的性能和用户体验。这个教程会详细解析这些概念,并提供实例演示,帮助学习者深入理解...
Oracle支持决策树、随机森林和神经网络等算法。 2. **聚类(Clustering)**: 聚类是发现数据的自然群体或类别,无需预先设定类别。这有助于理解数据集中的结构和模式,常用于市场细分或用户行为分析。 3. **关联...
8. **索引(Indexes)**:提高数据查询效率的关键,Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引等。 9. **备份与恢复**:Oracle提供多种备份策略,如完整备份、增量备份、归档日志模式等,配合RMAN...
"Oracle高级用法"主要涵盖了数据库的优化、安全管理、备份恢复、性能监控和复杂SQL操作等核心内容。下面我们将深入探讨这些高级主题。 一、优化 Oracle数据库优化主要包括SQL优化和索引优化。SQL优化涉及到编写高效...