Inner Join vs Outer Join
Kemasukan dalaman dan menyertai Luar merupakan dua kaedah bergabung SQL yang digunakan dalam pemprosesan pertanyaan untuk pangkalan data. Mereka tergolong dalam keluarga menyertai klausa (dua lagi adalah Kiri dan Kanan Bergabung). Walau bagaimanapun, terdapat Self Join yang boleh digunakan untuk situasi khusus. Tujuan Sertai adalah menggabungkan medan menggunakan nilai-nilai bersama ke dua jadual. Gabungan ini menggabungkan rekod dari beberapa jadual dalam pangkalan data. Ia mencipta set hasil, yang boleh disimpan sebagai jadual lain.
Apa yang dimaksudkan oleh Inner?
Operasi Sertai Bersama SQL yang sering digunakan ialah Join Inner. Ia boleh dianggap sebagai jenis gabungan lalai yang digunakan dalam aplikasi. Masuk dalaman menggunakan predikat gabungan 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 tersebut. Nilai kolom bagi semua baris yang dipenuhi jadual A dan B digabungkan untuk menghasilkan hasil. Ia boleh dilihat sebagai pertama mengambil salib bergabung (produk Cartesian) semua rekod dan kemudian kembali hanya rekod yang memenuhi predikat gabungan. Walau bagaimanapun, dalam kenyataannya, produk Cartesian tidak dikira kerana ia sangat tidak cekap. Hash join atau sort-merge join digunakan sebaliknya.
Apa yang Bermula Bergabung?
Tidak seperti, Inner join, bahagian luar menyimpan semua rekod walaupun ia tidak dapat mencari rekod yang sepadan. Ini bermakna bahagian luar memerlukan rekod untuk mencari rekod sepadan untuk muncul dalam hasilnya. Sebaliknya, ia akan mengembalikan semua rekod, tetapi rekod yang tidak dapat ditandingi akan mempunyai nilai nol. Penggabung luar terbahagi kepada tiga kategori sub. Mereka dibiarkan bersama luar, menyertai luar kanan dan menyertai luar penuh. Pembezaan ini didasarkan pada jadual mana jadual (jadual kiri, jadual kanan atau kedua-dua jadual) dikekalkan apabila rekod yang tidak dapat ditandingi dijumpai. Meninggalkan bahagian luar kiri (juga dikenali sebagai hanya kiri menyertai) mengekalkan semua rekod jadual kiri. Ini bermakna, walaupun rekod padanan nombor adalah sifar, maka ia masih mempunyai rekod dalam jadual hasil, tetapi akan mempunyai nilai nol untuk semua lajur B. Dengan kata lain, semua nilai dari jadual kiri dikembalikan dengan nilai yang dipadankan dari kanan jadual (atau nilai batal apabila tidak dapat ditandingi). Jika nilai dari berbilang baris dari jadual kiri dipadankan dengan satu baris dari jadual kanan, baris dari jadual kanan akan diulang seperti yang diperlukan. Gabungan luar kanan hampir sama dengan bahagian luar kiri, tetapi rawatan meja dihormati. Ini bermakna hasilnya akan mempunyai semua baris jadual kanan sekurang-kurangnya sekali dengan nilai meja kiri yang dipadankan (dan nilai-nilai nol untuk nilai yang tidak dapat ditandingi). Sambungan luar penuh lebih komprehensif daripada kedua-dua belah kiri dan kanan. Ia mengakibatkan gabungan kedua-dua belah kiri dan kanan bergabung bersama.
Apakah perbezaan di antara Join and Outer Join??
Kemasukan dalaman tidak menyimpan baris yang tidak dapat ditandingi dalam hasilnya, tetapi gabungan luar akan menyimpan semua rekod dari sekurang-kurangnya satu meja (bergantung kepada yang mana bahagian luar telah digunakan). Oleh itu, tingkah laku tidak mempunyai maklumat yang hadir pada baris yang tidak dapat ditandingi dalam jadual hasil adalah tidak diingini, anda perlu sentiasa menggunakan salah satu gabungan luar (di tempat penyambung batin). Kemasukan dalaman mungkin tidak menghasilkan hasil jika tiada padanan ditemui. Tetapi gabungan luar akan selalu menghasilkan meja yang dihasilkan, walaupun tanpa baris yang hampir sama. Kemasukan dalaman akan sentiasa mengembalikan jadual dengan nilai (jika dikembalikan). Tetapi sambungan luaran mungkin menghasilkan jadual dengan nilai nol.