Panduan Lengkap Perintah DML SELECT pada MySQL: Jenis dan Cara Filter Data
Ditulis oleh
mrjj
Dalam pengelolaan basis data relasional menggunakan MySQL, kemampuan mengambil data secara akurat dan efisien adalah kunci utama. Perintah SELECT termasuk dalam kelompok Data Manipulation Language (DML) yang berfungsi untuk membaca, mengambil, serta menampilkan data dari satu atau beberapa tabel dalam database.
Artikel ini membahas secara mendalam berbagai jenis penggunaan perintah SELECT serta teknik filter data untuk kebutuhan pengembangan aplikasi maupun analisis data.
Anatomi Dasar Perintah SELECT
Sebelum masuk ke variasi tingkat lanjut, struktur dasar penulisan SELECT di MySQL adalah sebagai berikut:
SELECT kolom1, kolom2
FROM nama_tabel
WHERE kondisi
ORDER BY kolom1 ASC
LIMIT 10;
Berbagai Jenis Penggunaan SELECT pada MySQL
Perintah SELECT memiliki banyak variasi bentuk tergantung pada kompleksitas data yang ingin ditampilkan. Berikut adalah jenis-jenis SELECT yang wajib Anda ketahui:
1. Select Seluruh Kolom dan Kolom Tertentu
- Menampilkan Semua Kolom: Menggunakan tanda bintang (
*) untuk mengambil seluruh kolom yang ada pada sebuah tabel.
SELECT * FROM karyawan;
- Menampilkan Kolom Spesifik: Hanya memanggil kolom tertentu guna mengoptimalkan performa kueri.
SELECT nama_depan, email FROM karyawan;
2. Select dengan DISTINCT (Menghapus Duplikat)
Digunakan untuk menyaring baris yang memiliki nilai duplikat dan hanya menampilkan data yang unik saja.
SELECT DISTINCT departemen FROM karyawan;
3. Select dengan Alias (AS)
Memberikan nama sementara pada kolom atau tabel saat ditampilkan untuk mempermudah pembacaan laporan.
SELECT nama_depan AS nama, gaji * 12 AS gaji_tahunan FROM karyawan;
4. Select dengan Fungsi Agregat (Aggregate Functions)
Digunakan untuk melakukan perhitungan matematis pada sekumpulan data.
COUNT(): Menghitung jumlah baris.SUM(): Menjumlahkan nilai total.AVG(): Mencari nilai rata-rata.MAX()/MIN(): Mencari nilai tertinggi atau terendah.
SELECT departemen, COUNT(*) AS total_karyawan, AVG(gaji) AS rata_gaji
FROM karyawan
GROUP BY departemen;
Catatan: Klausul HAVING sering disandingkan dengan fungsi agregat untuk memfilter hasil grup.
SELECT departemen, AVG(gaji) AS rata_gaji
FROM karyawan
GROUP BY departemen
HAVING rata_gaji > 5000000;
5. Select dengan JOIN (Penggabungan Tabel)
Mengambil data dari dua tabel atau lebih yang saling berelasi menggunakan foreign key.
- INNER JOIN: Menampilkan data yang memiliki kecocokan di kedua tabel.
- LEFT JOIN: Menampilkan seluruh data dari tabel kiri dan data yang cocok dari tabel kanan.
- RIGHT JOIN: Menampilkan seluruh data dari tabel kanan dan data yang cocok dari tabel kiri.
SELECT karyawan.nama_depan, departemen.nama_dept
FROM karyawan
INNER JOIN departemen ON karyawan.dept_id = departemen.id;
6. Subquery (Nested SELECT)
Menggunakan perintah SELECT di dalam perintah SELECT lainnya.
SELECT nama_depan, gaji
FROM karyawan
WHERE gaji > (SELECT AVG(gaji) FROM karyawan);
Teknik Filter Data pada MySQL
Penyaringan data dilakukan menggunakan klausul WHERE untuk memastikan hanya baris yang memenuhi kriteria tertentu yang diproses atau ditampilkan.
1. Filter dengan Operator Perbandingan
Menggunakan operator standar seperti =, != atau <>, >, <, >=, dan <=.
SELECT * FROM produk WHERE stok <= 5;
2. Filter dengan Operator Logika (AND, OR, NOT)
Menggabungkan beberapa kondisi filter sekaligus.
- AND: Semua kondisi harus bernilai benar.
- OR: Salah satu kondisi saja yang bernilai benar.
- NOT: Membalikkan nilai kondisi.
SELECT * FROM produk
WHERE kategori = 'Elektronik' AND harga < 1000000;
3. Filter dengan Operator BETWEEN dan NOT BETWEEN
Digunakan untuk memfilter data dalam rentang nilai tertentu (inklusif).
SELECT * FROM transaksi
WHERE tanggal BETWEEN '2026-01-01' AND '2026-01-31';
4. Filter dengan Operator IN dan NOT IN
Mencocokkan nilai dengan daftar nilai yang telah ditentukan tanpa harus menulis banyak kondisi OR.
SELECT * FROM karyawan
WHERE departemen IN ('IT', 'Keuangan', 'Marketing');
5. Filter dengan Operator LIKE (Pencarian Pola)
Digunakan untuk pencarian teks parsial dengan bantuan wildcard:
%: Mewakili banyak karakter (nol atau lebih)._: Mewakili tepat satu karakter.
SELECT * FROM pelanggan
WHERE email LIKE '%@gmail.com';
6. Filter Nilai Kosong (IS NULL / IS NOT NULL)
Memeriksa apakah suatu kolom bernilai NULL (kosong) atau tidak.
SELECT * FROM pesanan
WHERE tanggal_kirim IS NULL;
Mengatur Tampilan Hasil dengan ORDER BY dan LIMIT
Agar data lebih mudah dibaca dan dianalisis, hasil dari kueri SELECT sering kali dikombinasikan dengan pengurutan dan pembatasan jumlah baris:
ORDER BY: Mengurutkan data secara menaik (ASC) atau menurun (DESC).
SELECT * FROM produk ORDER BY harga DESC;
- LIMIT: Membatasi jumlah baris keluaran (sangat berguna untuk fitur pagination).
SELECT * FROM produk ORDER BY terjual DESC LIMIT 5;
Penguasaan berbagai jenis perintah SELECT dan teknik filter di atas akan sangat membantu Anda dalam merancang kueri database yang cepat, efisien, dan menghasilkan informasi yang akurat sesuai kebutuhan sistem.