PENDAHULUAN
SQL Joins adalah fitur mendasar untuk menggabungkan data dari beberapa tabel berdasarkan kolom terkait. Memahami berbagai jenis gabungan dan aplikasinya sangat penting untuk bekerja dengan database relasional secara efektif. Dalam artikel ini, kami akan mengeksplorasi berbagai jenis SQL Join dengan penjelasan yang jelas dan contoh -contoh praktis.
Tabel Sampel
Kami akan menggunakan tabel pelanggan dan pesanan berikut untuk contoh:
Tabel Pelanggan:
Customerid |
Nama |
Negara |
---|---|---|
1 |
Alice |
Amerika Serikat |
2 |
Bob |
Kanada |
3 |
Charlie |
Inggris |
4 |
Diana |
Jerman |
Tabel Pesanan:
Memesan |
Customerid |
Produk |
Kuantitas |
---|---|---|---|
101 |
1 |
Laptop |
2 |
102 |
1 |
Mouse |
5 |
103 |
2 |
Keyboard |
3 |
104 |
3 |
Monitor |
1 |
105 |
5 |
Smartphone |
2 |
1. Batu dalam: Menggabungkan data yang cocok
Baris gabung dalam mengambil baris yang memiliki nilai yang cocok di kedua tabel. Ini adalah tipe gabungan yang paling umum digunakan.
Contoh: Menggabungkan pelanggan dan pesanan mereka
Pertanyaan:
SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
Nama |
Produk |
Kuantitas |
---|---|---|
Alice |
Laptop |
2 |
Alice |
Mouse |
5 |
Bob |
Keyboard |
3 |
Charlie |
Monitor |
1 |
Penjelasan:
- Hanya pelanggan dengan pesanan yang muncul dalam hasilnya.
- Pelanggan Diana dan Order 105 dikecualikan karena mereka tidak memiliki catatan yang cocok di kedua tabel.
2. BERGABUNG KIRI: Termasuk semua catatan dari meja kiri
BERGABUNG KIRI Mengembalikan semua baris dari meja kiri (Pelanggan), bersama dengan baris yang cocok dari meja kanan (Pesanan). Baris tanpa kecocokan di tabel yang tepat akan memiliki nilai nol.
Contoh: termasuk pelanggan tanpa pesanan
Pertanyaan:
SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
Nama |
Produk |
Kuantitas |
---|---|---|
Alice |
Laptop |
2 |
Alice |
Mouse |
5 |
Bob |
Keyboard |
3 |
Charlie |
Monitor |
1 |
Diana |
BATAL |
BATAL |
Penjelasan:
- Semua pelanggan disertakan, bahkan jika mereka tidak memiliki pesanan.
- Diana muncul dengan nol untuk produk dan kuantitas.
3. Kanan bergabung: termasuk semua catatan dari tabel kanan
Bergabung kanan adalah kebalikan dari gabungan kiri. Ini mencakup semua baris dari tabel kanan (pesanan) dan baris yang cocok dari meja kiri (pelanggan). Baris tanpa kecocokan di tabel kiri akan memiliki nilai nol.
Contoh: termasuk pesanan tanpa pelanggan
Pertanyaan:
SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
Nama |
Produk |
Kuantitas |
---|---|---|
Alice |
Laptop |
2 |
Alice |
Mouse |
5 |
Bob |
Keyboard |
3 |
Charlie |
Monitor |
1 |
BATAL |
Smartphone |
2 |
Penjelasan:
- Semua pesanan disertakan, bahkan jika mereka tidak memiliki pelanggan yang cocok.
- Pesan 105 muncul dengan null untuk nama karena customerid = 5 tidak ada di tabel pelanggan.
4. Lengkap Luar: termasuk semua catatan dari kedua tabel
Join luar lengkap menggabungkan hasil gabungan kiri dan bergabung kanan, mengembalikan semua baris dari kedua tabel. Baris tanpa kecocokan akan memiliki nilai nol untuk kolom yang hilang.
Contoh: Menggabungkan semua pelanggan dan pesanan
Pertanyaan:
SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Hasil:
Nama |
Produk |
Kuantitas |
---|---|---|
Alice |
Laptop |
2 |
Alice |
Mouse |
5 |
Bob |
Keyboard |
3 |
Charlie |
Monitor |
1 |
Diana |
BATAL |
BATAL |
BATAL |
Smartphone |
2 |
Penjelasan:
- Semua pelanggan dan pesanan disertakan.
- Diana (tidak ada pesanan) dan pesanan 105 (tidak ada pelanggan yang cocok) muncul dengan nilai nol.
5. Cross Gabungan: Produk Cartesian
Cross Join Mengembalikan produk Cartesian dari dua meja, memasangkan setiap baris dari meja kiri dengan setiap baris dari meja kanan.
Contoh: Memasangkan pelanggan dengan produk
Pertanyaan:
SELECT Customers.Name, Orders.Product
FROM Customers
CROSS JOIN Orders;
Hasil:
Nama |
Produk |
---|---|
Alice |
Laptop |
Alice |
Mouse |
Alice |
Keyboard |
Alice |
Monitor |
Alice |
Smartphone |
Bob |
Laptop |
Bob |
Mouse |
… |
… |
Penjelasan:
- Setiap pelanggan dipasangkan dengan setiap produk, menghasilkan 20 baris (4 pelanggan x 5 pesanan).
6. Self bergabung: Bergabung dengan meja dengan dirinya sendiri
Self goint digunakan untuk membandingkan baris dalam tabel yang sama. Ini berguna untuk data hierarkis atau hubungan.
Contoh: Hubungan karyawan-manajer
Asumsikan kami memiliki tabel karyawan:
Karyawan |
Nama |
Manajer |
---|---|---|
1 |
Alice |
3 |
2 |
Bob |
3 |
3 |
Charlie |
BATAL |
4 |
Diana |
1 |
Pertanyaan: Temukan karyawan dan manajer mereka.
SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1
LEFT JOIN Employees E2
ON E1.ManagerID = E2.EmployeeID;
Hasil:
Karyawan |
Manajer |
---|---|
Alice |
Charlie |
Bob |
Charlie |
Charlie |
BATAL |
Diana |
Alice |
Penjelasan:
- Tabel ini bergabung dengan dirinya sendiri menggunakan ManagerID dan karyawan untuk mengaitkan karyawan dengan manajer mereka.
Ringkasan gabungan
Bergabunglah dengan tipe |
Keterangan |
Contoh Penggunaan Kasus |
---|---|---|
Batin bergabung |
Cocokkan baris di kedua tabel. |
Pelanggan dengan pesanan. |
Kiri bergabung |
Semua baris dari meja kiri, mencocokkan baris dari kanan. |
Pelanggan dengan atau tanpa pesanan. |
Bergabung dengan benar |
Semua baris dari meja kanan, mencocokkan baris dari kiri. |
Pesanan dengan atau tanpa pelanggan. |
Gabungan luar lengkap |
Semua baris dari kedua tabel, dengan nol untuk pertandingan yang hilang. |
Lengkapi data pelanggan dan pesanan. |
Silang bergabung |
Produk Cartesian dari dua tabel. |
Memasangkan pelanggan dengan produk. |
Bergabunglah sendiri |
Bergabunglah dengan meja dengan dirinya sendiri. |
Hubungan karyawan-manajer. |
Kesimpulan
Memahami SQL Joins adalah kunci untuk bekerja dengan database relasional. Setiap jenis gabungan memiliki tujuan yang unik, dan menguasainya akan membantu Anda menggabungkan dan menganalisis data secara efisien. Latih contoh -contoh ini untuk memperkuat pemahaman Anda!
Terima kasih telah meluangkan waktu untuk mengeksplorasi wawasan terkait data dengan saya. Saya menghargai pertunangan Anda. Jika Anda menemukan informasi ini bermanfaat, saya mengundang Anda untuk mengikuti saya atau terhubung dengan saya di LinkedIn. Selamat menjelajahi! 👋