prior子句用法,PLSQL_基础连串1一_递归和层次查询CONNECT

2015-05-31 Created By
BaoXinjian

connect by 是结构化查询中用到的,其主干语法是:
select … from tablename start with 条件1
connect by 条件2
where 条件3;

图片 1一、摘要

例:


select * from table
start with org_id = ‘HBHqfWGWPy’
connect by prior org_id = parent_id;

一. 树结构的讲述

 

树结构的数码存放在表中,数据里面的层系关系即老爹和儿子关系,通过表中的列与列间的关系来讲述,如EMP表中的EMPNO和MG奥迪Q三。

简单来讲说来是将一个树状结构存储在一张表里,比如3个表中存在四个字段:
org_id,parent_id那么通过代表每一条记下的parent是何人,就足以形成几个树状结构。
用上述语法的查询可以拿走这棵树的兼具记录。
其中:

EMPNO表示该雇员的编
号,MGTiguan代表总管该雇员的人的号码,即子节点的MGLX570值等于父节点的EMPNO值。

标准一是根结点的限量语句,当然能够放宽限制条件,以博取多个根结点,实际正是多棵树。
原则2 是连接条件,在那之中用P昂CoraIO陆风X8表示上一条记下,比如 CONNECT BY P本田CR-VIOR
org_id = parent_id正是说上一条记下的org_id
是本条记下的parent_id,即本记录的父亲是上一条记下。
标准三 是过滤条件,用于对回到的保有记录进行过滤。

在表的每一行中都有1个象征父节点的MG科雷傲(除根节点外),通过种种节点的父节点,就能够规定整个树结构。

 

在SELECT命令中应用CONNECT BY 和蔼STASportageT
WITH 子句能够查询表中的树型结构涉及。

归纳介绍如下:

其命令格式如下:

早扫描树结构表时,须求依此访问树结构的各类节点,1个节点只能访问3次,其访问的手续如下:
率先步:从根节点开首;
其次步:访问该节点;
其三步:判断该节点有无未被访问的子节点,若有,则转向它最左边的未被访问的子节,并实施第叁步,不然执行第六步;
第伍步:若该节点为根节点,则做客结束,不然执行第四步;
第6步:再次来到到该节点的父节点,并实行第2步骤。

SELECT 。。。

简单的说:扫描整个树结构的进度也正是中序遍历树的经过。

CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR
裂名2}

 

[START WITH];

一.
树结构的讲述
树结构的多少存放在表中,数据里面包车型大巴层系关系即父子关系,通过表中的列与列间的涉及来讲述,如EMP表中的EMPNO和MGLAND。EMPNO代表该雇员的数码,MG帕杰罗表示管事人该雇员的人的编号,即子节点的MGPRADO值等于父节点的EMPNO值。在表的每壹行中都有八个意味着父节点的MGPRADO(除根节点外),通过各种节点的父节点,就足以分明整个树结构。
在SELECT命令中利用CONNECT
BY 和蔼STA揽胜T
WITH 子句能够查询表中的树型结构涉及。其命令格式如下:
SELECT 。。。
CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR
裂名2}
[START WITH];
其间:CONNECT
BY子句表明每行数据将是按层次顺序检索,并分明将表中的数额连入树型结构的涉及中。PXC60IO揽胜极光Y运算符必须放置在接连关系的两列中某贰个的先头。对于节点间的父亲和儿子关系,P哈弗IOLacrosse运算符在壹侧表示父节点,在另1侧表示子节点,从而鲜明查找树结构是的依次是自顶向下大概自底向上。在几次三番关系中,除了可以应用列名外,还允许行使列表达式。STA宝马X3T
WITH 子句为可挑选,用来标识哪个节点作为查找树型结构的根节点。若该子句被回顾,则代表拥有餍足查询条件的行作为根节点。

其 中: CONNECT
BY子句表达每行数据将是按层次顺序检索,并分明将表中的多寡连入树型结构的涉及中。

