sqldatabaseselectMahir4 mnt baca

SQL Dasar: SELECT sampai WHERE

Ambil data dari database dengan SELECT, saring dengan WHERE, urutkan dengan ORDER BY.

SQL itu seperti memesan di warteg

Bayangkan database sebagai dapur restoran yang raksasa, dan SQL sebagai cara kamu memesan ke kokinya. Kamu tidak perlu tahu cara masaknya, bumbu apa yang dipakai, atau kompor mana yang menyala. Kamu cukup bilang "nasi goreng pedas, dua porsi" dan makanannya datang. SQL bekerja persis seperti itu: kamu bilang data apa yang kamu mau, database yang memikirkan caranya. Ini yang disebut bahasa deklaratif, dan ini alasan SQL terasa lebih mudah dipelajari daripada bahasa pemrograman biasa.

Kenapa analyst wajib SQL walau sudah jago pandas

Alasan pertama: data perusahaan tidak tinggal di file CSV di laptop kamu. Data tinggal di database server, dan tabel transaksi bisa berisi ratusan juta baris. Kamu tidak bisa, dan tidak boleh, mengunduh semuanya lalu membukanya di pandas. Laptop kamu akan menyerah duluan, dan tim data engineer akan menegurmu.

Alasan kedua: SQL memfilter data di dalam database, sebelum data dikirim kepadamu. Butuh transaksi bulan Januari dari arsip 5 tahun? Database hanya mengirimkan 1/60 bagiannya. Bandingkan dengan mengambil semua data lalu memfilter di pandas: lambat, boros memori, dan boros bandwidth.

Alasan ketiga: kemandirian dan karier. Tanpa SQL, kamu tergantung orang lain untuk mengambilkan data setiap kali ada pertanyaan bisnis. Dengan SQL, kamu jawab sendiri dalam hitungan menit. Tidak heran hampir semua lowongan data analyst menulis "wajib SQL". Bisa pandas tapi tidak bisa SQL itu seperti bisa masak tapi tidak bisa belanja bahan sendiri.

Contoh minimal: kenalan dengan sintaks

Tidak perlu install database server. SQLite sudah built-in di Python, jadi kamu bisa latihan langsung:

python
import sqlite3
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("CREATE TABLE pelanggan (nama TEXT, kota TEXT, belanja INTEGER)")
cur.execute("INSERT INTO pelanggan VALUES ('Budi', 'Jakarta', 800000), ('Sari', 'Bandung', 300000)")
for row in cur.execute("SELECT nama, belanja FROM pelanggan WHERE kota = 'Jakarta'"):
    print(row)  # ('Budi', 800000)
con.close()

Baca querynya seperti kalimat biasa: SELECT (kolom apa) -> FROM (dari tabel mana) -> WHERE (dengan syarat apa). Urutan klausa ini baku di semua database: SELECT, FROM, WHERE, ORDER BY, LIMIT.

Contoh realistis: dataset toko

Sekarang ke contoh yang mirip kerjaan nyata. Tabel penjualan(id, tanggal, produk, kategori, jumlah, harga_satuan):

sql
-- Omzet per kategori selama Januari 2026, urut dari yang terbesar
SELECT kategori,
       SUM(jumlah * harga_satuan) AS omzet
FROM penjualan
WHERE tanggal BETWEEN '2026-01-01' AND '2026-01-31'
GROUP BY kategori
ORDER BY omzet DESC;

Pola "saring dulu dengan WHERE, rangkum, lalu urutkan" ini akan kamu pakai di sekitar 90% query kerjaan. Operator WHERE yang paling sering dipakai: =, !=, >, <, BETWEEN, IN, LIKE. Contoh LIKE untuk mencari nama yang mengandung teks tertentu:

sql
SELECT nama FROM pelanggan WHERE nama LIKE '%budi%';
SELECT nama FROM pelanggan WHERE kota IN ('Jakarta', 'Bandung', 'Surabaya');

Jebakan 1: SELECT bintang di production

SALAH (di query production):

sql
SELECT * FROM penjualan WHERE tanggal >= '2026-01-01';

BENAR:

sql
SELECT tanggal, produk, jumlah, harga_satuan
FROM penjualan
WHERE tanggal >= '2026-01-01';

SELECT * mengambil semua kolom, termasuk yang tidak kamu butuhkan seperti foto produk atau catatan internal. Di tabel kecil tidak terasa, tapi di tabel 50 kolom dengan jutaan baris, query-mu jadi lambat dan boros memori. Tulis kolom yang dibutuhkan secara eksplisit, itu juga membuat query-mu terdokumentasi sendiri.

Jebakan 2: UPDATE atau DELETE tanpa WHERE

Ini jebakan paling legendaris dan paling mahal di dunia SQL:

sql
-- SALAH: lupa WHERE, SEMUA baris ikut berubah!
UPDATE pelanggan SET kota = 'Jakarta';
-- BENAR: kunci dulu baris targetnya
UPDATE pelanggan SET kota = 'Jakarta' WHERE id = 42;

Tanpa WHERE, UPDATE mengubah seluruh tabel dan DELETE menghapus seluruh tabel. Kebiasaan aman: tulis WHERE-nya dulu sebelum menulis SET, dan untuk DELETE selalu cek dulu dengan SELECT memakai WHERE yang sama sebelum mengeksekusi yang asli.

Catatan teknis: Teks di SQL dibungkus kutip satu ('Jakarta'), bukan kutip dua. Di banyak database kutip dua artinya nama kolom atau tabel. Satu hal lagi: NULL tidak bisa dibandingkan dengan =. Pakai IS NULL (contoh: WHERE kota IS NULL), karena kota = NULL hasilnya selalu unknown dan barisnya tidak pernah muncul.

Tantangan

Top pelanggan Jakarta

Tabel pelanggan(nama, kota, total_belanja). Tulis query untuk mengambil 5 pelanggan Jakarta dengan belanja terbesar: kolom nama dan total_belanja, urut menurun, batasi 5.