- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
层次查询
5.层次查询(Hierarical Retrival)
5.1 基本概念
对于层次查询需要掌握:
1.解释层次查询的基本概念,识别需求中需要用到层次查询的能力。
2.建立和格式化一个树形报表(tree report)。
3.修剪树形结构的节点(node)和枝(branches)。
关键词:tree,root(根),node,leaf(叶子),branch(树枝,分支)
本节例子来源于表s_emp,表结构和数据如下:
看上面的表s_emp,使用层次查询,我们可以获得一张表基于层次关系的数据集合。Oracle是一
种关系型数据库,在表中不可能以层次的关系存放数据。但是我们可以通过一定的规则,使用tree walking(树的遍历或树的查找)来获得层次关系的数据。Hierarical query是一种获得树的层析关系报表的方法。
树形结构的数据集合,存在于我们日常生活中的很多地方,比如考虑一个家族关系,有长辈,长辈下面有子女,子女下面还可以有子女,这转化为层次或等级关系就是:根节点只有一个,下面有子节点,子节点下面还有子节点,这样组成了一棵树。(有时候,根节点root不一定只有一个,严格意义上说,这种情况不是一个严格的树)。
当一种层次关系是存在一个表的行中,那么这种层次是可以获得的。例如,我们看s_emp表,对于title:VP,我们知道这些行中都包含manager_id=1,也就是说,这些行属于id=1的雇员的下属雇员,那么有title=vp又可以获得一系列的层次,而这些层次的跟则是id=1这个雇员。由此,得到一棵树形结构数据集合。
层次树或等级树,在譬如家族关系,育种关系,组织管理,产品装配,人类进化,科学研究等领
广泛应用。
下面我们就根据s_emp这张表,根据职位大小来描述一个树形结构图。如图:
只显示部分树形结构
树形结构的父子关系,你可以控制:
遍历树的方向,是自上而下,还是自下而上。
确定层次的开始点(root)的位置。
层次查询语句正是从这两个方面来确定的,start with确定开始点,connect by确定遍历的方向。
5.2 层次查询
5.2.1 语法:
层次查询是通过start with和connect by子句标识的。
1.其中level关键字是可选的,表示等级,表示root,2表示root的child,其他相同的规则。
2.From之后可以是table,view但是只能是一个table。
3.Where条件限制了查询返回的行,但是不影响层次关系,属于将节点截断,但是这个被截断的节点的下层child不受影响。
4.Start with是表示开始节点,对于一个真实的层次关系,必须要有这个子句,但是不是必须
的,后面详细介绍。
5.connect by prior是指定父子关系,其中prior的位置不一定要在connect by之后,
对于一个真实的层次关系,这也是必须的。
对于from是视图的,那么这个view不能包含join。
5.2.2 遍历树
Start with子句:
首先必须确定startpoint,通过start with子句,后面加条件,这个条件是任何合法的条件表达式。
Start with确定将哪行作为root,如果没有start with,则每行都当作root,然后查找其后代,这不是一个真实的查询。Start with后面可以使用子查询,如果有where条件,则会截断层次中的相关满足条件的节点,但是不影响整个层次结构。可以带多个条件。
对于s_emp,从root title=president开始,语句如下:
select level,id,manager_id,last_name,title from s_emp
start with manager_id is null
connect by prior id=manager_id;
这个语句与下面的语句等价,将start with 后面的条件换成子查询。
select level,id,manager_id,last_name,title from s_emp
start with title=(select title from s_emp where manager_id is null)
connect by prior id=manager_id;
注意:start with 和connect by prior不是ANSI标准sql。
Connect by子句:
Connect by与prior确定一个层次查询的条件和遍历的方向(prio
您可能关注的文档
- 哈尔滨风景区导游词.doc
- 商业展示触摸展示一体机.doc
- 君容餐谋天下安装与使用(单店版)1.0.doc
- 四级英语(阅读)高频词汇分类汇总.doc
- 四级词汇一月通1.doc
- 四自教育定稿.doc
- 四级词汇打印版.doc
- 回流与搅拌装置.doc
- 团体人身意外伤害险.doc
- 团籍团证填写方法模板.doc
- 2025年6月黑龙江普通高中学业水平选择性考试历史试题(原卷)含答案.pdf
- 2025年6月内蒙古普通高中学业水平选择性考试历史试题(原卷)含答案.pdf
- 任务目标任务描述石油产品硫含量基本知识认知石油产品硫含量基.ppt
- 任务三灭火原理项目三燃烧与爆炸46课件.pptx
- 任务三防爆安全之爆炸基础知识97课件.pptx
- 任务4CO变换炉催化剂用量计算单元5典型化工过程工艺计算0.ppt
- 任务四离心泵密封件的修理项目一化工用泵的维护与检修1.离心.ppt
- 任务四碱和聚合物的协同效应杨红丽专业类油水井施工与改造项目.pptx
- 任务三防爆安全之爆炸区域的划分12课件.pptx
- 任务三保护剂protector又称稳定剂stabilize.ppt
文档评论(0)