Rumah > pangkalan data > tutorial mysql > Sertai Kiri lwn. Berbilang Jadual dalam Klausa FROM: Bilakah Saya Harus Menggunakan Sintaks SQL Moden?

Sertai Kiri lwn. Berbilang Jadual dalam Klausa FROM: Bilakah Saya Harus Menggunakan Sintaks SQL Moden?

Linda Hamilton
Lepaskan: 2025-01-20 11:16:08
asal
461 orang telah melayarinya

Left Join vs. Multiple Tables in FROM Clause: When Should I Use the Modern SQL Syntax?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Dalam pertanyaan di atas:

  • INNER JOIN antara Jabatan dan Pekerja memastikan hanya jabatan yang mempunyai pekerja diambil semula.
  • PENYERTAAN KIRI antara Syarikat dan keputusan gabungan dalaman membolehkan syarikat tanpa jabatan dimasukkan ke dalam keluaran akhir.

Kelebihan lain

Selain nyahkekaburan, sintaks moden mempunyai kelebihan lain:

  • Penjanaan pelan pertanyaan yang dipertingkatkan: Pengoptimum pertanyaan mempunyai pemahaman yang lebih jelas tentang operasi gabungan, membolehkannya mencipta rancangan pertanyaan yang lebih cekap.
  • Lebih mudah dibaca: Sintaks moden lebih intuitif dan lebih mudah difahami, terutamanya untuk pertanyaan yang kompleks.
  • Keserasian: Sintaks moden disokong dalam kebanyakan pangkalan data moden, memastikan keserasian merentas berbilang platform.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan