Bayangkan kamu masuk ke perpustakaan raksasa yang punya satu juta buku. Kamu butuh satu buku tertentu — buku tentang "resep masakan Jawa". Masa iya kamu baca semua buku satu per satu? Tentu nggak. Kamu langsung tanya ke petugasnya: "Tolong ambilkan buku dengan topik masakan Jawa!"
Itulah persis fungsi WHERE MySQL filter data — perintah yang jadi "petugas perpustakaan" kamu di dunia database. Di artikel ke-6 seri Belajar Query SQL MySQL ini, kita akan bedah tuntas klausul WHERE: sintaksnya, cara pakainya, dan trik-trik praktis yang langsung bisa kamu terapkan.
Tanpa WHERE, query SELECT-mu akan mengambil semua data — bisa ribuan bahkan jutaan baris. Ini boros, lambat, dan nggak efisien. Dengan WHERE, kamu ambil hanya yang kamu butuhkan. Lebih cepat, lebih hemat resource, dan pastinya lebih profesional. Yuk mulai!
Fakta Menarik
Menurut berbagai laporan performa database, query tanpa klausa WHERE pada tabel besar bisa memakan waktu 10–100x lebih lama dibandingkan query yang menggunakan WHERE dengan kolom yang sudah diindex. Ini alasan kenapa WHERE bukan sekadar "fitur tambahan" — ini kebutuhan fundamental dalam SQL!
1. Sintaks Dasar WHERE MySQL Filter Data
📐 SINTAKS LENGKAP
SELECT kolom1, kolom2, ... -- kolom yang ingin ditampilkan FROM nama_tabel -- sumber tabel WHERE kondisi_filter -- 🔑 kondisi penyaringan data ORDER BY kolom ASC|DESC; -- opsional: urutan hasil
Kita akan pakai studi kasus toko online. Pertama, kenalan dulu sama datanya. Anggap kita punya tabel produk seperti ini:
Sekarang, misalnya kita hanya mau lihat produk dari kategori Elektronik. Begini querynya:
💻 QUERY SQL
SELECT nama_produk, kategori, harga FROM produk WHERE kategori = 'Elektronik';
📊 Hasil Output:
💡 Tip Praktis
Untuk nilai teks (string), selalu pakai tanda kutip tunggal 'seperti ini'. Untuk angka, cukup tulis langsung tanpa kutip. MySQL bersifat case-insensitive untuk nilai string, tapi tidak untuk nama tabel/kolom di beberapa konfigurasi server.
2. Operator Perbandingan dalam WHERE MySQL Filter Data
WHERE nggak hanya bisa cek kesamaan (=). Kamu bisa gunakan berbagai operator perbandingan — seperti penjaga toko yang bisa menyaring produk berdasarkan harga "lebih dari", "kurang dari", atau "di antara" range tertentu.
Contoh: tampilkan produk dengan harga antara 100.000 dan 1.000.000:
💻 QUERY SQL — BETWEEN
SELECT nama_produk, harga FROM produk WHERE harga BETWEEN 100000 AND 1000000 ORDER BY harga ASC;
📊 Hasil Output:
⚠️ Peringatan
BETWEEN bersifat inklusif — artinya nilai batas bawah dan batas atas ikut disertakan. Jadi BETWEEN 100000 AND 1000000 akan mengambil produk dengan harga tepat 100.000 dan tepat 1.000.000 juga, bukan hanya yang di antaranya.
3. Kombinasi Kondisi dengan AND, OR, dan NOT
Satu kondisi sering nggak cukup. Bayangkan kamu mau cari produk kategori Elektronik dan harganya di bawah 2 juta. Di sinilah AND, OR, dan NOT masuk — mereka adalah "penghubung logika" yang bikin WHERE MySQL filter data jadi super fleksibel.
💻 QUERY SQL — AND (semua kondisi harus terpenuhi)
SELECT nama_produk, kategori, harga, stok FROM produk WHERE kategori = 'Elektronik' AND harga < 2000000;
📊 Hasil Output:
💻 QUERY SQL — OR (salah satu kondisi cukup)
SELECT nama_produk, kategori FROM produk WHERE kategori = 'Olahraga' OR kategori = 'Fashion'; -- Cara lebih singkat pakai IN: SELECT nama_produk, kategori FROM produk WHERE kategori IN ('Olahraga', 'Fashion');
📊 Hasil Output:
🎯 Tips & Insight dari Lapangan
Ketika kamu punya banyak kondisi OR dengan kolom yang sama, pakai IN (...) — hasilnya sama tapi query jauh lebih bersih dan mudah dibaca. Bayangkan punya 10 kondisi OR vs satu baris IN yang rapi. Mana yang lebih enak dimaintain 6 bulan kemudian?
🔥 Insight Trainer
Urutan prioritas operator logika: NOT diproses dulu, lalu AND, baru OR. Jadi WHERE A OR B AND C dibaca sebagai A OR (B AND C). Selalu pakai tanda kurung () untuk memastikan logika sesuai keinginanmu!
Panduan Praktikum: Langkah demi Langkah
Buat dan isi tabel produk
Buka MySQL Workbench atau phpMyAdmin, jalankan query berikut untuk membuat tabel beserta datanya:
CREATE TABLE produk ( id_produk INT PRIMARY KEY AUTO_INCREMENT, nama_produk VARCHAR(100), kategori VARCHAR(50), harga DECIMAL(12,2), stok INT ); INSERT INTO produk VALUES (1, 'Sepatu Lari Nike', 'Olahraga', 850000, 45), (2, 'Kaos Polos Putih', 'Fashion', 75000, 200), (3, 'Laptop Asus VivoBook', 'Elektronik', 7500000, 12), (4, 'Tas Ransel Canvas', 'Fashion', 320000, 80), (5, 'Headphone Sony', 'Elektronik', 1200000, 30), (6, 'Dumbell 5kg', 'Olahraga', 180000, 0);
Coba WHERE dengan kondisi tunggal
Mulai dari yang paling sederhana — filter produk yang stoknya habis (stok = 0):
SELECT nama_produk, stok FROM produk WHERE stok = 0;
Gunakan LIKE untuk pencarian teks
Cari semua produk yang namanya mengandung kata "Sony" atau diawali "S":
-- % = wildcard banyak karakter SELECT nama_produk FROM produk WHERE nama_produk LIKE '%Sony%'; -- _ = wildcard satu karakter SELECT nama_produk FROM produk WHERE nama_produk LIKE 'S%';
Kombinasikan AND + OR + tanda kurung
Cari produk yang harganya di atas 500.000 dan masuk kategori Fashion atau Elektronik:
SELECT nama_produk, kategori, harga FROM produk WHERE harga > 500000 AND (kategori = 'Fashion' OR kategori = 'Elektronik') ORDER BY harga DESC;
📌 Kesimpulan
- ✅ WHERE adalah klausul untuk menyaring data berdasarkan kondisi tertentu — kunci dari WHERE MySQL filter data yang efisien
- ✅ Gunakan operator perbandingan (=, !=, <, >, BETWEEN) untuk kondisi angka dan teks
- ✅ Gunakan LIKE dengan wildcard % dan _ untuk pencarian pola teks yang fleksibel
- ✅ Gabungkan kondisi dengan AND, OR, NOT — dan selalu pakai tanda kurung untuk logika kompleks
- ✅ Ganti rangkaian OR dengan IN (...) untuk kode yang lebih bersih dan mudah dibaca
WHERE bukan sekadar syntax — ini adalah cara kamu "berbicara" dengan database secara presisi. Semakin mahir kamu menyusun kondisi, semakin efisien aplikasimu. Dan ingat: query yang baik bukan hanya yang jalan, tapi yang cepat dan mudah dipahami.
💬 Diskusi & Pertanyaan
Ada bagian yang masih bingung? Punya query WHERE yang mau dikonsultasikan? Tulis di kolom komentar di bawah! Jangan lupa share artikel ini ke teman-teman yang lagi belajar SQL — dan bookmark halaman ini biar gampang dibuka lagi pas lupa syntax. 🙌
📖 Artikel Berikutnya dalam Seri
Artikel 7: Mengurutkan Hasil Query dengan ORDER BY
Pelajari cara mengurutkan data ASC/DESC dengan satu atau lebih kolom — dan kenapa urutan memengaruhi performa query.
No comments:
Post a Comment