Oracle高階查詢——多表連線
阿新 • • 發佈:2018-12-27
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後面一併查詢。