Perbezaan antara gabungan dalaman dan gabungan luar

Perbezaan antara gabungan dalaman dan gabungan luar

Inner Join vs Outer Join

Sertai dalaman dan gabungan luar adalah dua kaedah menyertai SQL yang digunakan dalam pemprosesan pertanyaan untuk pangkalan data. Mereka tergolong dalam keluarga menyertai klausa (dua yang lain yang tinggal dan kanan bergabung). Walau bagaimanapun, terdapat gabungan diri yang boleh digunakan untuk situasi khusus. Tujuan menyertai adalah untuk menggabungkan bidang menggunakan nilai bersama ke dua jadual. Ini bergabung menggabungkan rekod dari pelbagai jadual dalam pangkalan data. Ia mewujudkan set yang dihasilkan, yang boleh disimpan sebagai jadual lain.

Apa yang gabungan dalaman?

Operasi SQL yang paling biasa digunakan adalah gabungan dalaman. Ia boleh dianggap sebagai jenis lalai gabungan yang digunakan dalam aplikasi. Join Inner Gunakan Predicate Join untuk Menggabungkan Dua Jadual. Dengan mengandaikan kedua-dua jadual adalah a dan b, maka predikat gabungan akan membandingkan baris a dan b untuk mengetahui semua pasangan yang memenuhi predikat. Nilai lajur semua baris yang berpuas hati dengan jadual A dan B digabungkan untuk menghasilkan hasilnya. Ia dapat dilihat sebagai pertama kali mengambil silang silang (produk Cartesian) dari semua rekod dan kemudian kembali hanya rekod yang memenuhi predikat gabungan. Walau bagaimanapun, pada hakikatnya, produk Cartesian tidak dikira kerana ia sangat tidak cekap. Hash Join atau Sort-Mere Join digunakan, sebaliknya.

Apa itu Sertai Luar?

Tidak seperti, gabungan dalaman, gabungan luar menyimpan semua rekod walaupun ia tidak dapat mencari rekod yang sepadan. Itu bermakna gabungan luar memerlukan rekod untuk mencari rekod yang sepadan untuk muncul dalam hasilnya. Sebaliknya, ia akan mengembalikan semua rekod, tetapi rekod yang tidak dapat ditandingi akan mempunyai nilai nol. Gabungan luar dibahagikan kepada tiga sub kategori. Mereka dibiarkan luaran menyertai, gabungan luar kanan dan gabungan luar penuh. Pembezaan ini didasarkan pada baris meja (meja kiri, meja kanan atau kedua -dua jadual) dikekalkan apabila rekod yang tidak dapat ditandingi dijumpai. Kiri Luar Kiri (juga dikenali sebagai Simply Left Join) mengekalkan semua rekod meja kiri. Maksudnya, walaupun rekod padanan nombor adalah sifar, maka ia masih akan mempunyai rekod dalam jadual hasil, tetapi akan mempunyai nilai null untuk semua lajur b. Dalam erti kata lain, semua nilai dari jadual kiri dikembalikan dengan nilai yang dipadankan dari jadual kanan (atau nilai null apabila tidak dapat ditandingi). Sekiranya nilai dari pelbagai baris dari jadual kiri dipadankan dengan satu baris dari meja kanan, baris dari jadual kanan akan diulang seperti yang diperlukan. Sertai luar kanan hampir sama dengan gabungan luar kiri, tetapi rawatan jadual dihormati. Ini bermakna hasilnya akan mempunyai semua baris jadual kanan sekurang -kurangnya sekali dengan nilai jadual kiri yang dipadankan (dan nilai null untuk nilai yang tidak dapat ditandingi). Sertai luar penuh lebih komprehensif daripada kedua -dua gabungan luar kiri dan kanan. Ia mengakibatkan menggabungkan kesan penggunaan kedua -dua kiri dan kanan yang bergabung bersama.

Apakah perbezaan antara gabungan dalaman dan gabungan luar?

Inner Join tidak menyimpan baris yang tidak dapat ditandingi dalam hasilnya, tetapi gabungan luar akan menyimpan semua rekod dari sekurang -kurangnya satu jadual (bergantung pada gabungan luar yang telah digunakan). Oleh itu, tingkah laku tidak mempunyai maklumat yang ada pada baris yang tidak dapat ditandingi dalam jadual hasil tidak diingini, anda perlu sentiasa menggunakan salah satu gabungan luar (sebagai pengganti dalaman). Gabungan dalaman mungkin tidak menghasilkan hasil jika tiada perlawanan dijumpai. Tetapi gabungan luar akan sentiasa menghasilkan jadual yang dihasilkan, walaupun tanpa baris yang sepadan. Gabungan dalaman akan sentiasa mengembalikan jadual dengan nilai (jika dikembalikan). Tetapi gabungan luar boleh mengakibatkan jadual dengan nilai null.