91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle樹結構

發布時間:2020-05-31 21:04:44 來源:網絡 閱讀:1348 作者:oracle夢想 欄目:關系型數據庫

樹結構層次關系即父子關系,類似公司中的部門組織結構樹

Oracle樹結構

其中總經理是最大的父節點,下面有助理、市場部、行政辦、研發部等子節點,而研發部又細分為研發一部和研發二部;

hr用戶表employees中的employee_idmanager_idemployee_id表示該雇員的編號,manager_id表示領導該雇員的人的編號,即子節點的manager_id值等于父節點的employee_id值。在表的每一行中都有一個表示父節點的manager_id(除根節點外),通過每個節點的父節點,就可以確定整個樹結構。

SELECT命令中使用CONNECT BY 和藹START WITH 子句可以查詢表中的樹型結構關系。其命令格式如下:
SELECT 。。。
CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR 裂名2}
[START WITH]
其中:CONNECT BY子句說明每行數據將是按層次順序檢索,并規定將表中的數據連入樹型結構的關系中。PRIORY運算符必須放置在連接關系的兩列中某一個的前面。對于節點間的父子關系,PRIOR運算符在的一側表示父節點,另一側表示子節點,從而確定查找樹結構是的順序是自頂向下還是自底向上。在連接關系中,除了可以使用列名外,還允許使用列表達式。

START WITH 子句為可選項,用來標識哪個節點作為查找樹型結構的根(起始)節點。若該子句被省略,則表示所有滿足查詢條件的行作為根節點。
START WITH:不但可以指定一個根節點,還可以指定多個根節點。

 

學習之前,讓我們首先對于樹結構章節會使用到的關鍵詞有個概念上的認識和理解!

      prior:優先的

      STARTWITH:指定遍歷的起點

     CONNECT BY PRIOR:指定遍歷的順序,比如從上到下,從下到上

     CONNECT BY NOCYCLE PRIOR:不進行循環遍歷,可以避免死循環情況的發生

      SYS_CONNECT_BY_PRTH:函數,用于指定層次分隔符

     CONNECT_BY_ISLEAF:函數,返回01兩個值,0代表非末級節點,即下面還有子節點;1代表最末級節點,即下面不再有子節點

 

據上面的關鍵字我們來組合一條sql語句:顯示employees表中的用戶的隸屬關系,類似總經理/副總經理/行政辦主任/辦事員......

我們使用START WITH語句來指定遍歷的源頭,即從哪里開始,START WITH可以省略,如果省略則表示所有滿足查詢條件的行作為根節點

CONNECT BY PRIOR用來指定遍歷的順序,等號的兩端連接的是父子關系,即是從老子開始找兒子,還是從兒子開始找老子......

e.employee_id=e.manager_id的意思是:首先找到員工的信息,然后再去找上級是這個員工的,這就是從上至下

關于LEVELLEVEL需要與CONNECT BY 配合使用,表示樹狀結構的層級,LEVELOracle保留關鍵字

--1:下面的sql語句是上至下進行員工遍歷顯示,層次結構使用/進行分割

SQL>SELECTLPAD(' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH(e.last_name, '/') AS path

                                 FROMemployees e

                                 STARTWITH e.manager_id IS NULL

CONNECT BY PRIORe.employee_id = e.manager_id

 

--2:查找由FORDBLAKE 領導的所有雇員的信息。

           SQL>SELECT EMPNOENAMEMGR

                  FROM EMP

                    CONNECT BY PRIOR EMPNO=MGR

                  START WITH ENAME IN(’FORD’,’BLAKE’)

             EMPNO       ENAME        MGR

              ——————————————————————————

             7698            BLAKE         7839

             7499            ALLEN         7698

             7521            WARD          7698

             7654            MARTIN      7698

 

3:樹結構結果集中不包含Hartstein的樹狀關系,我們可以這樣實現

SQL>SELECTLPAD(' ', 2 * LEVEL - 1) || SYS_CONNECT_BY_PATH(e.last_name, '/') AS path

                               FROM employees e

                               START WITHe.manager_id IS NULL

CONNECT BY PRIORe.employee_id = e.manager_id

          AND e.last_name <> 'Hartstein'

說明:通過在CONNECT BY 子句后面加AND關鍵字的方式進行條件篩選


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘孜| 偏关县| 凤台县| 信丰县| 福建省| 长岭县| 宿州市| 合水县| 通化县| 台东市| 宜丰县| 贡山| 邵阳县| 丹东市| 那曲县| 绥化市| 安龙县| 南汇区| 安吉县| 麻城市| 永福县| 贵州省| 松潘县| 河池市| 金山区| 友谊县| 汾阳市| 南木林县| 泽普县| 连江县| 临颍县| 板桥市| 犍为县| 阜南县| 云龙县| 崇阳县| 平定县| 晴隆县| 阿坝| 青岛市| 丹凤县|