1、作用:
用于存在父子,祖孙,上下级等层级关系的数据表进行层级查询。
2、语法
2.1、说明
start with: 指定起始节点的条件
connect by: 指定父子行的条件关系
prior: 查询父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and … ,
nocycle: 若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,便不会报错,但循环的两行只会显示其中的第一条
循环行: 该行只有一个子行,而且子行又是该行的祖先行
connect_by_iscycle: 前置条件:在使用了nocycle之后才能使用此关键字,用于表示是否是循环行,0表示否,1 表示是
connect_by_isleaf: 是否是叶子节点,0表示否,1 表示是
level: level伪列,表示层级,值越小层级越高,level=1为层级最高节点
3、构造数据
4、查询jack下的所有子节点
5、查询jack和arise下的所有子节点
6、查询jack的祖先节点
7、查询一个节点的叔叔伯父节点
8、查询族兄
9、level伪列的使用,格式化层级
10、connect_by_root 查找根节点
11、connect_by_isleaf 是否是叶子节点
12、使用connect by rownum生成序列
ROWNUM是一个伪列,即先查到结果集之后再加上去的一个列,它的取值从1开始排依次递增。ROWNUM其实是oracle数据库从数据文件或缓冲区中读取数据的顺序。取得第一条记录则rownum值为1,第二条为2,依次类推。
connect by rownum是通过递归迭代第一行生成一个序列。格式如下:
例如:
12.1 生成1-5之间的一个序列
12.2 生成10个60到100之间的随机整数
12.3 生成连续的日期值