Memahami Operator Oracle ( ) dalam Sambungan Luar
Pengendali Oracle ( ), yang digunakan dalam sintaks SQL yang lebih lama untuk sambungan luar, sering menyebabkan kekeliruan. Ia adalah pengendali bukan standard, tidak seperti sintaks JOIN
standard ANSI. Mari kita periksa fungsinya dalam pertanyaan gabungan luar.
Sambungan Luar Diterangkan
Cambung luar menyambungkan baris daripada dua jadual ('a' dan 'b' dalam contoh di bawah) berdasarkan keadaan cantum (mis., a.id=b.id
). Tidak seperti INNER JOIN
, cantuman luar termasuk baris walaupun tiada padanan dalam jadual lain.
Kanan Luar Sertai dengan ( )
Pengendali ( )
dalam pernyataan Oracle berikut menetapkan sambung luar kanan:
<code class="language-sql">select ... from a, b where a.id = b.id(+)</code>
Pertanyaan ini mengembalikan semua baris daripada jadual 'b'. Jika baris dalam 'b' mempunyai padanan id
dalam 'a', baris yang sepadan daripada 'a' disertakan. Jika tidak, lajur daripada 'a' akan mempunyai nilai NULL
dalam set hasil.
Alternatif Moden
Oracle sangat menasihati menggunakan sintaks JOIN
standard ANSI-92, yang lebih jelas dan lebih mantap:
ANSI-92 (Disyorkan):
<code class="language-sql">SELECT ... FROM a RIGHT JOIN b ON b.id = a.id</code>
Sintaks ( ) Oracle (Ditamatkan):
<code class="language-sql">select ... from a,b where a.id=b.id(+)</code>
Pertimbangan Penting
Operator ( )
mempunyai had dan keanehan yang tidak terdapat dalam sintaks JOIN
standard. Untuk kebolehbacaan, kebolehselenggaraan yang lebih baik dan untuk mengelakkan tingkah laku yang tidak dijangka, sentiasa utamakan sintaks ANSI-92 JOIN
semasa menulis pertanyaan gabungan luar dalam Oracle.
Atas ialah kandungan terperinci Apakah Operator Oracle ( ) dan Bagaimana Ia Berfungsi dalam OUTER JOINs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!