1. 程式人生 > >Oracle高階查詢——多表連線

Oracle高階查詢——多表連線

2.1 多表查詢

 用一個連線從多個表中獲取資料

 

 同一列名多表使用時要寫上表名做字首,也可以使用別名代替做字首。

2.2 笛卡爾積

 列數等於各列數相加,行數等於各行數相乘;

在實際執行環境下,應避免使用笛卡兒積全集;為了避免笛卡爾積,可以在where加入有效的連線條件;

笛卡爾積中的連線條件至少有n-1個,n代表所連線的表的個數

2.3 等值連線

2.4 不等值連線

連線條件不是等號

2.5 外聯接

 通過外聯接,把對於連線條件不成立的記錄任然包含在最後的結果中;

左外連線:當連線條件不成立時,等號左邊的表依然被包含;

是在等號右邊加上“(+)”;

右外聯接:當連線條件不成立時,等號右邊的表任然被包含;是在等號左邊加上“(+)”;

例如:按部門統計員工人數,顯示:部門號,部門名稱,部門人數

2.6 自連線

通過別名,將一張表視為多張表;

自連線存在的隱患:自連線不適合操作大表。自連線會存在笛卡爾積。

2.7 層次連線

層次查詢是Oracle中特有的一種單表查詢;

使用關鍵字prior,此關鍵字代表上一層;

使用start with函式,區別開始於哪一層,即從哪一個根節點開始。此處可以使用該層的值表示,如果是首層,也可使用上一 層為null條件表示。

層次查詢中都會有level這個虛擬列,如果要顯示,必須在select後面一併查詢。