首頁 >資料庫 >mysql教程 >Oracle 的 ( ) 運算子如何建立外連接,為什麼應該避免它?

Oracle 的 ( ) 運算子如何建立外連接,為什麼應該避免它?

Barbara Streisand
Barbara Streisand原創
2025-01-20 02:51:13419瀏覽

How Does Oracle's ( ) Operator Create Outer Joins, and Why Should You Avoid It?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn