Filter Cerdas: Optimalisasi SELECT dengan Klausa WHERE & ORDER BY di MySQL (Part 7)

Rifqi An Rifqi An
Maret 02, 2026


Filter Cerdas: Optimalisasi SELECT dengan Klausa WHERE & ORDER BY di MySQL (Part 7)

Pernah nggak sih kamu lagi ngopi santai, tiba-tiba PM nge-chat minta data laporan yang 'spesifik banget' dan harus cepet? Atau pas lagi ngoding, kamu butuh data dari tabel yang isinya udah ratusan ribu baris, tapi cuma mau lihat yang relevan aja? Nah, kalau kamu cuma `SELECT * FROM nama_tabel;`, dijamin laptopmu langsung nge-hang, server ngadat, dan yang ada kamu malah emosi. Tenang, di Part 7 seri Belajar Database MySQL kita ini, kita bakal bongkar senjata rahasia biar kamu jadi *data ninja*: Klausa `WHERE` dan `ORDER BY`! Siap-siap jadi lebih cerdas dan efisien!

Daftar Isi

Apa Itu WHERE Clause? (Biar Data Nggak Nyasar)

Anggap aja kamu punya satu lemari besar penuh berkas (itu tabelmu). Kalau kamu mau cari berkas tentang "proyek Alpha tahun 2023", kamu nggak mungkin kan bongkar semua berkas satu per satu? Pasti kamu langsung cari laci yang ada labelnya, kan? Nah, di dunia database MySQL, laci berlabel itu adalah klausa WHERE.

Fungsinya? Simpel: buat nyaring data. Jadi, kita cuma ambil baris data yang memenuhi kriteria tertentu. Ini penting banget, apalagi kalau tabelmu udah segede gaban. Tanpa WHERE, server bisa megap-megap minta ampun!

Format dasarnya begini:


SELECT nama_kolom1, nama_kolom2
FROM nama_tabel
WHERE kondisi;

Contoh: Kamu punya tabel karyawan dan mau cari semua karyawan yang gajinya di atas 5 juta.


SELECT nama_lengkap, gaji
FROM karyawan
WHERE gaji > 5000000;

Ciamik, kan? Data yang muncul cuma yang relevan aja!

Operator Sakti di WHERE

Klausa WHERE itu punya banyak "senjata" alias operator yang bisa kamu pakai buat nyaring data. Ini beberapa yang paling sering dipake:

  • =: Sama dengan
  • <> atau !=: Tidak sama dengan
  • >: Lebih besar dari
  • <: Lebih kecil dari
  • >=: Lebih besar dari atau sama dengan
  • <=: Lebih kecil dari atau sama dengan
  • BETWEEN: Antara dua nilai (inklusif)
  • LIKE: Mencari pola string tertentu
  • IN: Mencocokkan nilai dengan daftar yang diberikan
  • IS NULL: Memeriksa nilai NULL
  • IS NOT NULL: Memeriksa nilai yang bukan NULL

Contoh penggunaan LIKE untuk mencari karyawan dengan nama yang mengandung "budi" (kasus copas nama temen pas bikin akun uji coba):


SELECT nama_lengkap, email
FROM karyawan
WHERE nama_lengkap LIKE '%Budi%'; -- Persen (%) adalah wildcard, artinya bisa ada karakter apapun sebelum/sesudah Budi

Atau pake BETWEEN untuk nyari orderan di bulan tertentu:


SELECT id_order, tanggal_order, total_harga
FROM pesanan
WHERE tanggal_order BETWEEN '2023-01-01' AND '2023-01-31';

WHERE dengan Kondisi Kompleks (AND, OR, NOT)

Kadang, satu kondisi aja nggak cukup. Kamu butuh data yang memenuhi beberapa kriteria sekaligus, atau salah satu dari beberapa kriteria. Di sinilah AND, OR, dan NOT berperan sebagai jagoan!

  • AND: Kedua kondisi (atau lebih) harus benar.
  • OR: Salah satu kondisi (atau lebih) harus benar.
  • NOT: Membalikkan kondisi (dari benar jadi salah, atau sebaliknya).

Misalnya, kamu mau cari karyawan yang gajinya di atas 5 juta DAN jabatannya 'Senior Developer':


SELECT nama_lengkap, jabatan, gaji
FROM karyawan
WHERE gaji > 5000000 AND jabatan = 'Senior Developer';

Atau kamu lagi nyari bug dan butuh semua laporan error dari modul 'Payment' ATAU modul 'User Management':


SELECT id_error, deskripsi, modul
FROM laporan_error
WHERE modul = 'Payment' OR modul = 'User Management';

Bisa juga pakai NOT, misalnya mau cari semua pelanggan yang bukan dari kota 'Jakarta':


SELECT nama_pelanggan, kota
FROM pelanggan
WHERE NOT kota = 'Jakarta';

Mengurutkan Data dengan ORDER BY (Biar Rapi!)

Data sudah difilter pakai WHERE, tapi kok tampilannya masih acak-acakan? Jangan sedih, ada ORDER BY yang siap merapikan datamu! Klausa ini berfungsi untuk mengurutkan hasil query berdasarkan satu atau lebih kolom.

Kamu bisa mengurutkan secara:

  • ASC (Ascending): Dari kecil ke besar (default, jadi nggak ditulis pun sama aja).
  • DESC (Descending): Dari besar ke kecil.

