ID (Indonesia) Translation

SQL - IN vs EXISTS: Panduan Komprehensif untuk Pemula

Halo sana, para ahli SQL masa depan! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ke dunia SQL. Hari ini, kita akan mengeksplorasi dua alat kuat dalam kotak alat SQL kita: operator IN dan EXISTS. Jangan khawatir jika Anda baru belajar pemrograman - saya akan memandu Anda langkah demi langkah, seperti yang saya lakukan bagi banyak murid di kelas saya selama tahun-tahun.

SQL - IN vs EXISTS

Operator SQL IN

Ayo mulai dengan operator IN. Bayangkan Anda sedang merencanakan pesta dan Anda punya 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 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 di mana 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 mencantumkan buah favorit orang-orang.

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

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

Operator SQL EXISTS

Sekarang, ayo pindah ke operator EXISTS. Jika IN seperti memeriksa item di 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 setidaknya 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 yang sebaliknya. Asumsikan kita mencari 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. Itu seperti bertanya, "Apakah ada pelanggan yang belum memesan apa pun? Tampilkan pelanggan itu."

IN vs EXISTS: Mana yang Harus Digunakan?

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

Pertimbangan Performa

Biasanya:

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

Tetapi ingat, performa database bisa berbeda-beda, jadi selalu uji dengan data Anda sendiri.

Readabilitas dan kehendak

  • Gunakan IN saat Anda memiliki daftar nilai tertentu untuk diperiksa
  • Gunakan EXISTS saat Anda memeriksa keberadaan atau kehilangan data yang 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 menggabungkan kapan menggunakan operator mana:

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

Kesimpulan

Dan begitu, para murid SQL saya! Kita telah berjalan melalui wilayah IN dan EXISTS, meng eksplorasi kekuatan dan kasus penggunaannya. Ingat, seperti memilih alat yang tepat untuk pekerjaan, memilih antara IN dan EXISTS tergantung pada situasi Anda.

Saat Anda terus mengembangkan pengalaman SQL Anda, jangan khawatir untuk mencoba kedua operator ini. Cobalah mereka, lihat bagaimana performa mereka dengan data Anda, dan segera Anda akan mengembangkan kepekaan 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 dapat menangani kurangnya komitmen nya!

Teruslatih, tetap curiga, dan selamat berkueri!

Credits: Image by storyset