我们知道关系数据库不是以分层形式存储数据的,那么我们又该如何以分层方法获取数据呢?本文将为你介绍由Oracle提供的分层查询特性,告诉你分层查询的概念,并迎合你的需要构建一个分层查询。

使用分层查询时,你可以通过表的自然关系检索记录,它一定是一颗语系树或雇员/经理树,以及其它可能的树。如果关系位于同一个表中,遍历树可以让你构造一颗分层树,例如:在emp表中的manager列定义了管理层。

我们以scott方案中的emp表为例,表中King是最高级别。

假设我们要查询直接向King报告的雇员。

但如果我们还想递归地查询直接向JONES,BLAKE和CLARK报告的人呢?

我们一起来看一下这个查询语句中包括的关键字:

START WITH    —   指定层次的根部行,换句话说就是从哪里开始解析,对于真正的层次查询,这个子句是必需要有的。

CONNECT BY PRIOR   —   解释父子之间的关系。

PRIOR    —   它用于实现递归条件(真正的遍历)。

遍历树的方向

进一步说明CONNECT BY子句,它决定你是从顶向下还是从底向上进行遍历。

CONNECT BY PRIOR col_1 = col_2

如果是从顶向下遍历:

col_1是父键(它标识父),col_2是子键(它标识子)。

SELECT empno,

ename,

job,

mgr,

hiredate,

level

FROM   emp

START WITH mgr IS NULL

CONNECT BY PRIOR empno = mgr

查询结果如下:

如果是从底向上遍历:

col_1就是子键,col_2就是父键了。

CONNECT BY PRIOR mgr = empno

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget

官方微博

TechTarget中国

oracle数据库分层,Oracle数据库的分层查询(一)相关推荐

  1. oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称

    SQL查询数据库中所有指定类型的字段名称和所在的表名 --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 ...

  2. 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法

    sm_appmenuitem 这个演示表有 5 个索引. 我在不知道的情况下想知道这个表的索引有没有建成功,或者说我现在想知道这个表的索引有哪些,就要来查询了. 索引表查询方法如下,把对应的表放到括号 ...

  3. oracle遍历表做查询,oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)...

    语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...

  4. oracle数据库连接不稳定,Oracle数据库自连接查询的缺点及解决方法

    问题:我们在Oracle数据库中,如果需求要查询出 EMP 表中的所有员工及员工对应的领导时,就需要用到自连接查询: 查询语句如下:select e.empno,e.ename,e.mgr from ...

  5. Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例

    Oracle数据库:oracle内连接inner join on,多表查询各种自链接.内连接.外连接的练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得 ...

  6. Oracle数据库的基本使用和高级查询

    1.Oracle体系结构 本次使用的是Oracle18c数据库版本 java学习交流Q群:1004577069 1>数据库Oracle数据库时数据的物理存储,这就包括(数据库文件ORA或者DBF ...

  7. oracle 分组 排名,Oracle数据库之分组查询及排序

    分组查询:使用 group by 来设置分组,把该列具有相同值的多条记录当成一组记录来处理,然后只会输出一条记录,得到的结果会默认使用升序的方式进行排列. 规则: (1)如果使用了分组函数,或者是 g ...

  8. 查询oracle全局数据库名,Oracle基础:数据库名 实例名 ORACLE_SID 服务名 域名 全局数据库名...

    Oracle中存在着这些容易混淆的名称: 数据库名实例名ORACLE_SID服务名域名全局数据库名 在oracle7/8/9i/10g中都有数据库名和实例名,在9i和10g中又引进了三个新的数据库标识 ...

  9. linux 查看oracle数据库字符集,Oracle字符集的查看查询和Oracle字符集的设置修改

    三. 修改Oracle的字符集 8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误. Startup nomount; A ...

  10. Oracle(11g)数据库教程之十三:第二次实验_数据库的查询和视图

    Oracle(11g)数据库教程之十三:第二次实验_数据库的查询和视图 一.实验目的: 1  掌握select语句的基本语法 2. 掌握子查询.连接查询的表示方法 3. 掌握数据汇总的方法 二.实验内 ...

最新文章

  1. Java解析HTML之HTMLParser使用与详解
  2. es6 --- 数组的扩展
  3. python语言中内置的字符串排版方法_Python14之字符串(各种奇葩的内置方法)
  4. 关于推荐的一个算法工程师访谈,有一些内容值得看看
  5. java复选框只会选中一个_java复选框选中
  6. 【2021 年 MathorCup 高校数学建模挑战赛—赛道A二手车估价问题】2 问题一 数据预处理、特征工程及模型训练Baseline 和数据
  7. python算法精解pdf_算法详解(卷1)算法基础 PDF 完整高清版
  8. C语言不使用中间变量交换两个变量值
  9. COGS 734. [网络流24题] 方格取数问题
  10. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)
  11. 图像融合之多波段融合(Multiband Blending)/拉普拉斯金字塔融合(Laplacian Pyramid Blending)
  12. java cookie全解析(session与cookie的机制和原理)
  13. python 画ks曲线_Python绘制KS曲线的实现方法
  14. 作文以记之 ~ 完全平方数
  15. Norton AntiVirus (诺顿杀毒)v9.0 简体中文企业版http://down.hotlife.cn/html/download/2006/5/30/1148978165.shtml
  16. 五菱的“世界上最有名的颜色”系列海报,太令人上头了
  17. Lucene随笔-Lucene的索引文件格式
  18. idea最常用的快捷键,写代码快到飞起
  19. 最新版win10安装Texlive2022和Texstudio2022教程
  20. 一阶逻辑合式公式及解释

热门文章

  1. Go的sync.Mutex(七):互斥锁锁定一个资源 只有一个协程操作其他等待
  2. java 语法 冒号_java中生僻的冒号跳转语法
  3. 操作系统角度谈测试管理和自动化测试
  4. spring框架文档学习(包会)
  5. oracle 向右去整,使用table表格无端的整体向右偏移一段距离
  6. tomcat c3p0 mysql_C3P0数据库连接池与tomcat一起使用时报错
  7. Tomcat9 启动警告 org.apache.catalina.webresources.Cache.getResource ...请考虑增加缓存的最大空间
  8. 【spring-boot】restfull api 返回值中,去掉 null 值
  9. 【H2 Database】导出CSV
  10. ES6的导入和导出模块