Panduan Lengkap Belajar SQL dari Nol untuk Pemula (2026)
TL;DR
SQL itu bahasa buat ngobrol sama database. Kamu bakal belajar 5 perintah dasar (SELECT, INSERT, UPDATE, DELETE, CREATE), tools gratis buat latihan, dan roadmap belajar dari nol sampai siap kerja. Artikel ini cocok banget buat kamu yang baru mulai atau mau refresh fundamental.
Apa Itu SQL dan Kenapa Penting Banget?
Pernah ga sih kamu penasaran gimana caranya Tokopedia bisa nampilin jutaan produk dalam hitungan detik? Atau gimana Gojek tau driver mana yang paling deket sama lokasi kamu?
Jawabannya: SQL.
SQL (dibaca "sequel" atau "es-ku-el") adalah singkatan dari Structured Query Language. Intinya, SQL itu bahasa yang kita pakai buat "ngobrol" sama database. Mau ambil data? Pakai SQL. Mau update data? SQL juga. Mau hapus data? Yap, SQL lagi.
Kenapa Sih Harus Belajar SQL?
Nih, aku kasih beberapa alasan kenapa SQL itu skill yang worth banget buat dipelajari:
1. Hampir semua perusahaan butuh orang yang bisa SQL
Coba deh buka job portal kayak LinkedIn atau Glints. Search "Data Analyst" atau "Business Intelligence". Hampir 90% job posting minta skill SQL. Bukan karena recruiter iseng, tapi karena SQL emang jadi bahasa universal buat ngolah data.
2. Gampang dipelajari
Dibanding bahasa programming lain kayak Python atau Java, SQL itu jauh lebih gampang. Syntax-nya mirip bahasa Inggris sehari-hari. Kamu mau ambil nama customer? Tinggal tulis SELECT nama FROM customers. Simpel kan?
3. Langsung kepakai
Beda sama beberapa skill yang butuh waktu lama sebelum bisa dipraktekkin, SQL bisa langsung kamu pakai. Begitu paham basic-nya, kamu udah bisa query data beneran.
4. Fondasi buat skill data lainnya
Mau belajar Data Science? Machine Learning? Business Intelligence? Semuanya butuh SQL sebagai fondasi. Jadi investasi waktu buat belajar SQL itu ga bakal sia-sia.
Siapa Aja yang Butuh SQL?
- Data Analyst - ini yang paling obvious
- Data Scientist - buat ambil dan prepare data
- Data Engineer - buat bikin pipeline data
- Business Analyst - buat reporting dan analisis
- Product Manager - buat validasi hipotesis dengan data
- Backend Developer - buat interaksi sama database
- Digital Marketer - buat analisis campaign performance
Intinya, kalau kerjaan kamu ada hubungannya sama data (dan di 2025 ini hampir semua kerjaan butuh data), SQL itu skill yang wajib dikuasai.
Konsep Dasar Database: Tabel, Kolom, Baris
Sebelum mulai nulis query, kamu perlu paham dulu struktur database. Tenang, konsepnya ga ribet kok.
Database Itu Apa Sih?
Bayangin database kayak lemari arsip digital. Di dalemnya ada banyak laci (tabel), dan setiap laci isinya dokumen-dokumen yang terorganisir.
Tabel (Table)
Tabel itu tempat kita nyimpen data. Satu database bisa punya banyak tabel. Misalnya di database toko online:
- Tabel
customers- nyimpen data pelanggan - Tabel
products- nyimpen data produk - Tabel
orders- nyimpen data pesanan - Tabel
payments- nyimpen data pembayaran
Kolom (Column)
Kolom itu kayak kategori atau atribut dari data. Contoh di tabel customers:
| Kolom | Penjelasan |
|---|---|
| customer_id | ID unik pelanggan |
| nama | Nama pelanggan |
| Email pelanggan | |
| kota | Kota tempat tinggal |
| tanggal_daftar | Kapan daftar jadi member |
Baris (Row)
Baris itu isi datanya. Satu baris = satu record. Nih contoh tabel customers:
| customer_id | nama | kota | tanggal_daftar | |
|---|---|---|---|---|
| 1 | Budi Santoso | budi@gmail.com | Jakarta | 2024-01-15 |
| 2 | Siti Rahayu | siti@yahoo.com | Bandung | 2024-02-20 |
| 3 | Andi Wijaya | andi@gmail.com | Surabaya | 2024-03-10 |
Gimana? Udah mulai kebayang kan struktur database itu kayak gimana?
Primary Key dan Foreign Key
Dua konsep ini penting banget:
Primary Key - kolom yang nilainya unik dan ga boleh kosong. Biasanya ini ID. Fungsinya buat identifikasi setiap baris secara unik.
Foreign Key - kolom yang nyambungin satu tabel ke tabel lain. Misalnya di tabel orders ada kolom customer_id yang nyambung ke tabel customers.
Contoh hubungan antar tabel:
customers (customer_id) ←→ orders (customer_id)
products (product_id) ←→ orders (product_id)
Nah, konsep ini bakal kepake banget nanti pas kamu belajar JOIN. Tapi buat sekarang, pahamin dulu basic-nya.
5 Perintah SQL Dasar yang Wajib Dikuasai
Oke, sekarang kita masuk ke bagian yang paling seru: nulis query! Ada 5 perintah dasar yang wajib banget kamu kuasai.
1. SELECT - Ambil Data
SELECT itu perintah buat ngambil data dari tabel. Ini perintah yang paling sering kamu pakai.
Syntax dasar:
SELECT kolom1, kolom2
FROM nama_tabel;
Contoh 1: Ambil semua kolom
SELECT *
FROM customers;
Output:
| customer_id | nama | kota | tanggal_daftar | |
|---|---|---|---|---|
| 1 | Budi Santoso | budi@gmail.com | Jakarta | 2024-01-15 |
| 2 | Siti Rahayu | siti@yahoo.com | Bandung | 2024-02-20 |
| 3 | Andi Wijaya | andi@gmail.com | Surabaya | 2024-03-10 |
Contoh 2: Ambil kolom tertentu
SELECT nama, kota
FROM customers;
Output:
| nama | kota |
|---|---|
| Budi Santoso | Jakarta |
| Siti Rahayu | Bandung |
| Andi Wijaya | Surabaya |
Contoh 3: Pakai WHERE buat filter
SELECT nama, email
FROM customers
WHERE kota = 'Jakarta';
Output:
| nama | |
|---|---|
| Budi Santoso | budi@gmail.com |
Gampang kan? WHERE itu kayak filter. Kamu bisa pakai berbagai kondisi:
=sama dengan!=atau<>tidak sama dengan>lebih besar<lebih kecil>=lebih besar sama dengan<=lebih kecil sama denganLIKEbuat pattern matchingINbuat multiple valuesBETWEENbuat range
Contoh 4: ORDER BY buat ngurutin
SELECT nama, tanggal_daftar
FROM customers
ORDER BY tanggal_daftar DESC;
DESC artinya descending (dari terbaru). Kalau mau ascending (dari terlama), pakai ASC atau ga usah ditulis (default-nya ASC).
2. INSERT - Tambah Data Baru
INSERT itu buat masukin data baru ke tabel.
Syntax dasar:
INSERT INTO nama_tabel (kolom1, kolom2, kolom3)
VALUES (nilai1, nilai2, nilai3);
Contoh: Tambah customer baru
INSERT INTO customers (nama, email, kota, tanggal_daftar)
VALUES ('Dewi Lestari', 'dewi@gmail.com', 'Medan', '2024-04-05');
Setelah query ini dijalanin, tabel customers bakal punya 4 baris.
Tips: Kalau mau insert banyak data sekaligus:
INSERT INTO customers (nama, email, kota, tanggal_daftar)
VALUES
('Dewi Lestari', 'dewi@gmail.com', 'Medan', '2024-04-05'),
('Rudi Hartono', 'rudi@gmail.com', 'Semarang', '2024-04-06'),
('Maya Sari', 'maya@gmail.com', 'Yogyakarta', '2024-04-07');
3. UPDATE - Ubah Data yang Udah Ada
UPDATE itu buat ngubah data yang udah ada di tabel.
Syntax dasar:
UPDATE nama_tabel
SET kolom1 = nilai_baru
WHERE kondisi;
Contoh: Update kota customer
UPDATE customers
SET kota = 'Tangerang'
WHERE customer_id = 1;
Query ini bakal ngubah kota Budi Santoso dari Jakarta jadi Tangerang.
PENTING BANGET: Jangan lupa WHERE clause! Kalau kamu jalanin UPDATE tanpa WHERE, semua baris bakal ke-update. Bahaya!
-- JANGAN GINI! Semua customer kotanya jadi Tangerang
UPDATE customers
SET kota = 'Tangerang';
-- HARUSNYA GINI
UPDATE customers
SET kota = 'Tangerang'
WHERE customer_id = 1;
4. DELETE - Hapus Data
DELETE itu buat hapus data dari tabel.
Syntax dasar:
DELETE FROM nama_tabel
WHERE kondisi;
Contoh: Hapus customer
DELETE FROM customers
WHERE customer_id = 3;
PENTING BANGET (lagi): Sama kayak UPDATE, jangan lupa WHERE! Kalau ga pakai WHERE, semua data di tabel bakal kehapus.
-- BAHAYA! Semua data customers kehapus
DELETE FROM customers;
-- YANG BENER
DELETE FROM customers
WHERE customer_id = 3;
Pro tip: Sebelum jalanin UPDATE atau DELETE, coba SELECT dulu dengan kondisi yang sama buat mastiin kamu bakal update/hapus data yang bener.
-- Step 1: Cek dulu
SELECT * FROM customers WHERE customer_id = 3;
-- Step 2: Kalau udah yakin, baru delete
DELETE FROM customers WHERE customer_id = 3;
5. CREATE - Bikin Tabel Baru
CREATE itu buat bikin objek baru di database, paling sering buat bikin tabel.
Syntax dasar:
CREATE TABLE nama_tabel (
kolom1 tipe_data constraint,
kolom2 tipe_data constraint,
...
);
Contoh: Bikin tabel products
CREATE TABLE products (
product_id INT PRIMARY KEY,
nama_produk VARCHAR(200) NOT NULL,
kategori VARCHAR(100),
harga INT NOT NULL,
stok INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Tipe data yang sering dipakai:
| Tipe Data | Penjelasan | Contoh |
|---|---|---|
| INT | Angka bulat | 1, 100, 50000 |
| VARCHAR(n) | Text dengan max n karakter | 'Budi', 'Jakarta' |
| TEXT | Text panjang | Deskripsi produk |
| DATE | Tanggal | '2024-01-15' |
| TIMESTAMP | Tanggal + waktu | '2024-01-15 10:30:00' |
| DECIMAL(p,s) | Angka desimal | 19999.99 |
| BOOLEAN | True/False | TRUE, FALSE |
Constraint yang sering dipakai:
| Constraint | Fungsi |
|---|---|
| PRIMARY KEY | Bikin kolom jadi primary key |
| NOT NULL | Kolom ga boleh kosong |
| UNIQUE | Nilai harus unik |
| DEFAULT | Nilai default kalau ga diisi |
| FOREIGN KEY | Referensi ke tabel lain |
Tools Gratis untuk Latihan SQL
Teori doang ga cukup. Kamu butuh praktek! Nih beberapa tools gratis yang bisa kamu pakai buat latihan SQL.
1. NgulikSQL (ngulikdata.com/nguliksql) ⭐ Recommended!
Ini platform latihan SQL buatan aku sendiri, khusus buat kamu yang mau belajar SQL dengan konteks Indonesia.
Kelebihan:
- 100% Bahasa Indonesia
- Dataset pakai konteks lokal (Tokopedia, Gojek, startup Indonesia)
- Latihan dari basic sampai advanced
- Ada pembahasan setiap soal
- Gratis!
Cocok buat: Semua level, terutama yang mau latihan dengan data yang relatable sama kondisi kerja di Indonesia.
2. SQLBolt (sqlbolt.com)
Ini salah satu platform belajar SQL interaktif yang paling populer. Interface-nya clean dan materinya terstruktur banget.
Kelebihan:
- Tutorial step-by-step yang jelas
- Langsung praktek di browser
- Progress tracking
- Ga perlu signup
Cocok buat: Pemula yang mau belajar dari nol dengan struktur yang jelas.
3. DataLemur (datalemur.com)
Kalau kamu mau persiapan interview SQL, DataLemur ini wajib banget. Isinya soal-soal SQL yang beneran keluar di interview perusahaan tech.
Kelebihan:
- Soal interview dari perusahaan real (FAANG, startup)
- Ada difficulty level (Easy, Medium, Hard)
- Pembahasan solusi yang detail
- Fokus ke pattern yang sering keluar di interview
Cocok buat: Yang lagi persiapan interview Data Analyst / Data Scientist.
4. DB Fiddle (db-fiddle.com)
Ini favorit aku buat testing query cepet. Ga perlu install apa-apa, langsung buka browser dan nulis query.
Kelebihan:
- Gratis dan ga perlu daftar
- Support PostgreSQL, MySQL, SQLite
- Bisa share query lewat URL
- Interface simpel
Cocok buat: Testing query singkat, debugging syntax.
5. PostgreSQL + pgAdmin
Kalau kamu serius mau belajar SQL, aku saranin install PostgreSQL di laptop kamu. PostgreSQL itu database yang paling banyak dipakai di industri, jadi skill-nya langsung transferable ke kerjaan.
Cara install:
1. Download PostgreSQL dari postgresql.org
2. Install (tinggal next-next aja)
3. pgAdmin otomatis ke-install bareng
Kelebihan:
- Database yang beneran dipake di industri
- Bisa bikin banyak database buat eksperimen
- Feature lengkap
Cocok buat: Yang mau serius belajar dan bikin portfolio project.
Rekomendasi Aku
Buat pemula, mulai dari SQLBolt dulu buat paham konsep dasar. Setelah itu, langsung latihan di NgulikSQL buat dapetin feel ngerjain soal dengan konteks Indonesia. Kalau udah mau interview, grind soal-soal di DataLemur.
Roadmap Belajar SQL dari Pemula sampai Mahir
Oke, ini bagian yang banyak ditanyain: "Urutan belajar SQL yang bener itu gimana sih?"
Aku bagi jadi 4 level. Setiap level butuh waktu sekitar 2-4 minggu tergantung intensitas belajar kamu.
Level 1: SQL Fundamentals (Minggu 1-4)
Yang dipelajari:
- Konsep database (tabel, kolom, baris, key)
- SELECT statement
- WHERE clause dan operator
- ORDER BY dan LIMIT
- Basic aggregate functions (COUNT, SUM, AVG, MIN, MAX)
- GROUP BY dan HAVING
Target: Bisa query data sederhana dan bikin summary report basic.
Latihan:
1. Ambil 10 customer teratas berdasarkan tanggal daftar
2. Hitung total customer per kota
3. Filter customer yang daftar di bulan tertentu
Level 2: Intermediate SQL (Minggu 5-8)
Yang dipelajari:
- JOIN (INNER, LEFT, RIGHT, FULL)
- Subquery
- CASE WHEN
- Date functions
- String functions
- UNION dan UNION ALL
Target: Bisa gabungin data dari beberapa tabel dan bikin transformasi data.
Latihan:
1. Gabungin data customer dengan data order
2. Hitung total pembelian per customer
3. Kategorisasi customer berdasarkan total spending
Level 3: Advanced SQL (Minggu 9-12)
Yang dipelajari:
- Window Functions (ROW_NUMBER, RANK, DENSE_RANK)
- Common Table Expression (CTE)
- LAG dan LEAD
- Running totals dan moving averages
- Query optimization basics
Target: Bisa bikin analisis yang lebih kompleks kayak cohort analysis, funnel analysis.
Latihan:
1. Ranking customer berdasarkan total spending
2. Hitung retention rate per cohort
3. Analisis month-over-month growth
Level 4: Expert SQL (Ongoing)
Yang dipelajari:
- Advanced window functions
- Recursive CTE
- Query performance tuning
- Database-specific features (PostgreSQL, Snowflake, BigQuery)
- SQL untuk use case spesifik (A/B testing, attribution)
Target: Bisa handle query kompleks dengan performance yang optimal.
Tips Belajar yang Efektif
1. Praktek setiap hari
Minimal 30 menit sehari. Konsistensi lebih penting daripada durasi.
2. Pakai dataset yang relatable
Jangan cuma pakai sample dataset bawaan. Coba cari dataset yang relate sama kerjaan atau interest kamu.
3. Bikin project
Setelah paham basic, langsung bikin project. Contoh:
- Analisis data penjualan toko
- Dashboard sederhana buat tracking KPI
- Cohort analysis user app
4. Gabung komunitas
Join grup Telegram atau Discord yang bahas SQL. Belajar dari pertanyaan dan jawaban orang lain itu efektif banget.
5. Dokumentasiin progress
Simpen query-query yang udah kamu bikin. Ini bakal jadi portfolio plus referensi buat kamu sendiri.
Kesalahan Umum Pemula dan Cara Mengatasinya
Selama 10 tahun lebih kerja di bidang data, aku udah liat banyak banget kesalahan SQL yang dilakuin pemula. Nih aku rangkum yang paling sering.
Kesalahan #1: Lupa WHERE di UPDATE/DELETE
Ini yang paling bahaya dan paling sering terjadi.
❌ Jangan gini:
UPDATE products SET harga = 50000;
-- Semua produk harganya jadi 50000!
✅ Harusnya gini:
UPDATE products SET harga = 50000 WHERE product_id = 101;
Tips: Selalu SELECT dulu sebelum UPDATE/DELETE buat mastiin kondisi WHERE-nya bener.
Kesalahan #2: Pakai SELECT * di Production
SELECT * emang gampang, tapi di production bisa bikin query lambat dan boros resource.
❌ Hindari:
SELECT * FROM orders;
✅ Lebih baik:
SELECT order_id, customer_id, total_amount, order_date
FROM orders;
Kesalahan #3: Ga Handle NULL dengan Bener
NULL itu bukan string kosong atau angka 0. NULL artinya "ga ada nilai".
❌ Salah:
SELECT * FROM customers WHERE kota = NULL;
-- Ini ga bakal return apa-apa
✅ Bener:
SELECT * FROM customers WHERE kota IS NULL;
Dan buat cek yang bukan NULL:
SELECT * FROM customers WHERE kota IS NOT NULL;
Kesalahan #4: Salah Urutan Clause
SQL punya urutan clause yang harus diikutin.
❌ Salah:
SELECT nama, kota
WHERE kota = 'Jakarta'
FROM customers
ORDER BY nama;
✅ Bener:
SELECT nama, kota
FROM customers
WHERE kota = 'Jakarta'
ORDER BY nama;
Urutan yang bener:
1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
7. LIMIT
Kesalahan #5: Bingung WHERE vs HAVING
WHERE itu buat filter baris sebelum GROUP BY. HAVING buat filter setelah GROUP BY.
❌ Salah:
SELECT kota, COUNT(*) as total
FROM customers
WHERE COUNT(*) > 5
GROUP BY kota;
-- Error! COUNT ga bisa di WHERE
✅ Bener:
SELECT kota, COUNT(*) as total
FROM customers
GROUP BY kota
HAVING COUNT(*) > 5;
Kesalahan #6: Cartesian Product tanpa Sadar
Kalau kamu JOIN tanpa kondisi yang bener, kamu bakal dapet cartesian product (semua kombinasi baris).
❌ Bahaya:
SELECT *
FROM customers, orders;
-- Kalau customers ada 1000 baris dan orders ada 5000 baris,
-- hasilnya 5 juta baris!
✅ Bener:
SELECT *
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id;
Kesalahan #7: Ga Pakai Alias
Query tanpa alias itu susah dibaca, apalagi kalau ada banyak tabel.
❌ Susah dibaca:
SELECT customers.nama, orders.order_date, products.nama_produk
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN products ON orders.product_id = products.product_id;
✅ Lebih rapi:
SELECT c.nama, o.order_date, p.nama_produk
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id
INNER JOIN products p ON o.product_id = p.product_id;
FAQ
1. SQL itu susah ga sih?
Jujur, SQL itu salah satu bahasa programming yang paling gampang dipelajari. Syntax-nya mirip bahasa Inggris, jadi cukup intuitif. Kebanyakan orang bisa nulis query basic dalam 1-2 minggu.
2. Harus belajar database apa dulu?
Aku saranin mulai dari PostgreSQL atau MySQL. Dua ini yang paling banyak dipakai di industri Indonesia. Syntax-nya mirip, jadi kalau udah paham satu, yang lain gampang.
3. Perlu bisa programming lain dulu sebelum belajar SQL?
Ga perlu! SQL bisa dipelajari tanpa background programming. Malah banyak orang yang belajar SQL dulu sebelum Python atau bahasa lain.
4. Berapa lama sampai bisa kerja sebagai Data Analyst?
Tergantung intensitas belajar, tapi kalau fokus, 3-6 bulan cukup buat nyiapin skill dasar. Selain SQL, kamu juga perlu belajar Excel/Google Sheets dan basic visualization (Tableau/Power BI/Metabase).
5. Bedanya SQL sama MySQL/PostgreSQL/SQLite itu apa?
SQL itu bahasanya. MySQL, PostgreSQL, SQLite itu database management system (DBMS) yang pakai SQL sebagai bahasanya. Analoginya: SQL itu kayak bahasa Indonesia, sedangkan MySQL, PostgreSQL itu kayak dialek yang beda-beda dikit.
6. SQL masih relevan di 2026?
Banget! SQL udah ada sejak 1970-an dan masih jadi skill yang paling dicari buat role data. Mau secanggih apapun tools-nya, data tetap disimpen di database, dan SQL tetap jadi cara paling efisien buat ngaksesnya.
Key Takeaways
-
SQL itu bahasa buat ngobrol sama database. Hampir semua perusahaan butuh orang yang bisa SQL.
-
5 perintah dasar yang wajib dikuasai: SELECT, INSERT, UPDATE, DELETE, CREATE. Dengan 5 ini aja kamu udah bisa banyak hal.
-
Praktek itu kunci. Pakai tools gratis kayak DB Fiddle atau install PostgreSQL buat latihan tiap hari.
-
Hati-hati sama UPDATE dan DELETE tanpa WHERE. Ini kesalahan fatal yang bisa bikin data hilang.
-
Belajar bertahap. Mulai dari fundamentals, jangan langsung loncat ke window functions.
Selanjutnya
Kalau kamu udah paham basic dari artikel ini, next step-nya:
- Perbedaan INNER JOIN, LEFT JOIN, RIGHT JOIN
- Fungsi GROUP BY dan HAVING
- Cara Menggunakan CASE WHEN
Mulai Belajar Sekarang!
Jangan cuma dibaca doang. Langsung praktek di NgulikSQL buat latihan dengan soal-soal yang konteksnya Indonesia. Atau kalau mau belajar konsep dulu, coba SQLBolt.
Mulai dari yang simpel: SELECT * FROM customers. Pelan-pelan nanti juga terbiasa.
Kalau ada pertanyaan atau stuck, tinggal comment di bawah atau DM aku di Instagram @ngulikdata.
Happy querying!
Artikel ini bagian dari seri Belajar SQL dari Nol. Bookmark halaman ini dan cek update-nya secara berkala.
Artikel Terkait
Fungsi GROUP BY dan HAVING di SQL: Panduan Lengkap
Pelajari cara pakai GROUP BY dan HAVING untuk agregasi data di SQL dengan contoh dataset penjualan UMKM Indonesia
Cara Menggunakan Subquery di SQL (Dengan 10 Contoh Praktis)
Pelajari cara pakai subquery di SQL dengan 10 contoh praktis menggunakan dataset e-commerce Indonesia
Perbedaan INNER JOIN, LEFT JOIN, RIGHT JOIN, dan FULL JOIN di SQL
Belajar perbedaan jenis-jenis JOIN di SQL dengan contoh praktis dan visualisasi. Panduan lengkap INNER, LEFT, RIGHT, dan FULL JOIN untuk pemula.