成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Oracle樹結構

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

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比橋西網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式橋西網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋橋西地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

Oracle樹結構

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

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

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

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

 

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

      prior:優(yōu)先的

      STARTWITH:指定遍歷的起點

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

     CONNECT BY NOCYCLE PRIOR:不進行循環(huán)遍歷,可以避免死循環(huán)情況的發(fā)生

      SYS_CONNECT_BY_PRTH:函數(shù),用于指定層次分隔符

     CONNECT_BY_ISLEAF:函數(shù),返回0和1兩個值,0代表非末級節(jié)點,即下面還有子節(jié)點;1代表最末級節(jié)點,即下面不再有子節(jié)點

 

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

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

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

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

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

--例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:查找由FORD和BLAKE 領導的所有雇員的信息。

           SQL>SELECT EMPNO,ENAME,MGR

                  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的樹狀關系,我們可以這樣實現(xiàn)

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關鍵字的方式進行條件篩選

當前名稱:Oracle樹結構
本文URL:http://jinyejixie.com/article26/jpdecg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計移動網(wǎng)站建設、虛擬主機網(wǎng)站策劃、網(wǎng)站改版動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作
灌云县| 黄陵县| 关岭| 通州市| 天水市| 阜南县| 龙岩市| 泰州市| 高雄市| 乡城县| 义马市| 溆浦县| 介休市| 长顺县| 绍兴市| 视频| 沙雅县| 莱阳市| 渭南市| 大庆市| 三穗县| 迁西县| 平度市| 阳新县| 芦山县| 班玛县| 五原县| 翼城县| 翁牛特旗| 苍溪县| 札达县| 泾川县| 石棉县| 喜德县| 德阳市| 阳朔县| 云霄县| 牡丹江市| 无为县| 青海省| 青岛市|