query where and or not | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: query where and or not

Sunday, April 5, 2026

query where and or not

🏠 Beranda Tutorial MySQL Artikel 9 dari 28

Kombinasi Kondisi Ganda:
AND, OR, dan NOT

🟡 Level Menengah ⚙️ Operator Logika ⏱️ 9 Menit Baca 📚 Seri 28 Artikel
3
Operator Logika
9+
Contoh Query
9
Menit Baca

Coba bayangkan kamu lagi cari produk di toko online. Kamu mau cari tas yang harganya di bawah 200 ribu dan stoknya masih ada. Atau kamu mau filter pelanggan dari Jakarta atau Surabaya. Atau bahkan mau tampilkan semua produk kecuali yang sudah habis. Nah, semua kebutuhan filter kondisi ganda itu di SQL MySQL diselesaikan pakai tiga operator ajaib: AND OR NOT MySQL.

Selamat datang di Artikel ke-9 dari seri Belajar Query SQL MySQL! Di artikel sebelumnya kamu sudah menguasai ORDER BY untuk mengurutkan data. Sekarang kita tingkatkan kemampuan filtering-mu dengan operator logika yang bikin query makin presisi dan powerful.

Di artikel ini kamu akan belajar cara kerja operator AND, OR, dan NOT lengkap dengan aturan prioritas, kombinasi ketiganya, dan jebakan-jebakan klasik yang sering bikin pemula pusing. Semua pakai studi kasus toko online yang familiar. Let's go! 🚀

⚡ Fakta Menarik

Operator AND, OR, dan NOT bukan hanya milik SQL — mereka berasal dari Aljabar Boolean yang diciptakan George Boole pada tahun 1847! Konsep yang sama dipakai di pemrograman, rangkaian logika hardware, dan mesin pencari Google untuk memfilter miliaran halaman web. Jadi belajar ini bukan cuma buat SQL ya!

AND OR NOT MySQL: Mulai dari Operator AND

Operator AND itu seperti syarat masuk suatu club: kamu harus tinggi minimal 170cm DAN berusia 21+. Kalau salah satu tidak terpenuhi, kamu tidak masuk. Dalam SQL, AND mengembalikan baris hanya jika semua kondisi bernilai TRUE.

📋 Sintaks AND

SELECT kolom1, kolom2
FROM nama_tabel
WHERE kondisi_1 AND kondisi_2  -- semua harus TRUE
  AND kondisi_3;               -- bisa lebih dari dua kondisi

Contoh: Tampilkan produk kategori Elektronik yang harganya di bawah Rp 300.000:

SELECT nama_produk, kategori, harga, stok
FROM produk
WHERE kategori = 'Elektronik'
  AND harga < 300000;

📊 Hasil Query:

nama_produk kategori harga stok
Mouse Wireless Elektronik Rp 185.000 60
USB Hub 4 Port Elektronik Rp 95.000 40

→ Laptop Stand (Rp 250.000) dan Speaker BT (Rp 350.000) tidak muncul: Laptop Stand lolos harga tapi perlu dicek, Speaker tidak lolos harga.

📋 Tabel Kebenaran AND:

Kondisi A Kondisi B A AND B
TRUETRUETRUE ✓
TRUEFALSEFALSE ✗
FALSETRUEFALSE ✗
FALSEFALSEFALSE ✗

💡 Tip Praktis

Semakin banyak kondisi AND yang kamu tambahkan, semakin sedikit baris yang akan dikembalikan karena setiap kondisi mempersempit hasil. Ini sifat AND: interseksi / irisan.

Operator OR: Cukup Salah Satu Terpenuhi

Kalau AND itu ketat, OR itu lebih fleksibel. Bayangkan restoran yang menerima pembayaran cash ATAU kartu kredit — asal salah satu bisa, kamu bisa bayar. Dalam SQL, OR mengembalikan baris jika minimal satu kondisi bernilai TRUE. Artinya, semakin banyak OR kamu tambah, semakin banyak baris yang muncul.

📋 Sintaks OR

SELECT kolom1, kolom2
FROM nama_tabel
WHERE kondisi_1 OR kondisi_2;  -- minimal satu TRUE = lolos

Contoh: Tampilkan pelanggan yang berdomisili di Surabaya atau Jakarta:

SELECT nama_pelanggan, kota, email
FROM pelanggan
WHERE kota = 'Surabaya'
   OR kota = 'Jakarta';

📊 Hasil Query:

nama_pelanggan kota email
Budi Santoso Surabaya budi@email.com
Dewi Lestari Jakarta dewi@email.com
Reza Pratama Surabaya reza@email.com

