Oracle start with 儲存樹狀結構

2021-10-12 19:53:22 字數 2778 閱讀 3329

create

table priortest

( id number not

null

, fatherid number,

name varchar2(

4000

)not

null);

insert

into priortest (id, fatherid, name)

values

('1000'

,null

,'一級分組');

insert

into priortest (id, fatherid, name)

values

('1001'

,'1000'

,'二級分組');

insert

into priortest (id, fatherid, name)

values

('1002'

,'1001'

,'**分組');

insert

into priortest (id, fatherid, name)

values

('1003'

,'1002'

,'water1003');

insert

into priortest (id, fatherid, name)

values

('1004'

,'1000'

,'二級分組');

insert

into priortest (id, fatherid, name)

values

('1005'

,'1000'

,'二級分組');

insert

into priortest (id, fatherid, name)

values

('1006'

,'1005'

,'**分組');

insert

into priortest (id, fatherid, name)

values

('1007'

,'1006'

,'water1007');

insert

into priortest (id, fatherid, name)

values

('1008'

,'1006'

,'water1008');

insert

into priortest (id, fatherid, name)

values

('1009'

,'1006'

,'water1009'

);

select

*from priortest

start

with id =

1000

connect

by prior id = fatherid;

--可以取到從這個id開始遞迴到的所有資料

select

*from priortest

start

with id =

1000

connect

by id = prior fatherid;

--僅能取到最頂層資料

select

*from priortest

start

with id =

1000

connect

by prior fatherid = id;

--僅能取到最頂層資料

select

*from priortest

start

with fatherid =

1000

connect

by prior id = fatherid;

--除了頂層資料取不到

select

*from priortest

start

with fatherid =

1000

connect

by prior fatherid = id;

--會取到重複資料

select ... from    + 表名 

start with + 條件1

connect by prior + 條件2

where + 條件3

connect by prior是結構化查詢中用到的;

start with… connect by prior…的作用,簡單來說,就是將乙個樹狀結構儲存在一張表裡。

條件1:是根節點的限定語句,當然可以放寬限定條件,以取得多個根節點,也就是多棵樹;在連線關係中,除了可以使用列名外,還允許使用列表示式。

start with 子句為可選項,用來標識哪個節點作為查詢樹形結構的根節點。若該子句省略,則表示所有滿足查詢條件的行作為根節點。

的fatherid,即本記錄的父親是上一條記錄。connect by子句說明每行資料將是按照層次順序檢索,並規定將表中的資料連入樹形結構的關係中。

prior運算子必須放置在連線關係的2列中某乙個的前面。對於節點間的父子關係,prior運算子在一側表示父節點,在另一側表示子節點,從而確定查

找樹結構的順序是自頂向下,還是自底向上。

條件3:是過濾條件,用於對返回的記錄進行過濾。

棧 順序儲存結

棧是線性表的特例,棧的順序儲存其實也是線性表順序的儲存的簡化,我們簡稱為順序棧。對於這種只能一頭插入,一頭刪除的線性表來說,下標為0的一端作為棧底比較好,因為首元素都存在棧底,變化最小。我們定義乙個top變數來指示棧頂元素在陣列中的位置,這top如同中學的游標卡尺的游標,它可以來回移動,意味著棧頂的...

Linux學習之Linux樹狀檔案系統結構

一 各個目錄作用 bin binary 可執行檔案即命令,所有使用者都有許可權執行的命令 boot 引導檔案 核心檔案 dev 被抽象為檔案的硬體 etc 所有配置檔案 configura 大部分為文字檔案 home 家目錄 儲存使用者所有所有檔案 相當於 我的檔案 root 目錄是單獨了 lib ...

mysql 儲存結構 可以嗎 Mysql儲存結構

索引是一種加快查詢速度的資料結構,常用索引結構有hash b tree和b tree。本節通過分析三者的資料結構來說明為啥mysql選擇用b tree資料結構。資料結構 hash是基於雜湊表完成索引儲存,雜湊表特性是資料存放是雜湊的。優點 等值查詢快,通過hash值直接定位到具體的資料。缺點 範圍查...