《oracle数据库ppt中科院培训专用les19cn》由会员分享,可在线阅读,更多相关《oracle数据库ppt中科院培训专用les19cn(17页珍藏版)》请在金锄头文库上搜索。
1、分级取回数据,目标,完成本课后, 您应当能够执行下列操作: 解释分级查询的概念 创建一个树型结构的报告 格式化分级数据 从树型结构中去除分支,EMPLOYEES 表中的例子数据,自然树结构,De Hann,King,Hunold,EMPLOYEE_ID = 100 (父),MANAGER_ID = 100 (子),Whalen,Kochhar,Higgins,Mourgos,Zlotkey,Rajs,Davies,Matos,Gietz,Ernst,Lorentz,Hartstein,Fay,Abel,Taylor,Grant,Vargas,分级查询,WHERE 条件:,expr compar
2、ison_operator expr,SELECT LEVEL, column, expr. FROM table WHERE condition(s) START WITH condition(s) CONNECT BY PRIOR condition(s) ;,遍历树,起点,指定必须满足的条件 接受有效的条件 使用 EMPLOYEES 表,从名字是 Kochhar 的雇员开始,.START WITH last_name = Kochhar,START WITH column1 = value,遍历树,方向,从顶向下,Column1 = Parent Key Column2 = Child
3、Key,从底向上,Column1 = Child Key Column2 = Parent Key,从顶向下遍历,用 EMPLOYEES 表,CONNECT BY PRIOR column1 = column2,. CONNECT BY PRIOR employee_id = manager_id,遍历树:从底向上,SELECT employee_id, last_name, job_id, manager_id FROM employees START WITH employee_id = 101 CONNECT BY PRIOR manager_id = employee_id ;,遍历树
4、:从顶向下,SELECT last_name| reports to | PRIOR last_name “Walk Top Down“ FROM employees START WITH last_name = King CONNECT BY PRIOR employee_id = manager_id ;,用 LEVEL 伪列将行分等级,De Hann,King,Hunold,Whalen,Kochhar,Higgins,Mourgos,Zlotkey,Rajs,Davies,Matos,Gietz,Ernst,Lorentz,Hartstein,Fay,Abel,Taylor,Grant
5、,Vargas,Level 1 根/父,Level 2 父/子,Level 3 父/子/叶,Level 4 叶,用 LEVEL 和 LPAD 格式化分级报告,创建一个报告显示公司的管理层,从最高级别开始,缩进下面跟随的级别,COLUMN org_chart FORMAT A12 SELECT LPAD(last_name, LENGTH(last_name)+(LEVEL*2)-2,_) AS org_chart FROM employees START WITH last_name=King CONNECT BY PRIOR employee_id=manager_id,修剪分支,用 WHE
6、RE 子句 去除一个结点,用 CONNECT BY 子句 去除一个分支,WHERE last_name != Higgins,CONNECT BY PRIOR employee_id = manager_id AND last_name != Higgins,Kochhar,Higgins,Gietz,Whalen,Kochhar,Higgins,Whalen,Gietz,小结,在本课中, 您应该已经学会下面的内容: 能够用分级查询查看一个表中各行之间的分级关系 指定查询的起点 通过修剪除去结点或分支,练习 19 概览,本章练习包括下面的主题: 区别分级查询和非分级查询 遍历树 用 LEVEL 伪列生成一个缩进的报表 修剪树结构 输出排序,Hidden Slide,Hidden Slide,Hidden Slide,