📋 Tabel Kebenaran OR:

Kondisi A Kondisi B A OR B
TRUETRUETRUE ✓
TRUEFALSETRUE ✓
FALSETRUETRUE ✓
FALSEFALSEFALSE ✗

💡 Tip Praktis

Kalau kamu punya banyak nilai OR untuk satu kolom yang sama (misal: kota = 'Surabaya' OR kota = 'Jakarta' OR kota = 'Bandung'), ada cara yang lebih rapi: gunakan operator IN! Contoh: WHERE kota IN ('Surabaya', 'Jakarta', 'Bandung').

Operator NOT: Balik Kondisi Jadi Kebalikannya

Kalau AND dan OR adalah tentang menggabungkan kondisi, NOT adalah tentang membaliknya. Analoginya simpel: "tampilkan semua produk kecuali yang kehabisan stok". NOT mengubah TRUE jadi FALSE dan sebaliknya — alias negasi logika.

📋 Sintaks NOT

SELECT kolom1, kolom2
FROM nama_tabel
WHERE NOT kondisi;         -- balikkan hasil kondisi

-- Atau dikombinasikan:
WHERE NOT (kondisi_1 AND kondisi_2);
WHERE kolom NOT IN (...);
WHERE kolom NOT LIKE '%kata%';

Contoh: Tampilkan semua produk yang bukan dari kategori Elektronik:

SELECT nama_produk, kategori, harga
FROM produk
WHERE NOT kategori = 'Elektronik';

-- Cara lain yang sama hasilnya:
WHERE kategori != 'Elektronik';
WHERE kategori <> 'Elektronik';

📊 Hasil Query:

nama_produk kategori harga
Pulpen Biru Alat Tulis Rp 3.000
Buku Tulis A5 Alat Tulis Rp 8.500
Tas Sekolah Tas Rp 95.000

⚠️ Peringatan — NOT dan NULL

Hati-hati! NOT NULLIS NOT NULL. Kalau kamu mau filter baris yang kolomnya tidak kosong, gunakan IS NOT NULL, bukan NOT kolom = NULL karena kondisi NULL tidak bisa dievaluasi dengan operator biasa.

Kombinasi AND OR NOT MySQL dan Aturan Prioritas

Nah, ini bagian yang paling penting sekaligus paling sering bikin bug! Ketika kamu pakai AND dan OR bersamaan, MySQL punya aturan prioritas: NOT diproses dulu, baru AND, terakhir OR. Sama seperti matematika: perkalian sebelum penjumlahan.

🚨 Urutan Prioritas Operator

1. NOT 2. AND 3. OR

Perhatikan perbedaan hasil dua query berikut:

-- ❌ Tanpa kurung — hasil mungkin tidak sesuai harapan
-- MySQL baca: (kategori = 'Tas' AND harga < 50000) OR stok > 100
SELECT nama_produk, kategori, harga, stok
FROM produk
WHERE kategori = 'Tas' AND harga < 50000 OR stok > 100;

-- ✅ Dengan kurung — eksplisit dan aman
-- MySQL baca persis seperti yang kamu maksud
SELECT nama_produk, kategori, harga, stok
FROM produk
WHERE kategori = 'Tas'
  AND (harga < 50000 OR stok > 100);

📊 Contoh Kombinasi Tiga Operator Sekaligus:

-- Produk elektronik atau alat tulis, yang harganya di atas 5000,
-- dan BUKAN yang stoknya 0
SELECT nama_produk, kategori, harga, stok
FROM produk
WHERE (kategori = 'Elektronik' OR kategori = 'Alat Tulis')
  AND harga > 5000
  AND NOT stok = 0;

📊 Hasil Query:

nama_produk kategori harga stok
Buku Tulis A5 Alat Tulis Rp 8.500 200
Mouse Wireless Elektronik Rp 185.000 60
USB Hub 4 Port Elektronik Rp 95.000 40

💡 Golden Rule

Selalu gunakan tanda kurung () saat mix AND dan OR. Ini bukan hanya soal kebenaran logika, tapi juga soal keterbacaan kode. Orang lain (atau kamu sendiri 6 bulan kemudian) akan berterima kasih!

Panduan Praktikum Langkah demi Langkah

1

Siapkan tabel produk dan pelanggan

INSERT INTO produk (nama_produk, kategori, harga, stok) VALUES
('Pulpen Biru','Alat Tulis',3000,150),
('Buku Tulis A5','Alat Tulis',8500,200),
('Mouse Wireless','Elektronik',185000,60),
('Laptop Stand','Elektronik',250000,30),
('USB Hub 4 Port','Elektronik',95000,40),
('Tas Sekolah','Tas',95000,45),
('Keyboard Mekanikal','Elektronik',550000,0);
2

