`

Oracle高级查询 --树查询

阅读更多

Oracle高级查询

使用Oracle特有的查询语法, 可以达到事半功倍的效果

1. 树查询
create table tree (
    id 
number(10not null primary key,
    name 
varchar2(100not null,
    super 
number(10not 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  
分享到:
评论

相关推荐

    Oracle课件---个人感觉不错,是我们老师做的

    - 索引:加快数据查询速度,有B树索引、位图索引等多种类型。 - 物理存储:包括段(Segment)、区(Extent)和块(Block),管理数据的物理分配和回收。 4. **安全性与权限管理** - 用户与角色:每个数据库用户...

    oracle---网络搜集

    6. **索引**:Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等,它们加速了数据查询速度。 7. **备份与恢复**:Oracle提供完整备份、增量备份、逻辑备份等多种备份策略,并有RMAN(恢复管理器)工具...

    oracle高级查询技巧

    以下是对"Oracle高级查询技巧"的详细阐述。 一、子查询 子查询是嵌套在其他SQL语句中的查询,用于获取主查询所需的值。它可以作为SELECT、FROM或WHERE子句的一部分。例如,你可以使用子查询来找到某个部门薪水最高...

    oracle-tree-sql.rar_oracle

    在Oracle数据库中,树结构查询是一种常见的数据操作方式,特别是在处理层次关系的数据时。Oracle提供了一种称为“连接查询”(Connect By)的特有语法,使得我们可以方便地对具有层级关系的数据进行检索。本资料...

    oracle实用教程-韩顺平

    - **高级查询**:包括联接(`JOIN`)、子查询(`SUBQUERY`)、分组(`GROUP BY`)、排序(`ORDER BY`)等更复杂的技术。 #### 六、Java操作Oracle - **JDBC连接**:使用Java JDBC驱动程序连接Oracle数据库,进行数据读写...

    Oracle 基础知识 -大全- 原创整理.pdf

    索引是提高查询速度的关键,Oracle支持B树索引、位图索引、函数索引等多种类型,创建索引使用CREATE INDEX语句。 14. **权限与角色** Oracle使用GRANT和REVOKE语句管理用户权限,角色是权限的集合,方便权限的...

    Oracle 高级编程书籍

    调优是Oracle高级编程的重要部分,涵盖SQL调优、存储调优、内存调优和并发控制等多个方面。SQL调优主要通过优化查询结构、减少全表扫描、使用索引等方式实现。存储调优涉及到表空间、数据块、段和分区等概念,调整...

    Oracle-index-table.rar_Table

    分区是Oracle数据库提供的一种高级存储策略,它将大表分解为逻辑上独立、物理上独立的部分,称为分区。这样做的主要目的是提高查询性能,简化管理和维护,以及增强数据的可用性。Oracle支持多种分区策略,如范围分区...

    Oracle11gOCP-051干货笔记

    - **索引**:提高查询性能的关键,有B树、位图等多种类型。 - **约束**:包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY,用于数据完整性。 - **视图**:虚拟表,方便数据查询和安全控制。 - **同义词**:提供别名...

    oracle-ocp-052

    052作为Oracle OCP认证的一部分,通常涉及到Oracle数据库的深入操作和管理,包括性能优化、备份恢复、安全策略、数据库架构以及SQL高级特性等关键领域。以下是基于这个主题的详细知识点解释: 1. **SQL查询优化**:...

    ibatis下oracle树查询

    在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...

    Oracle Database Object-Relational Developer's Guide 11g Release

    这份文档涵盖了从1996年到2013年的技术积累,由多位专家共同编写,旨在帮助开发者充分利用Oracle数据库的高级特性,尤其是对象关系模型。 文档的核心内容可能包括以下几个方面: 1. **对象关系特性**:Oracle...

    Oracle高级sql学习与练习

    Oracle高级SQL学习与练习涵盖了数据库编程中的一系列高级主题,旨在帮助数据库开发者和管理员提高解决复杂问题的能力。在Oracle数据库系统中,高级SQL技能是进行高效数据管理、查询优化和复杂数据处理的基础。 1. ...

    ORACLE_8-8I开发使用手册

    PL/SQL是Oracle特有的过程化语言,结合了SQL的查询能力与高级编程语言的控制结构,常用于数据库应用程序开发。 三、表和索引 在Oracle 8i中,数据存储在表中,而索引则用于加速数据检索。表可以有多种分区策略,如...

    Oracle高级SQL培训与讲解

    通过"Oracle高级SQL培训与讲解"的学习,读者将掌握如何编写高效、复杂的SQL查询,更好地管理和优化Oracle数据库,提升数据库应用的性能和用户体验。这个教程会详细解析这些概念,并提供实例演示,帮助学习者深入理解...

    oracle-machine-learning-sql-api-guide.pdf

    Oracle支持决策树、随机森林和神经网络等算法。 2. **聚类(Clustering)**: 聚类是发现数据的自然群体或类别,无需预先设定类别。这有助于理解数据集中的结构和模式,常用于市场细分或用户行为分析。 3. **关联...

    ORACLE新体系-学习笔记.rar

    8. **索引(Indexes)**:提高数据查询效率的关键,Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引等。 9. **备份与恢复**:Oracle提供多种备份策略,如完整备份、增量备份、归档日志模式等,配合RMAN...

    oracle高级用法

    "Oracle高级用法"主要涵盖了数据库的优化、安全管理、备份恢复、性能监控和复杂SQL操作等核心内容。下面我们将深入探讨这些高级主题。 一、优化 Oracle数据库优化主要包括SQL优化和索引优化。SQL优化涉及到编写高效...

Global site tag (gtag.js) - Google Analytics