oracle数据库分层,Oracle数据库的分层查询(一)
我們知道關系數據庫不是以分層形式存儲數據的,那么我們又該如何以分層方法獲取數據呢?本文將為你介紹由Oracle提供的分層查詢特性,告訴你分層查詢的概念,并迎合你的需要構建一個分層查詢。
使用分層查詢時,你可以通過表的自然關系檢索記錄,它一定是一顆語系樹或雇員/經理樹,以及其它可能的樹。如果關系位于同一個表中,遍歷樹可以讓你構造一顆分層樹,例如:在emp表中的manager列定義了管理層。
我們以scott方案中的emp表為例,表中King是最高級別。
假設我們要查詢直接向King報告的雇員。
但如果我們還想遞歸地查詢直接向JONES,BLAKE和CLARK報告的人呢?
我們一起來看一下這個查詢語句中包括的關鍵字:
START WITH??? —?? 指定層次的根部行,換句話說就是從哪里開始解析,對于真正的層次查詢,這個子句是必需要有的。
CONNECT BY PRIOR?? —?? 解釋父子之間的關系。
PRIOR??? —?? 它用于實現遞歸條件(真正的遍歷)。
遍歷樹的方向
進一步說明CONNECT BY子句,它決定你是從頂向下還是從底向上進行遍歷。
CONNECT BY PRIOR col_1 = col_2
如果是從頂向下遍歷:
col_1是父鍵(它標識父),col_2是子鍵(它標識子)。
SELECT?empno,
ename,
job,
mgr,
hiredate,
level
FROM???emp
START?WITH?mgr?IS?NULL
CONNECT?BY?PRIOR?empno?=?mgr
查詢結果如下:
如果是從底向上遍歷:
col_1就是子鍵,col_2就是父鍵了。
CONNECT?BY?PRIOR?mgr?=?empno
我們一直都在努力堅持原創.......請不要一聲不吭,就悄悄拿走。
我原創,你原創,我們的內容世界才會更加精彩!
【所有原創內容版權均屬TechTarget,歡迎大家轉發分享。但未經授權,嚴禁任何媒體(平面媒體、網絡媒體、自媒體等)以及微信公眾號復制、轉載、摘編或以其他方式進行使用。】
微信公眾號
TechTarget
官方微博
TechTarget中國
總結
以上是生活随笔為你收集整理的oracle数据库分层,Oracle数据库的分层查询(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中有size_t函数吗,lSize
- 下一篇: php 我已阅读并同意 判断,phb.p