SQL Outer Join

Sql Outer Join



Tidak perlu dikatakan bahawa gabungan adalah salah satu ciri pangkalan data hubungan yang paling boleh dikenal pasti. Gabungan membolehkan kami menggabungkan data daripada satu atau lebih jadual berdasarkan keadaan yang berkaitan untuk mencipta operasi data yang koheren.

Terdapat pelbagai jenis cantuman dalam SQL, masing-masing dengan cara unik bagaimana ia mengendalikan data daripada jadual yang mengambil bahagian atau set yang terhasil. Salah satu jenis gabungan yang paling biasa dalam SQL ialah OUTER JOIN.







OUTER JOIN dalam SQL mendapatkan semula semua baris yang sepadan daripada jadual yang terlibat serta baris yang tidak sepadan daripada satu atau kedua-dua jadual. Ia berguna apabila anda berurusan dengan jadual yang mengandungi nilai NULL atau set yang hilang.



Mari kita terokai lebih lanjut perkara yang dilakukan oleh gabungan ini, cara ia berfungsi dan cara kita boleh menggunakannya dalam pangkalan data SQL.



Keperluan:

Untuk tutorial ini, kami akan bekerja dengan MySQL 8.0 dan menggunakan pangkalan data sampel Sakila. Walau bagaimanapun, jangan ragu untuk menggunakan mana-mana set data lain yang anda anggap sesuai.





Jenis Sambungan Luar

Terdapat tiga jenis OUTER JOINS utama dalam SQL. Jenis OUTER JOINS ini termasuk:

  1. Kiri OUTER JOINS

  2. Dalam kes LEFT OUTER JOINS, gabungan mendapatkan semula semua baris dari jadual kiri dan hanya baris yang sepadan dari jadual kanan. Jika tiada baris yang sepadan dari jadual kanan, gabungan mengembalikan nilai NULL untuk lajur pada jadual kanan.



  3. Kanan OUTER JOINS

  4. Ini adalah serupa dengan RIGHT OUTER JOIN. Walau bagaimanapun, ia mendapatkan semula semua baris dari jadual kanan tetapi hanya baris yang sepadan dari jadual kiri. Jika tiada baris yang sepadan dari jadual kiri, cantuman termasuk nilai NULL untuk lajur pada jadual kiri.

  5. SERTAI LUAR PENUH

  6. Akhir sekali, kami mempunyai SERTAI LUAR PENUH. Cantuman jenis ini menggabungkan cantuman luar KANAN dan KIRI. Akibatnya, gabungan mendapatkan semula semua baris apabila terdapat padanan sama ada di meja kiri atau kanan. Jika tiada padanan, gabungan mengembalikan nilai NULL untuk lajur daripada jadual tanpa padanan.

Sintaks SQL OUTER JOIN

Yang berikut menyatakan sintaks SQL OUTER JOIN. Walau bagaimanapun, adalah baik untuk diingat bahawa sintaks mungkin berbeza sedikit bergantung pada enjin pangkalan data sasaran.

Berikut adalah struktur umum:

PILIH lajur
DARI jadual1
[KIRI | BETUL | PENUH] LUAR JOIN jadual2
PADA table1.column_name = table2.column_name;

Sintaks OUTER JOIN dalam SQL cukup jelas.

Contoh:

Mari kita lihat beberapa contoh penggunaan tentang cara kita boleh menggunakan pelbagai jenis OUTER JOINS dalam SQL.

Seperti yang kami nyatakan, kami akan menggunakan pangkalan data sampel Sakila untuk demonstrasi. Dalam kes ini, kami menggunakan jadual 'pelanggan' dan 'pembayaran'.

Contoh 1: SERTAI LUAR KIRI

Mari kita mulakan dengan OUTER JOIN. Katakan kami ingin mendapatkan semua maklumat pelanggan bersama-sama dengan maklumat pembayaran mereka, jika ada.

Ini menjadikan LEFT OUTER JOIN terpakai kerana kami mahu semua maklumat pelanggan (di sebelah kiri) dan maklumat pembayaran jika tersedia (kanan).

Jika pelanggan belum membuat sebarang pembayaran, penyertaan akan menunjukkan nilai NULL untuk lajur berkaitan pembayaran.

Contohnya adalah seperti berikut:

PILIH
c.customer_id,
c.nama_pertama,
c.last_name,
p.jumlah,
p.tarikh_bayaran
DARI
pelanggan c
KIRI OUTER JOIN pembayaran p
HIDUP
c.customer_id = p.customer_id;

Dalam pertanyaan yang diberikan, kami memasukkan lajur 'id_pelanggan', 'nama_pertama' dan 'nama_keluarga' daripada jadual 'pelanggan'. Kami juga memasukkan amaun dan 'tarikh_bayaran' daripada jadual 'pembayaran'.

Kami kemudian melakukan LEFT OUTER JOIN antara jadual 'pelanggan' dan 'pembayaran' berdasarkan 'customer_id'.

Ini semua adalah pelanggan (sama ada pembayaran dibuat atau tidak) bersama dengan butiran pembayaran mereka (jika ada).

Contoh output adalah seperti berikut:

Contoh 2: SERTAI LUAR KANAN

Sekarang, mari kita beralih ke JOIN LUAR KANAN. Katakan kami ingin memasukkan semua maklumat pembayaran dan pelanggan yang berkaitan dalam kes ini, jika ada.

Dalam kes ini, jika pembayaran dibuat oleh pelanggan, penyertaan akan memaparkan butiran pelanggan tersebut. Jika terdapat pembayaran tanpa pelanggan yang berkaitan, ia akan menunjukkan nilai NULL untuk lajur berkaitan pelanggan.

PILIH
c.customer_id,
c.nama_pertama,
c.last_name,
p.jumlah,
p.tarikh_bayaran
DARI
pelanggan c
KANAN LUAR JOIN pembayaran p
HIDUP
c.customer_id = p.customer_id;

Set yang terhasil adalah seperti berikut:

Contoh 3: SERTAI LUAR PENUH

SERTAI LUAR PENUH, sebaliknya, mendapatkan semula semua maklumat dan pembayaran pelanggan. Ini termasuk semua pelanggan dan semua pembayaran dan menunjukkan nilai NULL di mana tiada padanan antara jadual.

PILIH
c.customer_id,
c.nama_pertama,
c.last_name,
p.jumlah,
p.tarikh_bayaran
DARI
pelanggan c
Bayaran PENUH OUTER JOIN p
HIDUP
c.customer_id = p.customer_id;

Adalah baik untuk diingat bahawa MySQL tidak asli menyokong FULL OUTER JOIN. Anda perlu melakukan sihir jiujitsu dengan JOIN KIRI, KESATUAN dan SERTAI KANAN. Agak menjengkelkan, kami mungkin menambah.

Kesimpulan

Dalam tutorial ini, kami mempelajari semua tentang OUTER JOINS. Kami mempelajari apa itu OUTER JOIN dalam SQL, jenis OUTER JOINS dan contoh cara menggunakan jenis OUTER JOINS ini.