Oracle 的 ( ) 運算子:一種傳統的外連接方法
較舊的 SQL 程式碼經常使用 Oracle 的 ( ) 運算符,這是許多開發人員不熟悉的語法。 此運算符對於在 ANSI-89 標準之前建立 OUTER JOIN 至關重要,該標準缺乏明確的 OUTER JOIN 支援。
( ) 運算子本質上建立了一個 LEFT OUTER JOIN。 它允許一個表(假設表“b”)中的行根據指定的 ID 欄位與另一個表(“a”)中的行連接。如果「b」中的行在「a」中沒有符合的行,則「b」中的對應列將在結果集中包含 NULL 值。
刪除 ( ) 會將連線變更為 INNER JOIN,僅傳回兩個表中 ID 相符的行。 因此,當您需要一個表中的所有行並接受另一個表中不匹配的行的潛在 NULL 時,( ) 至關重要。
儘管有其功能,Oracle 強烈建議不要使用 ( ) 運算子。 它是非標準的(不符合 ANSI),阻礙了向其他資料庫系統的可移植性。 此外,它還受到使用標準 FROM
子句語法建立的 OUTER JOIN 中未發現的獨特規則和限制。
為了獲得更好的相容性、效能並遵守現代最佳實踐,Oracle 建議使用此標準 OUTER JOIN 語法:
<code class="language-sql">SELECT ... FROM a LEFT JOIN b ON b.id = a.id</code>
這可以實現與 ( ) 運算子相同的結果,同時利用 ANSI-92 語法和 Oracle 最佳化的查詢執行計劃的優勢。
以上是Oracle 的 ( ) 運算子如何建立外連接,為什麼應該避免它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!