ORACLE中的层次结构查询
层次结构在现实生活中是很常见的,因此早期的数据库是层次数据库,如实的反映了这种关系。后来层次数据库被证实是非常笨重的,因此关系数据库取得了成功。但是层次结构依然存在,而在关系数据库中层次并不能得到很好的体现。ORACLE提供了强大的层次结构查询来解决这个问题。
一、 固定和可变层数
层次结构关系大致可分为两种。
一种是层级固定,例如美国分为各个州,州下分县,县下又分镇区和城市。这种情况如果在一张表中用递归来实现并不是很好的选择,将其保存在主从结构的三张表中更容易查询和操作。
另一种是层级可变。如图所示的组件清单:
可构造层次表如下:
二、 ORACLE的层次查询
ORACLE提供了SELECT查询语句的START WITH和CONNECT BY子句,来实现层次查询。要进行层次查询,必须明了两件事情:识别根记录的条件和子记录中指向其父亲的列名。
看我们的例子,parent_assembly列决定该记录的父亲。由于根记录Airplane没有父亲,因此列parent_assembly为空&#x