♣
答案部分
在实际开发中,如果表中数据具有逻辑上的层次结构,那么可以使用层次查询以更直观地显示查询结果(包括数据本身以及数据之间的层次关系)。树形结构的关系可以控制遍历树的方向,是自上而下,还是自下而上,还可以确定层次的开始点(ROOT)的位置。层次查询语句正是从这两个方面来确定的,START WITH确定开始点,CONNECT BY确定遍历的方向。
树形结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述,例如EMP表中的EMPNO和MGR列。EMPNO表示该雇员的编号,MGR表示该雇员领导的编号,即子结点的MGR值等于父结点的EMPNO值。在表的每一行中都有一个表示父结点的MGR(除根结点外),通过每个结点的父结点,就可以确定整个树结构。
层次查询的基本语法格式如下所示:
SELECT
FROM
[WHERE ]
[START WITH ]
CONNECT BY PRIOR当前表字段=级联表字段
在使用层次查询的过程中,需要注意以下几点内容:
1、层次查询是通过START WITH和CONNECT BY子句标识的。
2、其中,LEVEL关键字是可选的,表示等级,代表树的第几层。对根结点来说,LEVEL返回1,根结点的子结点返回2,以此类推。LEVEL是层次查询的一个伪列,如果有LEVEL,那么必须有CONNECT BY,而START WITH可以没有。利用CONNECT BY可以快速构造数据,例如SQL语句“SELECT LEVEL FROM DUAL CONNEC