1.分级查询
select [level],column,expr...
from table
[where condition(s)]
[start with condition(s)]
[connect by prior condition(s)];
level:对每行返回一个级别,对根行level伪列返回1;对孩子的level伪列返回2,以此类推
start with:指定层次的根行
connct by prior:指定查询的方向
1)start with子句可以和任何有效的条件协同使用
start with column1=value
2)使用emp表,从名字是king的雇员开始
...start with ename='king'
...start with mgr is null
3)一个start with条件可以包含子查询
...start with empno=(select empno
from emp
where ename='king')
connect by prior column1=column2
4)使用emp表从顶向下遍历:
...connect by prior empno=mgr
5)使用emp表从底向上遍历:
...connect by empno=prior mgr
2.遍历树:
1)自顶向下遍历
例:
select level,empno,ename||' 雇员的经理是 '||
prior ename "雇佣关系"
from emp
start with ename='king'
connect by prior empno=mgr;
结果:
level empno 雇佣关系
1 7839 king 雇员的经理是
2 7566 jones 雇员的经理是 king
3 7788 scott 雇员的经理是 jones
4 7876 adams 雇员的经理是 scott
3 7902 ford 雇员的经理是 jones
4 7369 smith 雇员的经理是 ford
2 7698 blake 雇员的经理是 king
3 7499 allen 雇员的经理是 blake
3 7521 ward 雇员的经理是 blake
3 7654 martin 雇员的经理是 blake
3 7844 turner 雇员的经理是 blake
3 7900 james 雇员的经理是 blake
2 7782 clark 雇员的经理是 king
3 7934 miller 雇员的经理是 clark
2)从底向上遍历
例:
select level,empno,ename,job,mgr
from emp
start with empno=7876
connect by empno=prior mgr;
结果:
level empno ename job mgr
1 7876 adams clerk 7788
2 7788 scott analyst 7566
3 7566 jones manager 7839
4 7839 king president
3.用level和lpad格式化分级报告
创建一个报告,显示公司的管理层,从最高级别开始,缩进下面跟随的级别
例:
select level,lpad(ename,length(ename)+(level*2)-2,'-') as org_chart
from emp
start with ename='king'
connect by prior empno=mgr;
结果:
level org_chart
1 king
2 --jones
3 ----scott
4 ------adams
3 ----ford
4 ------smith
2 --blake
3 ----allen
3 ----ward
3 ----martin
3 ----turner
3 ----james
2 --clark
3 ----miller
4.修剪分支
1)用where子句去除一个结点
where ename!='scott'
2)用connect by子句去除一个分支
connect by prior
empno=mgr
and ename!='scott'
分享到:
相关推荐
Oracle数据库的分级查询是数据库管理中的一个重要概念,主要用于处理具有层级关系的数据,如组织结构、产品目录等。在Oracle中,这种查询通过SQL的特殊语法实现,能够有效地生成树形结构的报表,帮助用户理解数据间...
Oracle数据库在处理层次数据时,提供了强大的分级查询功能。这些功能使得从树型结构的数据中检索、格式化和分析信息变得十分便捷。本教程重点介绍了如何理解和应用Oracle数据库的分级查询,以帮助用户掌握在实际工作...
Oracle数据库是一种广泛使用的商业关系型数据库管理系统,其层次查询功能主要基于树形结构来处理层级数据,这种结构被广泛用于表示具有层级关系的数据,如人事组织结构、公司组织架构以及计算机目录结构等。层次查询...
层次查询,也称为分级查询,是Oracle SQL中的一个特色功能,它允许开发者沿着数据的层级关系进行遍历,从而展示出数据的树状结构。在Oracle数据库中,这种查询主要应用于具有上下级关系的数据,如组织结构、员工管理...
- 部署数据库时,本手册选用SQL Server桌面数据库进行自动部署,同时提供了支持Oracle、Sybase、MySQL、PostgreSQL等其他数据库的方案。 - 安装过程中会自动部署COM+组件,并创建MagicLtdUser Windows用户账户。 - ...
"分级取回数据.txt"可能涉及到层次查询或递归查询,这在处理具有层级关系的数据时非常有用,例如组织架构或产品分类树。 通过这些笔记,你将能够深入理解Oracle数据库操作,并具备解决实际问题的能力。记住,理论...
综上所述,本文通过详细介绍从父子结点树形结构到多级编码转换的过程,展示了 Oracle SQL 的强大功能及其在实际应用中的价值。这种转换方法不仅简化了操作流程,还极大地提高了效率和可靠性,为相关领域的研究者和...
运算符可以分为不同类型,如算术运算符、连接运算符、集合运算符、核对运算符、分级查询操作符、多重集运算符以及用户自定义运算符。 1. **算数运算符(Arithmetic Operators)**: 包括加法 (+)、减法 (-)、乘法 ...
DBConnection负责建立与数据库的连接,DBTable或Query则用于执行SQL查询和处理数据,而TDataSource作为中介,将数据提供给其他可视组件,如我们的树形视图。 1. **数据库连接设置**: 在Delphi中,通过...
- **索引类型**:选择合适的索引类型(如R树、kd树、四叉树),提高查询效率。 - **构建策略**:根据数据分布和查询模式优化索引构建过程。 - **参数调整**:根据实际情况调整索引参数,提高查询性能。 **2. 时空...
- 常见数据库管理系统:MySQL、Oracle、SQL Server的特性与应用。 - NoSQL数据库:MongoDB、Redis等非关系型数据库的概念和应用场景。 6. **编译原理**: - 词法分析:识别程序中的标识符、关键字、常量等。 - ...
对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、...
PL/SQL编辑器,具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。当您需要某个信息...
对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、...
基本方法.sql │ ├─第08章 │ │ 8.1.2 树形数据分级汇总示例.sql │ │ 8.1.3 树形数据编号重排的通用存储过程.sql │ │ 8.1.3 树形数据编号重排示例.sql │ │ 8.1.4 实现编码规则...
│ │ 8.1.2 树形数据分级汇总示例.sql │ │ 8.1.3 树形数据编号重排的通用存储过程.sql │ │ 8.1.3 树形数据编号重排示例.sql │ │ 8.1.4 实现编码规则调整处理的通用存储过程.sql │ │ 8.1.4 生成编码规则调整...
- **B-Tree Index**: 基于B树结构构建,支持范围查询、排序等功能。 - **Bitmap Index**: 用于低基数列,如性别、状态等字段,存储方式为位图形式。 - **Function Index**: 允许在表达式上创建索引,提高了查询性能...
对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、...
对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、浏览...