Gabung Dalam vs Gabung Luar
Inner join dan Outer join adalah dua metode penggabungan SQL yang digunakan dalam pemrosesan kueri untuk database. Mereka termasuk dalam keluarga klausa gabungan (dua lainnya adalah Gabungan Kiri dan Kanan). Namun, ada Self Join yang dapat digunakan untuk situasi khusus. Tujuan Gabung adalah untuk menggabungkan bidang menggunakan nilai umum ke dua tabel. Gabungan ini menggabungkan catatan dari beberapa tabel dalam database. Ini menciptakan kumpulan yang dihasilkan, yang dapat disimpan sebagai tabel lain.
Apa itu Inner Join?
Operasi SQL Join yang paling umum digunakan adalah Inner Join. Ini dapat dianggap sebagai jenis gabungan default yang digunakan dalam aplikasi. Inner join menggunakan predikat join untuk menggabungkan dua tabel. Asumsikan kedua tabel tersebut adalah A dan B, maka join-predicate akan membandingkan baris A dan B untuk mengetahui semua pasangan yang memenuhi predikat. Nilai kolom dari semua baris tabel A dan B yang terpenuhi digabungkan untuk membuat hasilnya. Ini dapat dilihat sebagai pertama mengambil gabungan silang (produk Cartesian) dari semua catatan dan kemudian hanya mengembalikan catatan yang memenuhi predikat bergabung. Namun pada kenyataannya, produk Cartesian tidak dihitung karena sangat tidak efisien. Hash join atau sort-merge join digunakan sebagai gantinya.
Apa itu Outer Join?
Tidak seperti, Inner join, outer join menyimpan semua record meskipun tidak dapat menemukan record yang cocok. Itu berarti outer join memang membutuhkan record untuk menemukan record yang cocok agar bisa muncul di hasil. Sebaliknya, itu akan mengembalikan semua catatan, tetapi catatan yang tidak cocok akan memiliki nilai nol. Gabungan luar dibagi menjadi tiga sub kategori. Mereka adalah gabungan luar kiri, gabungan luar kanan, dan gabungan luar penuh. Diferensiasi ini didasarkan pada baris tabel (tabel kiri, tabel kanan, atau kedua tabel) mana yang dipertahankan ketika record yang tidak cocok ditemukan. Gabungan luar kiri (juga dikenal sebagai gabungan kiri saja) menyimpan semua catatan tabel kiri. Itu berarti, bahkan jika nomor yang cocok dengan catatan adalah nol, maka itu akan tetap memiliki catatan di tabel hasil, tetapi akan memiliki nilai nol untuk semua kolom B. Dengan kata lain, semua nilai dari tabel kiri dikembalikan dengan nilai yang cocok dari kanan tabel (atau nilai nol jika tidak cocok). Jika nilai dari beberapa baris dari tabel kiri dicocokkan dengan satu baris dari tabel kanan, baris dari tabel kanan akan diulang sesuai kebutuhan. Gabung luar kanan hampir mirip dengan gabungan luar kiri, tetapi perlakuan tabel dihormati. Itu berarti hasilnya akan memiliki semua baris tabel kanan setidaknya sekali dengan nilai tabel kiri yang cocok (dan nilai nol untuk nilai kanan yang tidak cocok). Gabung luar penuh lebih komprehensif daripada gabungan luar kiri dan kanan. Ini menghasilkan kombinasi efek penerapan gabungan luar kiri dan kanan.
Apa perbedaan antara Inner Join dan Outer Join?
Inner Join tidak menyimpan baris yang tidak cocok dalam hasil, tetapi outer join akan menyimpan semua record dari setidaknya satu tabel (tergantung pada outer join mana yang telah digunakan). Jadi, perilaku tidak memiliki informasi yang ada pada baris yang tidak cocok di tabel hasil tidak diinginkan, Anda harus selalu menggunakan salah satu gabungan luar (sebagai pengganti gabungan dalam). Gabungan dalam mungkin tidak memberikan hasil jika tidak ada kecocokan yang ditemukan. Tetapi gabungan luar akan selalu menghasilkan tabel yang dihasilkan, bahkan tanpa baris yang cocok. Gabung dalam akan selalu mengembalikan tabel dengan nilai (jika dikembalikan). Tetapi gabungan luar dapat menghasilkan tabel dengan nilai nol.