Mengambil data dari tabel, menyaring baris yang relevan, dan mengurutkan hasil — tiga perintah paling sering dipakai dalam pekerjaan sehari-hari analis bisnis digital.
RPS MINGGU 12 • 2 × 50 MENIT
Bagian 1 dari 3
Dari Kebutuhan Bisnis ke Perintah SELECT
Mengapa query itu penting, dan bagaimana bentuk dasar perintah untuk mengambil data dari sebuah tabel.
Tujuan Pembelajaran Hari Ini
Setelah pertemuan ini, Anda diharapkan mampu menulis query SELECT dasar untuk mengambil, menyaring, dan mengurutkan data pada tabel relasional. Secara rinci:
CAPAIAN 1
SELECT
Menulis query untuk mengambil kolom tertentu atau seluruh kolom dari sebuah tabel, termasuk memberi alias.
CAPAIAN 2
WHERE
Menyaring baris data memakai operator perbandingan, logika, BETWEEN, IN, LIKE, dan IS NULL.
CAPAIAN 3
ORDER BY
Mengurutkan hasil query naik (ASC) atau turun (DESC), termasuk berdasarkan lebih dari satu kolom.
CAPAIAN 4
GABUNG
Menggabungkan ketiganya dalam satu query dengan urutan klausa yang benar, sesuai kasus bisnis nyata.
Mengapa Perintah Ini Penting?
Database sebuah bisnis digital bisa berisi jutaan baris data transaksi. Tanpa query, mustahil menemukan informasi yang relevan.
Bayangkan tabel produk milik sebuah UMKM di Tokopedia berisi 50.000 baris. Manajer bertanya: "Produk kategori Elektronik dengan harga di atas Rp500.000, urutkan dari termahal — tampilkan 10 saja." Membuka spreadsheet dan menyaring manual bisa memakan berjam-jam; query SQL menjawabnya dalam hitungan milidetik.
SELECT
Kolom apa yang mau ditampilkan?
WHERE
Baris mana yang memenuhi syarat?
ORDER BY
Diurutkan berdasarkan apa?
Anatomi Dasar: SELECT ... FROM ...
Bentuk paling sederhana query SQL terdiri dari dua kata kunci (keyword) wajib.
SELECT nama_kolom FROM nama_tabel;
Glosarium:query = permintaan data ke database; tabel = kumpulan data berbentuk baris & kolom (mirip sheet Excel); baris/record = satu data lengkap; kolom/field = satu atribut data.
Kolom Tertentu vs Semua Kolom
Tabel produk milik sebuah toko UMKM di Tokopedia:
TABEL PRODUK (CONTOH)
id_produk
nama_produk
kategori
harga
stok
1
Kabel Data USB-C
Elektronik
35000
120
2
Kemeja Batik Pria
Fashion
150000
40
SELECT nama_produk, harga FROM produk;
Hanya menampilkan 2 kolom yang diminta — hemat, cepat dibaca.
SELECT * FROM produk;
Tanda * (asterisk/wildcard) berarti "semua kolom" — praktis untuk eksplorasi awal, tapi boros di tabel besar.
Memberi Nama Alias dengan AS
Alias mengganti nama kolom (atau tabel) pada tampilan hasil, tanpa mengubah nama aslinya di database.
SELECT nama_produk AS "Nama Produk", harga AS "Harga (Rp)" FROM produk;
TANPA ALIAS
nama_produk
harga
Kabel Data USB-C
35000
DENGAN ALIAS
Nama Produk
Harga (Rp)
Kabel Data USB-C
35000
Kata kunci AS bersifat opsional di banyak sistem — harga AS total sama dengan harga total — tapi menuliskannya membuat query lebih mudah dibaca orang lain.
Bagian 2 dari 3
Menyaring Data dengan WHERE
Dari operator perbandingan sederhana sampai pola pencarian teks dengan LIKE — bagaimana database memutuskan baris mana yang "lolos".
Operator Perbandingan
Klausa WHERE ditulis setelah FROM, berisi syarat yang harus dipenuhi setiap baris agar ditampilkan.
SELECT nama_produk, harga FROM produk WHERE harga > 100000;
Operator
Arti
Contoh
=
sama dengan
kategori = 'Elektronik'
<> atau !=
tidak sama dengan
stok <> 0
>, <
lebih besar / lebih kecil
harga > 100000
>=, <=
lebih besar/kecil sama dengan
stok >= 10
Menggabungkan Syarat: AND, OR, NOT
Satu WHERE bisa memuat lebih dari satu syarat sekaligus, digabung dengan operator logika (boolean).
AND
Kedua syarat harus sama-sama benar. kategori='Elektronik' AND harga>500000
OR
Salah satu syarat cukup benar. kategori='Fashion' OR kategori='Elektronik'
NOT
Membalik hasil syarat. NOT kategori='Fashion'
Hati-hati urutan evaluasi: AND dievaluasi lebih dulu daripada OR. Gunakan tanda kurung ( ) untuk memastikan urutan sesuai maksud Anda, misalnya WHERE (kategori='Fashion' OR kategori='Elektronik') AND stok>0.
Hitung dari Nol: Mengevaluasi WHERE Baris demi Baris
Query: SELECT nama_produk FROM produk WHERE kategori='Elektronik' AND harga>50000; — database memeriksa tiap baris satu per satu.
Langkah (baris)
Perhitungan
Nilai
1. Kabel Data (Elektronik, 35000)
Elektronik=Elektronik? YA. 35000>50000?
TIDAK → ditolak
2. Kemeja Batik (Fashion, 150000)
Fashion=Elektronik?
TIDAK → ditolak
3. Earphone BT (Elektronik, 120000)
Elektronik=Elektronik? YA. 120000>50000?
YA → lolos
4. Power Bank (Elektronik, 95000)
Elektronik=Elektronik? YA. 95000>50000?
YA → lolos
5. Sandal Jepit (Fashion, 25000)
Fashion=Elektronik?
TIDAK → ditolak
HASIL AKHIR
2 dari 5
baris lolos filter (2 ÷ 5 × 100% = 40%)
Operator Khusus: BETWEEN, IN, LIKE, IS NULL
BETWEEN
harga BETWEEN 50000 AND 200000 Rentang nilai (termasuk batas atas & bawah) — singkatan dari harga>=50000 AND harga<=200000.
IN
kategori IN ('Fashion','Elektronik') Cocok dengan salah satu dari daftar nilai — singkatan dari banyak OR.
LIKE
nama_produk LIKE 'Kabel%' Pencocokan pola teks. % = sembarang karakter (wildcard).
IS NULL
tanggal_terjual IS NULL Baris yang datanya kosong/belum diisi (NULL ≠ 0 dan ≠ teks kosong).
Walkthrough: Pola LIKE 'Kabel%' vs '%Kabel%'
Tanda % boleh diletakkan di depan, di belakang, atau di kedua sisi kata kunci — hasilnya berbeda.
Langkah
Perhitungan
Nilai
1. Pola 'Kabel%' diuji ke "Kabel Data USB-C"
Apakah teks DIAWALI "Kabel"?
YA → cocok
2. Pola 'Kabel%' diuji ke "Charger Kabel Fast"
Apakah teks DIAWALI "Kabel"?
TIDAK → tidak cocok
3. Pola '%Kabel%' diuji ke "Charger Kabel Fast"
Apakah "Kabel" MUNCUL DI MANA SAJA?
YA → cocok
4. Pola '%Charger' diuji ke "Charger Kabel Fast"
Apakah teks DIAKHIRI "Charger"?
TIDAK → tidak cocok
Ingat posisi %: di belakang kata = "diawali dengan"; di depan kata = "diakhiri dengan"; di kedua sisi = "mengandung di mana saja".
Studi Kasus: Kombinasi Syarat
Tim marketing sebuah UMKM fashion di Shopee ingin menemukan kandidat produk untuk flash sale.
KEBUTUHAN BISNIS
Kategori Fashion atau Aksesoris
Harga antara Rp50.000 – Rp300.000
Stok masih tersedia (lebih dari 0)
Nama produk mengandung kata "Wanita"
SELECT nama_produk, harga, stok FROM produk WHERE (kategori IN ('Fashion','Aksesoris')) AND harga BETWEEN 50000 AND 300000 AND stok > 0 AND nama_produk LIKE '%Wanita%';
Bagian 3 dari 3
Mengurutkan Hasil dengan ORDER BY
Dari urut naik/turun satu kolom, sampai menggabungkan SELECT, WHERE, dan ORDER BY dalam satu query lengkap.
Sintaks ORDER BY: ASC dan DESC
SELECT nama_produk, harga FROM produk ORDER BY harga DESC;
ASC (default)
Urut naik: kecil ke besar, A ke Z, tanggal lama ke baru. Boleh ditulis atau dikosongkan — hasilnya sama.
DESC
Urut turun: besar ke kecil, Z ke A, tanggal baru ke lama. Wajib ditulis eksplisit.
Boleh mengurutkan berdasarkan lebih dari satu kolom: ORDER BY kategori ASC, harga DESC — urutkan per kategori dulu (A–Z), lalu di dalam tiap kategori urutkan harga dari termahal.
Hitung dari Nol: Menelusuri Urutan DESC
Query: SELECT nama_produk, harga FROM produk ORDER BY harga DESC; — database membandingkan nilai berpasangan hingga terurut.
Langkah
Perhitungan
Nilai
1. Data mentah (belum urut)
35000, 150000, 120000, 95000
urutan sembarang
2. Bandingkan 35000 vs 150000
150000 > 35000 ?
YA → 150000 naik dulu
3. Bandingkan 150000 vs 120000
150000 > 120000 ?
YA → 150000 tetap teratas
4. Bandingkan 120000 vs 95000
120000 > 95000 ?
YA → 120000 di atas 95000
HASIL TERURUT (DESC)
150000 > 120000 > 95000 > 35000
Kemeja Batik → Earphone BT → Power Bank → Kabel Data
Coba Sendiri: Jalankan WHERE dan ORDER BY Baris demi Baris
Ubah syarat WHERE dan arah ORDER BY, lalu amati bagaimana database menyaring dan mengurutkan setiap baris satu per satu.
Menggabungkan Ketiganya: Urutan Klausa yang Benar
SQL punya urutan penulisan baku. Menukar urutan ini akan membuat query error.
SELECT nama_produk, kategori, harga FROM produk WHERE kategori = 'Elektronik' AND stok > 0 ORDER BY harga DESC;
Logika eksekusi sebenarnya berbeda dari urutan penulisan: database memproses FROM → WHERE → SELECT → ORDER BY di belakang layar. Tapi Anda tetap harus MENULIS dalam urutan SELECT-FROM-WHERE-ORDER BY.
Kesalahan Umum Pemula
Lupa tanda kutip pada teks. WHERE kategori = Elektronik → error, karena dianggap nama kolom, bukan teks. Harus: = 'Elektronik'.
Salah urutan klausa. Menulis ORDER BY sebelum WHERE, atau WHERE sebelum FROM → query gagal dijalankan (syntax error).
Menyamakan NULL dengan = NULL. Harus pakai IS NULL — tanda sama dengan biasa tidak pernah cocok dengan NULL.
Lupa AND saat menggabungkan banyak syarat. WHERE stok > 0 harga > 1000 → error, harus disambung AND.
Latihan Kelas & Persiapan Minggu Depan
LATIHAN KELAS (10 MENIT)
Dari tabel produk, tulis query untuk:
Menampilkan nama & harga produk kategori "Fashion" dengan stok > 5
Diurutkan dari termurah ke termahal
Hanya produk yang namanya mengandung kata "Wanita"
MINGGU DEPAN — PERTEMUAN 12
GROUP BY & HAVING
Dari menampilkan baris satu-satu, kita naik level ke agregasi: menghitung total penjualan per kategori, rata-rata harga per toko, dan menyaring hasil agregat.