Rumah >pangkalan data >tutorial mysql >SQL JOINs: USING, ON, or WHERE – Sintaks Mana Yang Perlu Anda Pilih?

SQL JOINs: USING, ON, or WHERE – Sintaks Mana Yang Perlu Anda Pilih?

Susan Sarandon
Susan Sarandonasal
2025-01-21 22:01:14932semak imbas

SQL JOINs: USING, ON, or WHERE – Which Syntax Should You Choose?

Perbandingan kaedah SQL JOIN: USING, ON and WHERE

SQL menyediakan tiga sintaks untuk melaksanakan operasi JOIN: USING, ON dan WHERE. Walaupun sintaks ini kelihatan serupa, ia boleh menjejaskan kebolehbacaan pertanyaan, ketepatan dan prestasi.

GUNAKAN sintaks

Sintaks

USING menggunakan kata kunci USING diikuti dengan nama lajur yang biasa kepada kedua-dua jadual untuk menentukan lajur gabungan:

<code class="language-sql">SELECT * FROM a JOIN b USING(ID);</code>

HIDUP sintaks

Sintaks

ON menggunakan kata kunci ON dan ungkapan kesamaan antara lajur yang dicantumkan untuk mentakrifkan syarat-syarat penyertaan secara eksplisit:

<code class="language-sql">SELECT * FROM a JOIN b ON a.ID = b.ID;</code>

WHERE sintaks

Sintaks WHERE menggabungkan syarat cantuman dan penapis dalam klausa WHERE:

<code class="language-sql">SELECT * FROM a, b WHERE a.ID = b.ID;</code>

Pertimbangan prestasi

Tiada perbezaan prestasi yang ketara antara pilihan sintaks ini. Walau bagaimanapun, disebabkan kemungkinan kekaburan, terutamanya dengan pertanyaan yang melibatkan OUTER JOIN, sintaks WHERE tidak disyorkan.

Perbezaan semantik

Sintaks

USING secara eksplisit menyatakan hanya lajur gabungan, yang memberikan kejelasan dan mengurangkan risiko syarat gabungan yang salah.

Sintaks

ON membenarkan syarat gabungan yang lebih kompleks, termasuk pengendali ketidaksamaan (=, !=, >) atau syarat gabungan tambahan (mis., DAN/ATAU).

Sintaks WHERE secara tersirat melaksanakan INNER JOIN berdasarkan kesamaan lajur yang ditentukan. Ini boleh membawa kepada produk Cartesian yang tidak dijangka atau hasil yang salah untuk sambungan luar.

Contoh penerangan

Pertimbangkan pertanyaan berikut:

<code class="language-sql">FROM T1,T2,T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42</code>

Tidak jelas sama ada T1.foo = 'bar' ialah syarat cantum atau syarat penapis.

Menulis semula pertanyaan menggunakan sintaks ON boleh memberikan kejelasan:

<code class="language-sql">FROM T1
   INNER JOIN T2 ON T1.ID = T2.ID
WHERE
   T1.foo = 'bar' AND T2.fish = 42</code>

Kesimpulan

Walaupun pilihan sintaks USING, ON, dan WHERE semuanya boleh mencapai operasi JOIN, sintaks ON biasanya lebih disukai kerana kebolehbacaan, ketepatan dan ketekalannya yang lebih baik dalam mengendalikan cantuman luar. Sintaks USING memberikan kesederhanaan, manakala sintaks WHERE harus dielakkan kerana potensi kekaburannya.

Atas ialah kandungan terperinci SQL JOINs: USING, ON, or WHERE – Sintaks Mana Yang Perlu Anda Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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