SQL - IN vs EXISTS: Panduan Lengkap untuk Pemula

Hai sana, para ahli SQL masa depan! Saya sangat gembira untuk menjadi panduan Anda dalam perjalanan menarik ke dunia SQL. Hari ini, kita akan menjelajahi dua alat kuat dalam kotak peralatan SQL kita: operator IN dan EXISTS. Jangan khawatir jika Anda baru saja memulai dalam pemrograman - saya akan memandu Anda langkah demi langkah, seperti yang saya lakukan untuk ribuan murid di kelas saya selama tahun-tahun ini.

SQL - IN vs EXISTS

Operator SQL IN

Mari kita mulai dengan operator IN. Bayangkan Anda sedang merencanakan pesta dan Anda memiliki daftar teman yang ingin Anda undang. Operator IN bekerja sama seperti itu - ia memungkinkan Anda menentukan nilai ganda dalam klausa WHERE. Itu seperti mengatakan, "Saya ingin menemukan semua data yang cocok dengan salah satu nilai ini."

Sintaks Dasar

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

Contoh 1: Menemukan Buah tertentu

Asumsikan kita memiliki tabel 'fruits' dengan kolom 'id' dan 'name'. Kita ingin menemukan semua buah yang adalah apel, pisang, atau jeruk.

SELECT * FROM fruits
WHERE name IN ('apple', 'banana', 'orange');

Query ini akan mengembalikan semua baris dimana nama buah adalah apel, pisang, atau jeruk. Itu seperti bertanya, "Apakah saya bisa mendapatkan semua buah yang ada dalam daftar ini?"

Contoh 2: Menggunakan IN dengan Subquery

Operator IN menjadi lebih kuat saat digabungkan dengan subquery. Asumsikan kita memiliki tabel lain yang disebut 'favorite_fruits' yang mencatat buah kesukaan orang.

SELECT * FROM fruits
WHERE name IN (SELECT fruit_name FROM favorite_fruits);

Query ini menemukan semua buah yang menjadi buah kesukaan seseorang. Itu seperti mengatakan, "Tampilkan semua buah yang ada dalam daftar kesukaan siapa saja."

Operator SQL EXISTS

Sekarang, mari kita pindah ke operator EXISTS. Jika IN seperti memeriksa item dari daftar, EXISTS lebih seperti bertanya pertanyaan ya/tidak. Itu memeriksa apakah ada baris mana pun yang memenuhi kondisi tertentu.

Sintaks Dasar

SELECT column_name(s)
FROM table_name
WHERE EXISTS (subquery);

Contoh 3: Menemukan Buah dengan Pesanan

Asumsikan kita memiliki tabel 'orders' yang mencatat pesanan buah. Kita ingin menemukan semua buah yang telah dipesan sedikitnya sekali.

SELECT * FROM fruits
WHERE EXISTS (
SELECT 1 FROM orders
WHERE orders.fruit_id = fruits.id
);

Query ini mengembalikan semua buah yang memiliki setidaknya satu pesanan. Itu seperti bertanya, "Apakah buah ini memiliki pesanan? Jika ya, tampilkan buah ini."

Contoh 4: Menemukan Pelanggan tanpa Pesanan

Kita juga dapat menggunakan NOT EXISTS untuk menemukan kebalikannya. Mari kita temukan pelanggan yang belum memesan apa pun.

SELECT * FROM customers
WHERE NOT EXISTS (
SELECT 1 FROM orders
WHERE orders.customer_id = customers.id
);

Query ini menemukan semua pelanggan yang tidak memiliki pesanan apa pun. Itu seperti bertanya, "Apakah ada pelanggan yang belum memesan apa pun? Tampilkan pelanggan itu."

IN vs EXISTS: Mana yang Mana untuk Digunakan?

Sekarang kita telah melihat kedua IN dan EXISTS dalam aksi, Anda mungkin bertanya-tanya, "Ketika harus menggunakan yang mana?" Pertanyaan bagus! Mari kitauraikan.

Pertimbangan Kinerja

Biasanya:

  • IN sering lebih cepat saat hasil subquery kecil
  • EXISTS bisa lebih efisien dengan dataset besar

Tetapi ingat, kinerja database bisa berbeda-beda, jadi selalu uji dengan data khusus Anda.

Bacaan dan kehendak

  • Gunakan IN saat Anda memiliki daftar nilai khusus untuk diperiksa
  • Gunakan EXISTS saat Anda memeriksa keberadaan atau keabsenan data terkait

Penanganan NULL

  • IN menangani nilai NULL secara berbeda (ia tidak akan mengembalikan baris dengan NULL)
  • EXISTS tidak memiliki batasan ini

Berikut adalah tabel praktis yang menjelaskan kapan menggunakan yang mana:

Skenario Operator Yang Disarankan
Memeriksa melawan daftar nilai kecil yang diketahui IN
Memeriksa keberadaan catatan terkait EXISTS
Bekerja dengan dataset besar EXISTS
Saat nilai NULL harus dimasukkan dalam hasil EXISTS
Saat Anda perlu memeriksa beberapa kondisi EXISTS

Kesimpulan

Dan itu adalah dia, para murid SQL saya! Kita telah menjelajahi wilayah IN dan EXISTS, mengexplorekan kekuatan dan kasus penggunaannya. Ingat, seperti memilih alat yang tepat untuk pekerjaan, memilih antara IN dan EXISTS tergantung pada situasi khusus Anda.

Saat Anda terus mengembangkan petualangan SQL Anda, jangan khawatir untuk mencoba kedua operator ini. Cobalah mereka, lihat bagaimana performa mereka dengan data Anda, dan segera Anda akan mengembangkan keintuisian saat harus menggunakan yang mana.

Sebelum saya membiarkan Anda pergi, ada sedikit humor SQL: Mengapa administrator database meninggalkan istrinya? Dia memiliki terlalu banyak pandangan dan dia tidak bisa menangani kurangnya komitmen nya!

Terus latih, tetap curiga, dan selamat mencari!

Credits: Image by storyset