Formatnya:


SELECT nama_kolom1, nama_kolom2
FROM nama_tabel
ORDER BY nama_kolom_untuk_sort ASC/DESC;

Contoh: Mau lihat daftar siswa dengan nilai tertinggi, diurutkan dari yang paling tinggi:


SELECT nama_siswa, nilai_mtk, nilai_ipa
FROM siswa
ORDER BY nilai_mtk DESC;

Bisa juga urutkan pakai lebih dari satu kolom. Misalnya, urutkan berdasarkan jurusan (ASC), lalu di dalam jurusan tersebut, urutkan berdasarkan IPK (DESC):


SELECT nama_mahasiswa, jurusan, ipk
FROM mahasiswa
ORDER BY jurusan ASC, ipk DESC;

Kombinasi WHERE dan ORDER BY (The Ultimate Filter!)

Nah, ini dia jurus pamungkasnya! Menggabungkan WHERE dan ORDER BY adalah cara paling efektif untuk mendapatkan data yang spesifik dan terorganisir. Ingat, WHERE selalu dieksekusi sebelum ORDER BY. Logikanya, data difilter dulu, baru diurutkan.

Contoh skenario: Kamu mau lihat 10 transaksi dengan total harga tertinggi dari bulan Januari 2023.


SELECT id_transaksi, total_harga, tanggal_transaksi
FROM transaksi
WHERE tanggal_transaksi BETWEEN '2023-01-01' AND '2023-01-31'
ORDER BY total_harga DESC
LIMIT 10; -- Ini buat ambil cuma 10 baris pertama

Dengan query ini, kamu nggak cuma dapat data transasksi di bulan Januari, tapi juga langsung diurutkan dari yang paling mahal dan dibatasi cuma 10 teratas. Produktivitas auto naik!

Kenapa Harus Pusing-Pusing Pakai WHERE & ORDER BY?

Selain bikin query-mu jadi kayak spesialis, ada beberapa alasan kenapa dua klausa ini wajib kamu kuasai:

  1. Performa Database Optimal: Ngambil data yang nggak perlu itu sama aja buang-buang resource server dan bandwidth. Dengan WHERE, server hanya memproses dan mengirimkan data yang kamu butuhkan. Server auto senyum.
  2. Data Lebih Relevan: Kamu nggak perlu lagi nge-scroll ribuan baris data cuma buat nyari info penting. Hasilnya langsung to-the-point.
  3. Laporan Lebih Akurat: Ketika kamu butuh laporan mingguan, bulanan, atau tahunan, WHERE dan ORDER BY adalah pondasi utamanya.
  4. Debugging Lebih Mudah: Lagi nyari kenapa ada error di transaksi tertentu? Filter berdasarkan ID, tanggal, atau status. Hidupmu sebagai programmer jadi lebih damai.

Intinya, dua klausa ini adalah teman setia programmer. Kalau kamu sering lembur ngopi cuma buat nyari data yang 'ngumpet', berarti kamu belum optimal pake WHERE dan ORDER BY!

Latihan Ngoding: Kasus Absurd Tapi Nyata

Oke, biar makin paham, yuk kita latihan! Kamu adalah seorang Database Administrator di sebuah startup yang tiba-tiba menemukan kejanggalan. Ada laporan dari HRD kalau jumlah programmer yang hobi ngopi di kantor ini kok sedikit banget, padahal gelas kopi di pantry cepet habis. Kamu diminta mencari tau:

  1. Siapa saja programmer yang memiliki jumlah bug yang dilaporkan lebih dari 5 di bulan ini?
  2. Tapi, hanya programmer yang belum berulang tahun di bulan ini (misal bulan Maret) yang dihitung.
  3. Dan yang paling penting, urutkan berdasarkan jumlah bug terbanyak, lalu berdasarkan nama A-Z.

Anggap kamu punya tabel programmer dengan kolom: id_programmer, nama_lengkap, tanggal_lahir, dan jumlah_bug_bulan_ini.

Gimana query-nya?


SELECT nama_lengkap, tanggal_lahir, jumlah_bug_bulan_ini
FROM programmer
WHERE jumlah_bug_bulan_ini > 5
  AND MONTH(tanggal_lahir) != 3 -- Misal kita asumsikan ini bulan Maret
ORDER BY jumlah_bug_bulan_ini DESC, nama_lengkap ASC;

Gimana? Berhasil? Pasti ketawa sendiri kan bayangin skenarionya? Tapi ya gitu deh, dunia ngoding kadang emang penuh drama. Dengan query di atas, kamu bisa langsung dapet data programmer "tersangka" yang kemungkinan lagi lembur (dan minum kopi banyak), atau yang memang lagi sial aja ketemu banyak bug! Jangan lupa, ada fungsi MONTH() untuk mengambil bulan dari tanggal.

Selamat, kamu sudah menguasai dasar-dasar filter cerdas di MySQL! Ini baru Part 7, masih banyak banget yang bisa kita explore, termasuk materi yang lebih advance seperti triggers dan stored procedures yang akan sangat membantu otomasi di database kamu. Stay tuned terus di seri Belajar Database MySQL kita ya! Jangan sampai ketinggalan!

Bagikan Artikel Ini