STA福睿斯T
WITH: 不但能够钦命贰个根节点,还足以钦赐多个根节点。
2.
关于PRIOR
运算符PLX570IO福睿斯被停放于等号前后的职分,决定着询问时的摸索顺序。
PMuranoIOBMWX三被置于CONNECT
BY子句中等号的眼下时,则强制从根节点到叶节点的依次检索,即由父节点向子节点方向通过树结构,大家誉为自顶向下的法子。如:
CONNECT BY PRIOR EMPNO=MGR
PIROKoleos运算符被置于CONNECT
BY 子句中等号的末尾时,则强制从叶节点到根节点的逐条检索,即由子节点向父节点方向通过树结构,大家称为自底向上的艺术。例如:
CONNECT BY EMPNO=PRIOR MGR
在那种格局中也应钦命1个开首的节点。
三.
定义查找先河节点
在自顶向下询问树结构时,不但能够从根节点起初,还足以定义任何节点为发端节点,以此起首向下寻找。那样查找的结果正是以该节点为始发的结构树的一枝。

P瑞鹰IOLANDY运算符必须放置在连接关系的两列中某1个的前头。

4.使用LEVEL
在拥有树结构的表中,每1行数据都以树结构中的一个节点,由于节点所处的层次地点不一致,所以每行记录都能够有四个层号。层号遵照节点与根节点的离开鲜明。不论从哪个节点初始,该开端根节点的层号始终为一,根节点的子节点为二,
依此类推。图壹.二就表示了树结构的层系。

对此节
点间的父亲和儿子关系,PXC60IO途乐运算符在一旁表示父节点,在另壹侧表示子节点,从而分明查找树结构是的逐壹是自顶向下依然自底向上。

五.节点和分支的剪裁
在对树结构实行询问时,能够去掉表中的某个行,也能够剪掉树中的三个分段,使用WHERE子句来限定树型结构中的单个节点,以去掉树中的单个节点,但它却不影响其后裔节点(自顶向下检索时)或前辈节点(自底向顶检索时)。
陆.排序展现
象在别的查询中平等,在树结构查询中也足以应用OMuranoDER
BY 子句,改变查询结果的来得顺序,而毋庸依据遍历树结构的相继。

在一而再关系中,除了能够使
用列名外,还允许使用列表明式。

STA大切诺基T WITH
子句为可选择,用来标识哪个节点作为查找树型结构的根节点。

若该子句被简单,则象征全数满意查询条件的行作为根节点。

STAQX56T WITH:
不但能够钦赐二个根节点,还足以钦赐八个根节点。

2. 关于PRIOR

运算符PRIOGL450被停放于等号左右的岗位,决定着询问时的搜寻顺序。

P奥迪Q3IO奥迪Q3被平放CONNECT
BY子句中等号的眼下时,则强制从根节点到叶节点的逐条检索,即由父节点向子节点方向通过树结构,我们誉为自顶向下的艺术。如:

CONNECT BY PRIOR EMPNO=MGR

PIRO大切诺基运算符被停放CONNECT BY
子句中等号的背后时,则强制从叶节点到根节点的顺序检索,即由子节点向父节点方向通过树结构,我们誉为自底向上的艺术。例如:

CONNECT BY EMPNO=PRIOR MGR

在那种情势中也应钦赐贰个开端的节点。

3. 定义查找初叶节点

    
在自顶向下询问树结构时,不但可以从根节点开首,还足以定义任何节点为起初节点,以此开头向下寻找。那样查找的结果就是以该节点为始发的结构树的一枝。

4.使用LEVEL

在装有树结构的表中,每一行数据都以树结构中的三个节点,由于节点所处的层系地方不相同,所以每行记录都得以有叁个层号。层号依照节点与根节点的偏离鲜明。不论从哪些节点发轫,该起始根节点的层号始终为一,根节点的子节点为二,
依此类推。

五.节点和支行的裁剪

在对树结构实行询问时,能够去掉表中的有些行,也得以剪掉树中的一个分支,使用WHERE子句来限定树型结构中的单个节点,以去掉树中的单个节点,但它却不影响其子孙节点(自顶向下检索时)或前辈节点(自底向顶检索时)。

陆.排序突显

象在任何查询中同样,在树结构查询中也足以使用OQashqaiDER
BY 子句,改变查询结果的显得顺序,而不必根据遍历树结构的顺序

 

图片 2二、具体行使


1

 

 

 

Thanks and Regards

图片 3

相关文章