Sertai Dalaman berbanding Sertai Luar


Dalam SQL, a menyertai digunakan untuk membandingkan dan menggabungkan - secara literal menyertai - dan mengembalikan baris tertentu data dari dua atau lebih jadual dalam pangkalan data. An dalam batin mencari dan mengembalikan data yang hampir sama dari jadual, sementara satu bahagian luar mencari dan mengembalikan data yang sepadan dan beberapa data berbeza dari jadual.

laporkan iklan ini

Sertai dalaman

Gabungan batin memberi tumpuan kepada kesamaan antara dua jadual. Apabila menggunakan gabungan dalaman, mesti ada sekurang-kurangnya beberapa data yang hampir sama antara dua (atau lebih) jadual yang sedang dibandingkan. Melampirkan jadual carian untuk data padanan atau tumpang tindih. Apabila mencari, gabungan dalaman menggabungkan dan mengembalikan maklumat ke dalam satu jadual baru.

Contoh Dalaman Masuk

Mari kita pertimbangkan satu senario biasa dua jadual: harga dan kuantiti produk. Maklumat biasa dalam dua jadual adalah nama produk, jadi lajur logik untuk menyertai jadual pada. Terdapat beberapa produk yang lazim dalam kedua-dua jadual; yang lain adalah unik untuk salah satu jadual dan tidak mempunyai perlawanan dalam jadual lain.

Sambungan dalaman Produk mengembalikan maklumat tentang hanya produk yang biasa di kedua-dua jadual.

Sertai Luar

Sambungan luar mengembalikan satu set rekod (atau baris) yang merangkumi apa yang ada dalam batin akan kembali tetapi juga termasuk baris lain yang tidak ada padanan yang sama di dalam jadual lain.

Terdapat tiga jenis kelebihan luar:

  • Left Outer Join (atau Sertai Kiri)
  • Sertai Luar Tua (atau Sertai Yang Benar)
  • Sertai Outer Penuh (atau Sertai Penuh)

Setiap gabungan luar merujuk kepada bahagian data yang sedang dibanding, digabungkan, dan dikembalikan. Kadang-kadang batal akan dihasilkan dalam proses ini kerana sesetengah data dikongsi sementara data lain tidak.

Left Outer Join

Satu bahagian luar kiri akan mengembalikan semua data dalam Jadual 1 dan semua data yang dikongsi (jadi, bahagian dalaman contoh gambarajah Venn), tetapi hanya data yang sepadan dari Jadual 2, yang merupakan hak kanan.

Kiri Sertai Contoh

Dalam pangkalan data contoh kami, terdapat dua produk - oren dan tomato - di 'kiri' (Harga jadual) yang tidak mempunyai entri yang sepadan pada 'kanan' (jadual kuantiti). Di sebelah kiri, baris ini dimasukkan ke dalam keputusan yang ditetapkan dengan NULL dalam lajur Kuantiti. Baris yang lain dalam hasilnya adalah sama dengan gabungan dalaman.

Sertai Luar Tepat

Sambungan luar kanan mengembalikan data Jadual 2 dan semua data yang dikongsi, tetapi hanya data yang sepadan dari Jadual 1, yang merupakan gabungan kiri.

Contoh Gabungan Kanan

Sama seperti contoh menyertai kiri, keluaran gabungan luar kanan merangkumi semua baris gabungan dalaman dan dua baris - brokoli dan squash - dari 'kanan' (Kuantiti jadual) yang tidak mempunyai entri sepadan di sebelah kiri.

Sertai Luar Penuh

Sambungan luar penuh, atau gabungan penuh, iaitu tidak disokong oleh sistem pengurusan pangkalan data MySQL yang popular, menggabungkan dan mengembalikan semua data dari dua atau lebih jadual, tidak kira sama ada terdapat maklumat yang dikongsi. Fikirkan gabungan penuh kerana hanya menduplikasi semua maklumat yang ditentukan, tetapi dalam satu jadual, bukannya beberapa jadual. Jika data padanan hilang, batal akan dihasilkan.

Ini hanya asas, tetapi banyak perkara boleh dilakukan dengan bergabung. Terdapat juga gabungan yang boleh menolak pengecualian lain!

Video Menjelaskan Inner vs Outer Joins

Video ini menerangkan perbezaan antara pelbagai jenis gabungan. Ia bersesuaian untuk bermula pada titik di mana perbincangan mengenai bergabung bermula.

Rujukan

  • Perbezaan antara peserta dalaman dan luaran - Stack Overflow
  • Sertai SQL dalaman - Quackit
  • Sertai Luar SQL - Quackit
  • Menggunakan Penglibatan Dalaman - Microsoft SQL Server
  • Menggunakan Pengambilan Luar - Microsoft SQL Server
  • Perwakilan Visual SQL Joins - CodeProject
  • Wikipedia: Bergabung (SQL)