关于oracl树状结构查询.docVIP

  • 4
  • 0
  • 约1.47万字
  • 约 9页
  • 2016-10-05 发布于贵州
  • 举报
关于oracl树状结构查询

关于oracle树状结构查询 关于oracle树状结构查询 1 一、基本概念: 1 1. 树结构的描述 1 2. 关于PRIOR 2 3. 定义查找起始节点 2 4.运用 LEVEL 2 5.节点和分支的裁剪 2 6.排序显示 3 二、实验与分析 3 1.先来看下基本用法: 3 2.我们再来关注一下排序(ORDER BY ORDER SIBLINGS BY)和伪列(LEVEL)的应用: 4 3.再来看这样一个案例: 5 三、一些心得总结 7 1.子句的语法书写顺序。 7 2.子句的执行顺序 8 3.如何理解和记忆“CONNECT BY PRIOR MGR = EMPNO ”的含义呢? 8 4.前序遍历 8 5.排序 8 6.伪列LEVEL 8 7.SYS_CONNECT_BY_PATH(COLUMN,CHAR) 9 Oracle树查询最重要的就是select...start with... connect by ...prior 语法了。依托于该语法,我们可以将一个表形结构的数据以树的顺序列出来。在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等。 一、基本概念: 1. 树结构的描述 树结构的数据存放在表中,数据之间的层次联系即父子联系,通过表中的列与列间的联系来描述, 如EMP表中的EMPNO和MGR。EMPNO示意该雇员的编号,MGR示意领导该雇员的人的编号,即子节点的MGR值等于父节点的EMPNO值。在表中的每一行中都有一个示意父节点的MGR(除根节点外),通过每个节点的父节点,就能够确定整个树结构。 在SELECT命令中运用 CONNECT BY 和START WITH 子句能够查询表中的树型结构联系。其命令格式如下: SELECT 。。。 CONNECT BY {PRIOR 列名1=列名2列名1=PRIOR 列名2} [START WITH]; 其中:CONNECT BY子句表明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的联系中。PRIOR运算符必须放置在连接联系的两列中某一个的前面。对于节点间的父子联系,PRIOR运算符在一侧示意父节点,在另一侧示意子节点,从而确定查找树结构是的顺序是自顶向下仍旧自底向上。在连接联系中,除了能够使用列名外,还准许运用列表达式。START WITH 子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则示意所有满足查询条件的行作为根节点。START WITH:不但能够指定一个根节点,还能够指定多个根节点。 2. 关于PRIOR 运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,即由父节点向子节点方向议决树结构,咱们称之为自顶向下的方式。如: CONNECT BY PRIOR EMPNO=MGR PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,即由子节点向父节点方向议决树结构,咱们称之为自底向上的方式。比方: CONNECT BY EMPNO=PRIOR MGR 在这种方式中也应指定一个开始的节点。 3. 定义查找起始节点 在自顶向下查询树结构时,不但能够从根节点开始,还能够定义任何节点为起始节点,以此开始向下查找。这样查找的结果就是以该节点为开始的结构树的一枝。 4.运用 LEVEL 在具有树结构的表中,每一行数据都是树结构中的一个节点,由于节点所处的层次位置不一样,所以每行记载都能够有一个层号。层号根据节点与根节点的距离确定。不论从哪个节点开始,该起始根节点的层号始终为1,根节点的子节点为2, 依此类推。 5.节点和分支的裁剪 在对树结构执行查询时,能够去掉表中的某些行,也能够剪掉树中的一个分支,运用 WHERE子句来限定树型结构中的单个节点,以去掉树中的单个节点,但它却不影响其后代节点(自顶向下检索时)或前辈节点(自底向顶检索时)。 6.排序显示 象在其它查询中一样,在树结构查询中也能够运用 ORDER BY 子句,改动查询结果的显示顺序,而不必按照遍历树结构的顺序。但需注意与ORDER SIBLINGS BY的区别应用。 二、实验与分析 1.先来看下基本用法: 有一个EMP表: EMPNO NAME MGR 10 JACK 11 11 MARY 12 12 LUCY 15 13 DAN 15 14 TIM 11 15 DORA 这个表形成了一个树结构, MGR表示该用户的领导, 假如我们SQL这样写: SELECT * FROM EMP CONNECT BY PRIOR EMPNO = MGR

文档评论(0)

1亿VIP精品文档

相关文档