Sintaks SQL moden: LEFT JOIN dan pemilihan berbilang jadual dalam klausa FROM
SQL menyediakan dua sintaks sambungan jadual yang berbeza: (1) Senaraikan semua jadual dalam klausa FROM dan gunakan klausa WHERE untuk menentukan syarat sambungan; (2) Gunakan sintaks LEFT JOIN dan INNER JOIN. Walaupun kebanyakan dialek SQL menerima kedua-dua sintaks, yang kedua adalah lebih baik, terutamanya apabila melakukan gabungan dalaman.
Sintaks tradisional: Kekaburan cantuman luar
Sintaks tradisional (penyenaraian jadual dalam klausa FROM) terdedah kepada kekaburan apabila menggunakan JOIN DALAM dan JOIN LUAR dalam pertanyaan yang sama. Pertimbangkan contoh berikut:
<code class="language-sql">SELECT * FROM Company, Department, Employee WHERE Company.ID *= Department.CompanyID AND Department.ID = Employee.DepartmentID</code>
Pertanyaan ini direka bentuk untuk mendapatkan semula syarikat dan jabatan serta pekerja mereka, termasuk syarikat tanpa jabatan. Walau bagaimanapun, kekaburan berlaku apabila klausa WHERE menentukan gabungan dalam dan luar. Bergantung pada logik pengoptimum pertanyaan dan tetapan enjin pangkalan data, pertanyaan mungkin mengecualikan syarikat yang tiada jabatan, mengakibatkan keputusan yang salah.
Tatabahasa Moden: Kejelasan dan Kawalan
Sintaks moden menggunakan LEFT JOIN dan INNER JOIN menghilangkan kekaburan ini. Ia menyediakan kawalan eksplisit ke atas cara jadual dipadankan dengan menentukan syarat cantum dalam satu baris. Dalam contoh di atas, menggunakan sintaks moden menyelesaikan masalah ini:
<code class="language-sql">SELECT * FROM Company LEFT JOIN ( Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID ) ON Company.ID = Department.CompanyID</code>
Dalam pertanyaan di atas:
Kelebihan lain
Selain nyahkekaburan, sintaks moden mempunyai kelebihan lain:
Penyingkiran sintaks tradisional
Disebabkan kelebihan sintaks moden, sesetengah vendor (seperti Microsoft) telah menghentikan sintaks gabungan luar tradisional (menggunakan klausa WHERE) dalam versi perisian pangkalan data mereka yang lebih baharu.
Atas ialah kandungan terperinci Sertai Kiri lwn. Berbilang Jadual dalam Klausa FROM: Bilakah Saya Harus Menggunakan Sintaks SQL Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!