SQL (Structured Query Language) adalah keterampilan fundamental bagi pengembang, analis data, dan profesional IT. Saat interview, kemampuan SQL sering diuji untuk menilai pemahaman Anda tentang pengelolaan data. Artikel ini akan membahas konsep-konsep SQL yang sering ditanyakan saat interview, mulai dari dasar hingga lanjutan, beserta contoh praktis.
1. CRUD: Operasi Dasar SQL
CRUD (Create, Read, Update, Delete) adalah fondasi SQL. Pastikan Anda menguasai perintah dasar berikut:
a. Create (Membuat Data)
-- Menambahkan data ke tabel
INSERT INTO users (nama, email, idjabatan)
VALUES ('Andi', 'andi@example.com', 1);
b. Read (Membaca Data)
-- Menampilkan semua data
SELECT * FROM users;
-- Menampilkan data dengan kondisi
SELECT nama, email FROM users WHERE idjabatan = 1;
c. Update (Memperbarui Data)
-- Mengubah data
UPDATE users SET email = 'andi.new@example.com' WHERE id = 1;
d. Delete (Menghapus Data)
-- Menghapus data
DELETE FROM users WHERE id = 1;
Pertanyaan Interview:
- “Bagaimana cara menghapus data duplikat dari sebuah tabel?”
- “Apa perbedaan antara
DELETEdanTRUNCATE?” (Jawaban:DELETEbisa digunakan denganWHEREdan mencatat log, sedangkanTRUNCATEmenghapus semua data tanpa log dan lebih cepat.)
2. Filtering dan Sorting
a. WHERE (Filter Baris)
SELECT * FROM users WHERE idjabatan = 2 AND status = 'aktif';
b. ORDER BY (Sorting)
SELECT * FROM users ORDER BY nama ASC; -- Urutkan dari A-Z
SELECT * FROM users ORDER BY gaji DESC; -- Urutkan dari tertinggi
c. LIMIT (Membatasi Hasil)
SELECT * FROM users ORDER BY gaji DESC LIMIT 10; -- 10 gaji tertinggi
Pertanyaan Interview:
- “Bagaimana cara menampilkan 5 user dengan gaji tertinggi?”
- “Apa perbedaan
WHEREdanHAVING?” (Jawaban:WHEREuntuk filter baris,HAVINGuntuk filter grup setelahGROUP BY.)
3. Joins: Menggabungkan Tabel
Joins digunakan untuk menggabungkan data dari dua atau lebih tabel.
a. INNER JOIN
-- Hanya menampilkan baris yang cocok di kedua tabel
SELECT u.nama, dj.namajabatan
FROM users u
INNER JOIN daftarjabatan dj ON u.idjabatan = dj.id;
b. LEFT JOIN
-- Menampilkan semua baris dari tabel kiri, plus `NULL` jika tidak cocok
SELECT u.nama, dj.namajabatan
FROM users u
LEFT JOIN daftarjabatan dj ON u.idjabatan = dj.id;
c. RIGHT JOIN
-- Menampilkan semua baris dari tabel kanan, plus `NULL` jika tidak cocok
SELECT u.nama, dj.namajabatan
FROM users u
RIGHT JOIN daftarjabatan dj ON u.idjabatan = dj.id;
d. FULL JOIN
-- Menampilkan semua baris dari kedua tabel, dengan `NULL` jika tidak cocok
SELECT u.nama, dj.namajabatan
FROM users u
FULL JOIN daftarjabatan dj ON u.idjabatan = dj.id;
Pertanyaan Interview:
- “Apa perbedaan
INNER JOINdanLEFT JOIN?” - “Kapan sebaiknya menggunakan
RIGHT JOIN?” (Jawaban:RIGHT JOINbisa diganti denganLEFT JOINdengan membalik urutan tabel.)
4. Agregasi dan Grouping
a. GROUP BY
-- Mengelompokkan data
SELECT idjabatan, COUNT(*) AS jumlah_user
FROM users
GROUP BY idjabatan;
b. HAVING
-- Filter grup setelah `GROUP BY`
SELECT idjabatan, COUNT(*) AS jumlah_user
FROM users
GROUP BY idjabatan
HAVING COUNT(*) > 5;
c. Fungsi Agregat
-- Menghitung rata-rata, total, nilai maksimum, dll.
SELECT
idjabatan,
AVG(gaji) AS rata_rata_gaji,
MAX(gaji) AS gaji_tertinggi
FROM users
GROUP BY idjabatan;
Pertanyaan Interview:
- “Bagaimana cara menemukan jabatan dengan rata-rata gaji tertinggi?”
- “Apa perbedaan
GROUP BYdanORDER BY?” (Jawaban:GROUP BYuntuk mengelompokkan data,ORDER BYuntuk mengurutkan hasil.)
5. Subquery dan CASE WHEN
a. Subquery
-- Query di dalam query
SELECT nama FROM users
WHERE gaji > (SELECT AVG(gaji) FROM users);
b. CASE WHEN
-- Logika bersyarat
SELECT
nama,
CASE
WHEN gaji > 10000000 THEN 'Tinggi'
WHEN gaji > 5000000 THEN 'Sedang'
ELSE 'Rendah'
END AS kategori_gaji
FROM users;
Pertanyaan Interview:
- “Bagaimana cara menampilkan user dengan gaji di atas rata-rata?”
- “Kapan sebaiknya menggunakan
CASE WHEN?” (Jawaban: Untuk membuat kolom baru berdasarkan kondisi.)
6. Index dan Optimasi Query
a. Index
-- Membuat index untuk mempercepat pencarian
CREATE INDEX idx_nama ON users(nama);
b. Optimasi Query
- Gunakan
WHEREuntuk membatasi data. - Hindari
SELECT *, pilih kolom yang diperlukan. - Gunakan
JOINdengan bijak dan pastikan kolom yang dijadikanONmemiliki index.
Pertanyaan Interview:
- “Bagaimana cara mempercepat query yang lambat?”
- “Apa itu index dan kapan sebaiknya digunakan?” (Jawaban: Index mempercepat pencarian, digunakan untuk kolom yang sering difilter atau dijadikan
JOIN.)
7. Transaksi dan ACID
a. Transaksi
-- Memastikan operasi dieksekusi secara bersamaan
BEGIN;
UPDATE rekening SET saldo = saldo - 100000 WHERE id = 1;
UPDATE rekening SET saldo = saldo + 100000 WHERE id = 2;
COMMIT;
Pertanyaan Interview:
- “Apa itu transaksi dan mengapa penting?” (Jawaban: Transaksi memastikan operasi dieksekusi secara atomik, konsisten, terisolasi, dan tahan lama (ACID).)
8. Normalisasi Database
Pertanyaan Interview:
- “Apa itu normalisasi dan mengapa penting?” (Jawaban: Normalisasi mengurangi redundansi data dengan membagi tabel menjadi bentuk yang lebih efisien, seperti 1NF, 2NF, 3NF.)
9. Window Functions (Untuk Analisis Lanjut)
-- Menampilkan ranking gaji per jabatan
SELECT
nama,
namajabatan,
gaji,
RANK() OVER (PARTITION BY idjabatan ORDER BY gaji DESC) AS ranking_gaji
FROM users u
INNER JOIN daftarjabatan dj ON u.idjabatan = dj.id;
Pertanyaan Interview:
- “Bagaimana cara menampilkan ranking gaji tertinggi per departemen?”
- “Apa perbedaan
RANK()danDENSE_RANK()?” (Jawaban:RANK()memberikan ranking dengan nilai yang sama, sedangkanDENSE_RANK()tidak meninggalkan celah.)
10. Pertanyaan Umum Interview SQL
- “Apa perbedaan
INNER JOINdanLEFT JOIN?” - “Bagaimana cara menemukan data duplikat dalam sebuah tabel?”
- “Apa itu
GROUP BYdan kapan digunakan?” - “Bagaimana cara mengoptimasi query yang lambat?”
- “Apa itu transaksi dan mengapa penting dalam database?”
Kesimpulan
Menguasai SQL untuk interview tidak hanya tentang menghafal sintaks, tetapi juga memahami konsep di baliknya dan mampu menerapkannya dalam kasus nyata. Berlatihlah dengan soal-soal kasus, seperti:
- Menulis query untuk laporan.
- Mencari data yang hilang atau tidak konsisten.
- Mengoptimasi query yang lambat.
Dengan memahami konsep-konsep di atas, Anda akan lebih percaya diri saat menghadapi interview SQL. Selamat berlatih! 🚀