遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支

遍历查询

遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支
1从非根节点开始遍历
使用start with实现,下面查询从jones开始
select level,empno,lpad(’ ‘,6*level-1)||ename name
from emp
start with ename=’JONES’
connect by prior empno=mgr;
遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支

2从下向上遍历树
实现方法是交换父节点与子节点在connect by prior字句中顺序,
例如:
connect by prior mgr=empno;可以将子节点的mgr连接到父节点的empno中。

select level,empno,lpad(’ ‘,6*level-1)||ename name
from emp
start with ename=’SMITH’
connect by prior mgr=empno;

遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支

3从层次化查询中删除节点和分支
使用where 字句从查询数中删除某个特别的节点

没有除去JONES的图
遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支

下面删除jones子节点。
select level,empno,lpad(’ ‘,6*level-1)||ename name
from emp
where ename !=’JONES’
start with ename=’KING’
connect by prior empno=mgr;
遍历查询+从非根节点开始遍历+从下向上遍历树+从层次化查询中删除节点和分支