SQL: Subkueri vs GABUNG
Subqueries dan join adalah dua konsep penting dalam SQL, bahasa pemrograman standar untuk mengelola dan memanipulasi database. Di blog ini, kita akan mengeksplorasi apa itu subkueri dan gabungan, bagaimana perbedaannya, dan kapan harus menggunakan masing-masing dalam kueri SQL Anda.
Apa itu Subquery?
Subquery adalah kueri di dalam kueri. Ini adalah cara untuk menyarangkan pernyataan SELECT di dalam pernyataan SELECT, INSERT, UPDATE, atau DELETE lainnya, atau di dalam pernyataan CREATE VIEW. Subquery dapat digunakan untuk melakukan berbagai tugas, seperti:
- Memfilter baris berdasarkan kondisi
- Menghitung nilai untuk digunakan dalam kueri luar
- Mengembalikan satu nilai atau beberapa nilai sebagai bagian dari kueri luar
Penggabungan adalah cara menggabungkan baris dari dua atau lebih tabel berdasarkan kolom terkait di antara mereka. Ada beberapa jenis join, antara lain INNER JOIN, OUTER JOIN, dan CROSS JOIN.
INNER JOIN hanya mengembalikan baris yang cocok dengan kondisi gabungan.
OUTER JOIN mengembalikan semua baris dari kedua tabel, termasuk yang tidak cocok dengan kondisi join. Ada dua jenis gabungan luar: LEFT JOIN dan RIGHT JOIN. LEFT JOIN mengembalikan semua baris dari tabel kiri (tabel pertama dalam kueri) dan setiap baris yang cocok dari tabel kanan. RIGHT JOIN mengembalikan semua baris dari tabel kanan (tabel kedua dalam kueri) dan setiap baris yang cocok dari tabel kiri.
CROSS JOIN mengembalikan produk Cartesian dari dua tabel, yang merupakan kombinasi dari semua baris dari kedua tabel.
Contoh Praktis:
Dalam skenario ini, kami memiliki database Hogwarts dan tabel berikut tercantum di bawah ini:
- course_table: Tabel ini berisi data tentang nama kursus dan diidentifikasi menggunakan kunci utama yang unik
- student_table: Tabel ini berisi data tentang nama siswa yang diidentifikasi dengan kunci utama yang unik
- pendaftaran_tabel: Tabel ini adalah tabel GABUNG yang menetapkan hubungan antara siswa dan kursus. Setiap kali seorang siswa mendaftar dalam kursus, rekor baru dibuat. course_id adalah foreign key untuk mengidentifikasi mata kuliah dari course_table, dan student_id adalah foreign key untuk mengidentifikasi mahasiswa dari student_table.
course:
+─────+────────────────────────────────+
| id | course |
+─────+────────────────────────────────+
| 1 | Defense against the dark arts |
| 2 | Potions |
| 3 | History of magic |
+─────+────────────────────────────────+
student:
+─────+────────────────────────────────+
| id | student |
+─────+────────────────────────────────+
| 1 | Harry Potter |
| 2 | Hermione Granger |
| 3 | Ron Weasly |
| 4 | Voldemort |
| 5 | Draco Malfoy |
+─────+────────────────────────────────+
enrollment:
+─────+────────────+─────────────+
| id | course_id | student_id |
+─────+────────────+─────────────+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 2 |
| 4 | 2 | 3 |
| 5 | 3 | 4 |
| 6 | 1 | 5 |
| 7 | 3 | 1 |
| 8 | 1 | 4 |
+─────+────────────+─────────────+
Di bawah ini adalah contoh dari pendekatan Subquery.
SELECT * FROM enrollment
WHERE enrollment.course_id IN (SELECT * FROM courses WHERE course_id = 1);
IKUTI
Di bawah ini adalah pendekatan Gabung.
SELECT * FROM course AS c
LEFT JOIN enrollment AS e ON c.id = e.course_id
WHERE e.course_id = 1
Kapan Menggunakan Subqueries dan Join
Subkueri dan gabungan keduanya dapat digunakan untuk mengambil data dari beberapa tabel, tetapi keduanya memiliki kasus penggunaan yang berbeda. Subkueri umumnya digunakan saat Anda ingin menggunakan hasil kueri dalam di klausa WHERE atau HAVING dari kueri luar. Mereka juga berguna saat Anda ingin mengembalikan nilai tunggal atau beberapa nilai sebagai bagian dari kueri luar.
Gabungan umumnya digunakan saat Anda ingin mengambil data dari beberapa tabel berdasarkan kolom terkait di antara mereka. Mereka juga berguna saat Anda ingin mengembalikan semua baris dari kedua tabel, termasuk baris yang tidak cocok dengan kondisi gabungan.
Secara umum, subkueri cenderung lebih efisien saat Anda hanya perlu mengembalikan beberapa baris, sedangkan gabungan lebih efisien saat Anda perlu mengembalikan banyak baris. Namun, perbedaan performa antara keduanya dapat bervariasi bergantung pada ukuran tabel dan kerumitan kueri.
Kesimpulannya, subkueri dan gabungan adalah dua alat penting untuk mengambil data dari beberapa tabel di SQL. Subkueri berguna untuk memfilter baris dan mengembalikan nilai sebagai bagian dari kueri luar, sedangkan gabungan berguna untuk menggabungkan baris dari beberapa tabel berdasarkan kolom terkait. Keduanya dapat digunakan untuk mencapai tujuan yang serupa, tetapi pilihan mana yang akan digunakan bergantung pada persyaratan spesifik kueri Anda.

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































