Filter Data — SQL

Gunakan WHERE untuk memfilter baris berdasarkan kondisi. Operator perbandingan: Operator Keterangan Contoh = Sama dengan WHERE age = 25 != atau Tidak sama…

WHERE menyaring baris: cuma baris yang syaratnya benar yang ikut ke hasil. Bayangin satpam di pintu masuk yang memegang daftar syarat. Tiap tamu (baris) dicek satu per satu: yang memenuhi syarat boleh masuk, yang gak memenuhi ditinggal di luar. Tabelnya sendiri gak berubah, yang disaring cuma hasilnya.

🧪 Tebakan cepat: tabel products berisi 5 produk. WHERE category = 'electronics' OR price < 5000000 meloloskan berapa baris? Tebak dulu, jawabannya ada di bagian "AND, OR dan NOT".

WHERE dan operator pembanding

Tabel products yang dipakai latihan:

id name price category
1 Laptop 12000000 electronics
2 Mouse 150000 electronics
3 Notebook 25000 stationery
4 Pen 5000 stationery
5 Monitor 3500000 electronics

WHERE ditulis setelah FROM:

SELECT name, price
FROM products
WHERE price < 5000000;

Hasilnya 4 baris: Mouse, Notebook, Pen, Monitor. Laptop (12000000) gak lolos.

Operator Artinya Contoh
= sama dengan category = 'electronics'
!= atau <> tidak sama dengan category != 'electronics'
> / < lebih besar / lebih kecil price > 100000
>= / <= lebih besar atau sama / lebih kecil atau sama price <= 25000

AND, OR dan NOT

Dua syarat digabung dengan AND (dua-duanya harus benar) atau OR (cukup salah satu). SQLite mengecek tiap syarat di tiap baris, dan menulis benar sebagai 1, salah sebagai 0:

name category = 'electronics' price < 5000000 AND OR
Laptop 1 0 0 1
Mouse 1 1 1 1
Notebook 0 1 0 1
Pen 0 1 0 1
Monitor 1 1 1 1

Dengan AND yang lolos cuma 2 baris:

SELECT name, price
FROM products
WHERE category = 'electronics' AND price < 5000000;
name price
Mouse 150000
Monitor 3500000

Dengan OR, kelima baris lolos: tiap produk memenuhi minimal satu syarat. Laptop lolos karena kategorinya, Notebook dan Pen karena harganya. Itu jawaban tebakannya.

NOT membalik syarat: WHERE NOT category = 'electronics' memberi Notebook dan Pen, sama dengan category != 'electronics'.

LIKE, IN dan BETWEEN

LIKE mencari pola teks. % artinya karakter apa saja, berapa pun jumlahnya (boleh nol), dan _ artinya tepat satu karakter:

SELECT name FROM products WHERE name LIKE 'M%';   -- Mouse, Monitor
SELECT name FROM products WHERE name LIKE '%o%';  -- Laptop, Mouse, Notebook, Monitor

'M%' berarti diawali M, '%o%' berarti ada huruf o di mana saja. Di SQLite dan MySQL, LIKE gak membedakan huruf besar-kecil untuk A sampai Z; di PostgreSQL membedakan, dan versi yang gak membedakan namanya ILIKE.

IN artinya salah satu dari daftar:

SELECT name FROM products WHERE name IN ('Mouse', 'Pen', 'Kipas');  -- Mouse, Pen

Sama dengan name = 'Mouse' OR name = 'Pen' OR name = 'Kipas', tapi lebih pendek. Kipas gak ada di tabel, jadi gak ikut.

BETWEEN artinya di dalam rentang, termasuk kedua ujungnya:

SELECT name FROM products WHERE price BETWEEN 25000 AND 3500000;  -- Mouse, Notebook, Monitor

⚠️ Jebakan yang sering ketemu

TL;DR: WHERE syarat ditulis setelah FROM dan cuma meloloskan baris yang syaratnya benar. Operatornya =, != atau <>, >, <, >=, <=. Teks pakai kutip tunggal, angka tanpa kutip dan tanpa titik ribuan. AND butuh dua syarat benar, OR cukup satu, NOT membalik; AND dikerjakan sebelum OR. LIKE mencari pola (% apa saja, _ satu karakter), IN (...) mencocokkan salah satu dari daftar, dan BETWEEN a AND b termasuk kedua ujungnya.

Yang akan kamu pelajari