Latih operator AND

-- Elektronik dengan stok tersedia
SELECT * FROM produk
WHERE kategori = 'Elektronik' AND stok > 0;
3

Latih operator OR

-- Produk Alat Tulis ATAU yang harganya murah
SELECT * FROM produk
WHERE kategori = 'Alat Tulis' OR harga < 10000;
4

Latih operator NOT

-- Semua produk kecuali yang stoknya habis
SELECT * FROM produk
WHERE NOT stok = 0;

-- Sama dengan:
SELECT * FROM produk WHERE stok != 0;
5

🏆 Tantangan: gabungkan ketiganya!

-- Tampilkan produk (Elektronik atau Tas), harga < 300rb,
-- dan BUKAN yang stok-nya 0. Urutkan dari termurah!
SELECT nama_produk, kategori, harga, stok
FROM produk
WHERE (kategori = 'Elektronik' OR kategori = 'Tas')
  AND harga < 300000
  AND NOT stok = 0
ORDER BY harga ASC;

Tabel Ringkasan: AND, OR, NOT MySQL

Operator Logika Hasil TRUE jika... Efek pada Jumlah Baris
AND Irisan / Semua kondisi harus terpenuhi Semua kondisi = TRUE ↓ Mempersempit hasil
OR Gabungan / Cukup satu kondisi terpenuhi Minimal satu kondisi = TRUE ↑ Memperluas hasil
NOT Negasi / Balik nilai kondisi Kondisi asli = FALSE ↕ Tergantung kondisi
Prioritas NOTANDOR
Best Practice Selalu gunakan (kurung) saat mix AND dan OR untuk kejelasan logika

Tips & Insight dari Trainer Lapangan

🚀 Insight #1 — Ganti OR Banyak dengan IN()

Kalau kamu punya banyak kondisi OR untuk kolom yang sama, kode bisa jadi panjang dan sulit dibaca. Solusinya: pakai operator IN() sebagai shortcut!

-- Cara panjang dengan OR
WHERE kota='Surabaya' OR kota='Jakarta' OR kota='Bandung';

-- Cara ringkas dengan IN() — hasil SAMA persis
WHERE kota IN ('Surabaya', 'Jakarta', 'Bandung');

-- Kebalikannya pakai NOT IN()
WHERE kota NOT IN ('Surabaya', 'Jakarta', 'Bandung');

🎯 Insight #2 — Urutan Kondisi Bisa Pengaruhi Performa

Dari sisi performa, letakkan kondisi yang paling banyak menyaring data di posisi pertama (terutama untuk AND). MySQL bisa melakukan short-circuit evaluation — kalau kondisi pertama sudah FALSE, kondisi berikutnya tidak perlu dievaluasi. Ini tips kecil yang dampaknya besar di tabel besar!

⚠️ Insight #3 — Jebakan NULL yang Sering Menghantui

NULL itu bukan 0 dan bukan string kosong — NULL artinya "tidak ada nilai". Operator AND/OR/NOT dengan NULL bisa menghasilkan sesuatu yang disebut three-valued logic (TRUE, FALSE, atau UNKNOWN). Kalau ada NULL di kondisi, pakailah IS NULL atau IS NOT NULL.

-- ❌ Ini TIDAK akan bekerja sesuai harapan
WHERE email = NULL;

-- ✅ Gunakan IS NULL / IS NOT NULL
WHERE email IS NULL;
WHERE email IS NOT NULL;

🎯 Kesimpulan

  • AND OR NOT MySQL adalah operator logika dasar untuk membangun kondisi filter yang kompleks dalam WHERE
  • AND = semua kondisi harus TRUE → mempersempit hasil
  • OR = cukup satu kondisi TRUE → memperluas hasil
  • NOT = membalik nilai kondisi → berguna untuk eksklusi data
  • Urutan prioritas: NOTANDOR — gunakan tanda kurung () untuk menghindari bug logika
  • Hati-hati dengan NULL — gunakan IS NULL / IS NOT NULL, bukan operator perbandingan biasa

Operator AND, OR, dan NOT adalah "bahasa logika" yang dipakai di mana-mana — dari query database, kondisi pemrograman, sampai mesin pencari. Menguasai ketiganya berarti kamu makin siap membangun aplikasi yang sesungguhnya. 💪 Sekarang giliran kamu praktik!

💬 Tulis Komentar 🔖 Bookmark Artikel 📤 Share ke Teman
#MySQL #SQL #Database #Query #Tutorial #AND OR NOT MySQL #Operator Logika #Menengah

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux