Lewati ke konten utama

99 Pertanyaan dan Jawaban Wawancara SQL Teratas untuk 2026

Siap wawancara dengan tinjauan komprehensif pertanyaan dan jawaban wawancara SQL penting untuk pencari kerja, manajer perekrutan, dan perekrut.
Diperbarui 16 Apr 2026  · 15 mnt baca

Baik Anda seorang pencari kerja yang mencari peluang baru untuk menerapkan keterampilan SQL Anda atau seorang manajer perekrutan yang akan mewawancarai kandidat untuk lowongan di perusahaannya, mengetahui pertanyaan dan jawaban wawancara SQL yang umum adalah suatu keharusan.

Artikel ini memuat 99 pertanyaan dan jawaban wawancara SQL untuk 2026, mencakup topik kunci SQL untuk membantu Anda mempersiapkan, belajar, dan merekrut secara efektif, termasuk:

  • Pengetahuan Dasar: Definisi jelas tentang RDBMS, kunci, dan dialek SQL.
  • Penguasaan Teknis: Pembahasan mendalam tentang DDL vs. DML, constraint, dan pengindeksan.
  • Logika Query: Penjelasan tentang Join, Subquery, dan Fungsi Agregat.
  • Aplikasi Praktis: Solusi pengkodean dunia nyata, seperti mencari nilai ke-n tertinggi atau menghapus duplikat.
  • Pertanyaan Berbasis Skenario: Soal wawancara mencakup running total, deteksi duplikat, analisis celah, dan lainnya.

 Bagi yang ingin meningkatkan pengetahuan dan keterampilan lebih lanjut, pertimbangkan menjelajahi kursus komprehensif kami tentang rekayasa data, teknologi cloud, dan AWS.

Sekilas Pertanyaan Wawancara SQL

  • Pertanyaan pemula mencakup dasar SQL: statement, query, join, subquery, dan perintah umum (DDL, DML, DCL, TCL)
  • Pertanyaan menengah menguji fungsi, pengindeksan, normalisasi, view, dan perbedaan antara DELETE/TRUNCATE/DROP
  • Pertanyaan berbasis skenario menilai pemecahan masalah dunia nyata: mencari duplikat, menghitung running total, menangani nilai NULL, dan menggunakan window function
  • Topik kunci untuk dikuasai: CTE (Common Table Expressions), window function (ROW_NUMBER, RANK, DENSE_RANK), properti ACID, dan optimasi query
  • Tips latihan: Fokus menjelaskan proses berpikir Anda, bukan hanya menulis sintaks yang benar

Sepanjang artikel ini, kita akan mengeksplorasi berbagai pertanyaan dan jawaban wawancara SQL untuk praktisi tingkat pemula dan menengah. Jika Anda mencari ringkasan, kami telah mengompilasi beberapa kiat utama di bawah ini:

Untuk pemula

  1. Pertanyaan umum. Harapkan pertanyaan tentang pengalaman Anda, dialek SQL yang Anda kuasai, dan tingkat kemahiran Anda.
  2. Pertanyaan teknis. Ini akan mencakup dasar-dasar SQL, seperti apa itu SQL, penerapannya, statement SQL, perintah SQL, dan jenis-jenis query SQL, dan lain-lain.

Untuk praktisi menengah

  1. Fungsi dalam SQL. Anda harus mengetahui fungsi agregat dan skalar, serta fungsi bawaan dan fungsi buatan pengguna.

  2. Perintah lanjutan. Pertanyaan dapat mencakup topik seperti join, primary dan foreign key, indeks, dan relasi SQL.

  3. Desain basis data. Harapkan pertanyaan tentang normalisasi, denormalisasi, dan perbedaan antara berbagai statement SQL seperti DELETE, TRUNCATE, dan DROP.

  4. Query lanjutan. Anda mungkin ditanya tentang subquery, baik nested maupun correlated, serta cara melakukan tugas tertentu seperti mencari nilai ke-n tertinggi dalam sebuah kolom.

Pertanyaan Umum Wawancara SQL

Sebelum menanyakan pertanyaan teknis, pewawancara Anda mungkin mengajukan beberapa pertanyaan umum tentang pengalaman Anda secara keseluruhan dengan SQL.\

Jangan khawatir jika pengalaman Anda dalam SQL terbatas: ini kemungkinan besar sudah diketahui pewawancara dari resume Anda. Karena mereka tertarik untuk berbicara dengan Anda, profil Anda dianggap cocok untuk perusahaan mereka. Selain itu, tidak masalah jika Anda hanya bekerja dengan satu dialek SQL. Ingat bahwa semua dialek SQL cukup mirip. Oleh karena itu, terbiasa dengan satu dialek saja merupakan dasar yang solid bagi Anda untuk mempelajari yang lain.

1. Apa itu SQL?

Singkatan dari Structured Query Language, yaitu bahasa pemrograman yang digunakan untuk berinteraksi dengan sistem manajemen basis data relasional (RDBMS). Ini mencakup pengambilan, pembaruan, penyisipan, dan penghapusan data dari tabel.

2. Apa itu dialek SQL? Berikan beberapa contohnya.

Berbagai versi SQL, baik gratis maupun berbayar, juga disebut dialek SQL. Semua dialek SQL memiliki sintaks yang sangat mirip dan hanya berbeda sedikit pada fungsionalitas tambahan. Beberapa contohnya adalah Microsoft SQL Server, PostgreSQL, MySQL, SQLite, T-SQL, dan Oracle.

3. Apa aplikasi utama SQL?

Menggunakan SQL, kita dapat:

  • membuat, menghapus, dan memperbarui tabel dalam basis data
  • mengakses, memanipulasi, dan memodifikasi data dalam tabel
  • mengambil dan merangkum informasi yang diperlukan dari satu atau beberapa tabel
  • menambah atau menghapus baris atau kolom tertentu dari sebuah tabel

Pertanyaan Wawancara SQL untuk Pemula 

Pewawancara Anda mungkin memulai dengan pertanyaan yang lebih mudah:

4. Apa itu statement SQL?

Juga dikenal sebagai perintah SQL. Ini adalah rangkaian karakter yang ditafsirkan oleh mesin SQL sebagai perintah yang sah dan dijalankan sesuai perintah tersebut. Beberapa contoh statement SQL adalah SELECT, CREATE, DELETE, DROP, REVOKE, dan seterusnya.

5. Apa itu query SQL?

Query adalah potongan kode yang ditulis dalam SQL untuk mengakses atau memodifikasi data dari sebuah basis data.

Ada dua jenis query SQL: query untuk pengambilan data dan modifikasi data. Yang pertama digunakan untuk mengambil data yang diperlukan (termasuk pembatasan, pengelompokan, pengurutan data, mengekstrak data dari beberapa tabel, dll.), sedangkan yang kedua digunakan untuk membuat, menambah, menghapus, memperbarui, dan mengganti nama data.

6. Apa itu subquery SQL?

Juga disebut inner query, yaitu query yang ditempatkan di dalam query lain, atau outer query. Subquery dapat muncul pada klausa seperti SELECT, FROM, WHERE, UPDATE, dll. Subquery di dalam subquery juga dimungkinkan. Subquery terdalam dijalankan terlebih dahulu, dan hasilnya diteruskan ke query yang memuatnya (atau subquery).

7. Apa itu join SQL?

Sebuah klausa yang digunakan untuk menggabungkan dan mengambil record dari dua atau beberapa tabel. Tabel SQL dapat di-join berdasarkan relasi antara kolom pada tabel-tabel tersebut. Lihat SQL joins tutorial kami untuk konteks lebih lanjut, serta panduan khusus kami untuk pertanyaan wawancara SQL joins

8. Apa itu komentar SQL?

Klarifikasi yang mudah dibaca manusia tentang apa yang dilakukan potongan kode tertentu. Komentar kode SQL dapat berupa satu baris (diawali dengan double dash --) atau beberapa baris (seperti: /*comment_text*/). Saat mesin SQL berjalan, komentar kode diabaikan. Tujuan menambahkan komentar kode SQL adalah agar kode lebih mudah dipahami bagi orang yang akan membacanya di masa mendatang.

9. Apa itu alias SQL?

Nama sementara yang diberikan ke sebuah tabel (atau kolom dalam tabel) saat mengeksekusi query SQL tertentu. Alias digunakan untuk meningkatkan keterbacaan kode dan membuat kode lebih ringkas. Alias diperkenalkan dengan kata kunci AS:

SELECT col_1 AS column
FROM table_name;

Pertanyaan Wawancara SQL Teknis

Sekarang, mari beralih ke pertanyaan wawancara SQL teknis dan beberapa kemungkinan jawabannya.

Saat menjawab pertanyaan teknis, strategi terbaik adalah memberikan jawaban yang sejelas mungkin. Jawaban yang bertele-tele dapat terlihat seperti upaya mengalihkan topik utama dan dapat memicu pertanyaan tambahan yang mungkin kurang Anda kuasai.

Secara keseluruhan, SQL memungkinkan melakukan query ke basis data dengan berbagai cara. Selain itu, SQL mudah diintegrasikan dengan bahasa pemrograman lain seperti Python atau R, sehingga kita dapat memanfaatkan kekuatan gabungan keduanya.

10. Jenis perintah SQL apa yang Anda ketahui?

  • Data Definition Language (DDL) – untuk mendefinisikan dan memodifikasi struktur basis data.
  • Data Manipulation Language (DML) – untuk mengakses, memanipulasi, dan memodifikasi data dalam basis data.
  • Data Control Language (DCL) – untuk mengontrol akses pengguna ke data dalam basis data dan memberikan atau mencabut hak istimewa kepada pengguna tertentu atau sekelompok pengguna.
  • Transaction Control Language (TCL) – untuk mengontrol transaksi dalam basis data.
  • Data Query Language (DQL) – untuk melakukan query pada data dalam basis data guna mengambil informasi yang diperlukan darinya.

11. Berikan beberapa contoh perintah SQL umum.

  • DDL: CREATE, ALTER TABLE, DROP, TRUNCATE, dan ADD COLUMN

  • DML: UPDATE, DELETE, dan INSERT

  • DCL: GRANT dan REVOKE

  • TCL: COMMIT, SET TRANSACTION, ROLLBACK, dan SAVEPOINT

  • DQL:SELECT

12. Apa itu DBMS, dan jenis DBMS apa yang Anda ketahui?

Singkatan dari Database Management System, sebuah paket perangkat lunak yang digunakan untuk melakukan berbagai operasi pada data yang disimpan dalam basis data, seperti mengakses, memperbarui, merapikan, menyisipkan, dan menghapus data. Ada berbagai jenis DBMS, seperti relasional, hierarkis, jaringan, graf, atau berorientasi objek. Jenis-jenis ini didasarkan pada cara data diorganisasi, distrukturkan, dan disimpan dalam sistem.

13. Apa itu RDBMS? Berikan beberapa contohnya.

Singkatan dari Relational Database Management System. Ini adalah jenis DBMS yang paling umum digunakan untuk bekerja dengan data yang disimpan dalam beberapa tabel yang saling terkait melalui shared key. Bahasa pemrograman SQL dirancang untuk berinteraksi dengan RDBMS. Beberapa contoh RDBMS adalah MySQL, PostgreSQL, Oracle, MariaDB, dll.

14. Apa itu tabel dan field dalam SQL?

Tabel adalah kumpulan data terkait yang terorganisasi dalam bentuk tabular, yaitu dalam baris dan kolom. Field adalah istilah lain untuk kolom dalam sebuah tabel.

15. Jenis subquery SQL apa yang Anda ketahui?

  • Single-row – mengembalikan paling banyak satu baris.
  • Multi-row – mengembalikan setidaknya dua baris.
  • Multi-column – mengembalikan setidaknya dua kolom.
  • Correlated – subquery yang terkait dengan informasi dari outer query.
  • Nested – subquery di dalam subquery lain.

16. Apa itu constraint, dan mengapa menggunakannya?

Sekumpulan kondisi yang mendefinisikan jenis data yang dapat dimasukkan ke setiap kolom tabel. Constraint memastikan integritas data dalam tabel dan memblokir tindakan yang tidak diinginkan.

17. Constraint SQL apa yang Anda ketahui?

  • DEFAULT – memberikan nilai default untuk sebuah kolom.

  • UNIQUE – hanya mengizinkan nilai unik.

  • NOT NULL – hanya mengizinkan nilai non-null.

  • PRIMARY KEY – hanya mengizinkan nilai unik dan benar-benar non-null (NOT NULL dan UNIQUE).

  • FOREIGN KEY – menyediakan kunci bersama antara dua atau lebih tabel.

18. Jenis join apa yang Anda ketahui?

  • (INNER) JOIN – hanya mengembalikan record yang memenuhi kondisi join yang ditentukan di kedua (atau semua) tabel. Ini adalah join SQL default.

  • LEFT (OUTER) JOIN – mengembalikan semua record dari tabel kiri dan record dari tabel kanan yang memenuhi kondisi join yang ditentukan.

  • RIGHT (OUTER) JOIN – mengembalikan semua record dari tabel kanan dan record dari tabel kiri yang memenuhi kondisi join yang ditentukan.

  • FULL (OUTER) JOIN – mengembalikan semua record dari kedua (atau semua) tabel. Dapat dianggap sebagai gabungan antara left dan right join.

Catatan: FULL OUTER JOIN didukung oleh PostgreSQL, SQL Server, Oracle, dan MySQL 8.0 ke atas, namun MySQL hanya mengizinkannya melalui pola UNION; sementara itu, SQLite tidak mendukung RIGHT JOIN, yang dapat diemulasi menggunakan LEFT JOIN dikombinasikan dengan UNION.

19. Apa itu primary key dalam SQL?

Kolom (atau beberapa kolom) dari sebuah tabel yang dikenai constraint PRIMARY KEY untuk memastikan nilai unik dan non-null pada kolom tersebut. Dengan kata lain, primary key adalah kombinasi dari constraint NOT NULL dan UNIQUE. Primary key mengidentifikasi setiap record dalam tabel secara unik. Setiap tabel dapat mendefinisikan paling banyak satu PRIMARY KEY (yang dapat berupa komposit). PRIMARY KEY sangat direkomendasikan namun tidak mutlak diwajibkan oleh semua mesin.

20. Apa itu unique key dalam SQL?

Kolom (atau beberapa kolom) dari sebuah tabel yang dikenai constraint UNIQUE untuk memastikan nilai unik pada kolom tersebut, termasuk satu nilai NULL (hanya satu).

Catatan

  • SQL Server: Hanya satu NULL yang diizinkan kecuali Anda menggunakan filtered index.
  • PostgreSQL / Oracle / MySQL: Beberapa NULL diizinkan karena NULL <> NULL.

21. Apa itu foreign key dalam SQL? 

Kolom (atau beberapa kolom) dari sebuah tabel yang dikenai constraint FOREIGN KEY (atau kunci UNIQUE) untuk menautkan kolom ini ke primary key di tabel lain (atau beberapa tabel). Tujuan foreign key adalah menjaga keterhubungan berbagai tabel dalam sebuah basis data.

22. Apa itu indeks SQL?

Struktur data khusus yang terkait dengan sebuah tabel basis data dan digunakan untuk menyimpan bagian-bagian pentingnya serta memungkinkan pencarian dan pengambilan data lebih cepat. Indeks sangat efektif untuk basis data besar, di mana indeks secara signifikan meningkatkan kinerja query.

23. Jenis indeks apa yang Anda ketahui?

  • Unique index – tidak mengizinkan duplikat dalam kolom tabel dan karenanya membantu menjaga integritas data.
  • Clustered index – menentukan urutan fisik record dalam tabel basis data dan melakukan pencarian data berdasarkan nilai kunci. Satu tabel hanya dapat memiliki satu clustered index.
  • Non-clustered index – mempertahankan urutan record tabel yang tidak sesuai dengan urutan fisik data sebenarnya di disk. Artinya data disimpan di satu tempat dan non-clustered index di tempat lain. Satu tabel dapat memiliki banyak non-clustered index.

24. Apa itu skema?

Kumpulan elemen struktural basis data seperti tabel, stored procedure, indeks, fungsi, dan trigger. Skema menunjukkan arsitektur keseluruhan basis data, menentukan relasi antar objek dalam basis data, dan mendefinisikan hak akses yang berbeda untuk masing-masing. Baca panduan skema basis data kami untuk pemahaman lebih mendalam.

25. Apa itu operator SQL?

Karakter cadangan, kombinasi karakter, atau kata kunci yang digunakan dalam query SQL untuk melakukan operasi tertentu. Operator SQL umum digunakan dengan klausa WHERE untuk menetapkan satu atau beberapa kondisi guna memfilter data.

26. Jenis operator SQL apa yang Anda ketahui?

  • Aritmetika (+, -, *, /, dll.)

  • Perbandingan (>, <, =, >=, dll.)

  • Majemuk (+=, -=, *=, /=, dll.)

  • Logika (AND, OR, NOT, BETWEEN, dll.)

  • String (%, _, +, ^, dll.)

  • Himpunan (UNION, UNION ALL, INTERSECT, dan MINUS (atau EXCEPT))

27. Apa itu klausa?

Kondisi yang dikenakan pada sebuah query SQL untuk memfilter data guna memperoleh hasil yang diinginkan. Beberapa contohnya adalah WHERE, LIMIT, HAVING, LIKE, AND, OR, ORDER BY, dll.

28. Statement apa yang umum digunakan bersama query SELECT?

Yang paling umum adalah FROM, GROUP BY, JOIN, WHERE, ORDER BY, LIMIT, dan HAVING.

29. Bagaimana cara membuat tabel dalam SQL?

Menggunakan statement CREATE TABLE. Misalnya, untuk membuat tabel dengan tiga kolom bertipe data yang telah ditentukan, kita menggunakan sintaks berikut:

CREATE TABLE table_name (col_1 datatype,
                         col_2 datatype,
                         col_3 datatype);

30. Bagaimana cara memperbarui tabel?

Menggunakan statement UPDATE. Sintaksnya:

UPDATE table_name
SET col_1 = value_1, col_2 = value_2
WHERE condition;

31. Bagaimana cara menghapus tabel dari basis data?

Menggunakan statement DROP TABLE. Sintaksnya: DROP TABLE table_name;.

32. Bagaimana cara mendapatkan jumlah record dalam sebuah tabel?

Menggunakan fungsi agregat COUNT() dengan tanda bintang sebagai argumennya: SELECT COUNT(*) FROM table_name;.

33. Bagaimana cara mengurutkan record dalam sebuah tabel?

Menggunakan statement ORDER BY:

SELECT * FROM table_name
ORDER BY col_1;

Kita dapat menentukan urutan menurun menggunakan kata kunci DESC; jika tidak, urutannya naik secara default. Kita juga dapat mengurutkan berdasarkan lebih dari satu kolom dan menentukan untuk masing-masing kolom, urutan naik atau turun secara terpisah. Misalnya:

SELECT * FROM table_name
ORDER BY col_1 DESC, col_3, col_6 DESC;

34. Bagaimana cara memilih semua kolom dari sebuah tabel?

Menggunakan tanda bintang * dengan statement SELECT. Sintaksnya: SELECT * FROM table_name;.

35. Bagaimana cara memilih record yang sama dari dua tabel?

Menggunakan statement INTERSECT:

SELECT col1, col2 FROM table_1
INTERSECT
SELECT col1, col2 FROM table_2;

Catatan: INTERSECT mengharuskan jumlah kolom sama dan tipe yang kompatibel.

36. Apa itu statement DISTINCT, dan bagaimana menggunakannya?

Statement ini digunakan dengan SELECT untuk menyaring duplikat dan hanya mengembalikan nilai unik dari sebuah kolom tabel. Sintaksnya:

SELECT DISTINCT col_1
FROM table_name;

37. Apa itu relasi? Berikan beberapa contoh.

Relasi adalah koneksi dan korelasi antar entitas, yang pada dasarnya berarti bagaimana dua atau lebih tabel dalam basis data saling terkait. Misalnya, kita dapat menemukan ID klien yang sama pada tabel data penjualan dan pada tabel pelanggan.

38. Apa itu nilai NULL? Bagaimana bedanya dengan nol atau spasi kosong?

Nilai NULL menunjukkan ketiadaan data untuk sel tertentu dari sebuah tabel. Sebaliknya, nol adalah nilai numerik yang valid, dan string kosong adalah string sah dengan panjang nol.

39. Apa perbedaan antara SQL dan NoSQL?

Basis data SQL bersifat relasional, terstruktur, dan menggunakan tabel dengan skema yang telah ditentukan, sedangkan basis data NoSQL tidak relasional, tanpa skema, dan dirancang untuk menangani data tidak terstruktur atau semi-terstruktur.

40. Tantangan umum apa yang muncul saat bekerja dengan basis data SQL?

Tantangannya termasuk penalaan kinerja untuk dataset besar, mengelola strategi pengindeksan, memastikan integritas data dengan constraint, menangani transaksi bersamaan, dan mengoptimalkan eksekusi query.

Pertanyaan Wawancara SQL Tingkat Menengah

41. Apa itu Common Table Expression (CTE)?

Common Table Expression (CTE) adalah hasil sementara bernama yang dapat Anda rujuk dalam statement SELECT, INSERT, UPDATE, atau DELETE. CTE meningkatkan keterbacaan query dan memungkinkan Anda memecah query kompleks menjadi bagian yang lebih sederhana dan dapat digunakan kembali. Sintaksnya menggunakan kata kunci WITH:

WITH sales_summary AS (
  SELECT product_id, SUM(amount) AS total_sales
  FROM sales
  GROUP BY product_id
)
SELECT p.product_name, s.total_sales
FROM products p
JOIN sales_summary s ON p.id = s.product_id
WHERE s.total_sales > 10000;

CTE sangat berguna untuk query rekursif (data hierarkis seperti bagan organisasi) dan saat Anda perlu merujuk subquery yang sama beberapa kali.

42. Apa itu window function, dan bagaimana bedanya dengan fungsi agregat?

Window function melakukan perhitungan di atas sekumpulan baris yang terkait dengan baris saat ini, tanpa menggabungkan hasil menjadi satu baris seperti fungsi agregat. Mereka menggunakan klausa OVER() untuk mendefinisikan window baris.

Window function kunci meliputi:

  • ROW_NUMBER() – memberi nomor urut unik pada setiap baris
  • RANK() – memberi peringkat dengan celah untuk nilai seri yang sama
  • DENSE_RANK() – memberi peringkat tanpa celah untuk nilai seri yang sama
  • LAG() / LEAD() – mengakses data dari baris sebelumnya/berikutnya
  • SUM() OVER(), AVG() OVER() – perhitungan berjalan atau kumulatif

Contoh: Menghitung running total penjualan

SELECT 
  order_date,
  amount,
  SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;

43. Apa perbedaan antara RANK(), DENSE_RANK(), dan ROW_NUMBER()?

Ketiganya adalah window function peringkat, tetapi menangani seri yang sama secara berbeda:

  • ROW_NUMBER() – selalu memberikan nomor urut unik (1, 2, 3, 4...), bahkan untuk nilai seri yang sama
  • RANK() – memberikan peringkat yang sama untuk nilai seri yang sama, lalu melompati angka (1, 2, 2, 4...)
  • DENSE_RANK() – memberikan peringkat yang sama untuk nilai seri yang sama, tanpa melompati (1, 2, 2, 3...)
SELECT 
  name, 
  score,
  ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num,
  RANK() OVER (ORDER BY score DESC) AS rank,
  DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
FROM students;

Gunakan DENSE_RANK() ketika mencari nilai "ke-n tertinggi" di mana nilai seri yang sama harus berbagi posisi yang sama.

Di bagian ini, kita melihat pertanyaan dan jawaban SQL tingkat menengah yang paling populer agar Anda tahu apa yang diharapkan dari pewawancara.

44. Apa itu fungsi dalam SQL?

Objek basis data yang merepresentasikan sekumpulan statement SQL yang sering digunakan untuk tugas tertentu. Fungsi menerima beberapa parameter masukan, melakukan perhitungan atau manipulasi lain terhadapnya, dan mengembalikan hasil. Fungsi membantu meningkatkan keterbacaan kode dan menghindari pengulangan potongan kode yang sama.

45. Jenis fungsi SQL apa yang Anda ketahui?

  • Fungsi agregat – bekerja pada banyak record, biasanya yang dikelompokkan untuk kolom yang disediakan dari sebuah tabel, dan mengembalikan satu nilai (biasanya per grup).
  • Fungsi skalar – bekerja pada setiap nilai individual dan mengembalikan satu nilai.

Di sisi lain, fungsi SQL dapat berupa bawaan (didefinisikan oleh sistem) atau buatan pengguna (dibuat oleh pengguna untuk kebutuhan spesifik mereka).

46. Fungsi agregat SQL apa yang Anda ketahui?

  • AVG() – mengembalikan nilai rata-rata

  • SUM() – mengembalikan jumlah nilai

  • MIN() – mengembalikan nilai minimum

  • MAX() – mengembalikan nilai maksimum

  • COUNT() – mengembalikan jumlah baris, termasuk yang bernilai null

47. Fungsi skalar SQL apa yang Anda ketahui?

  • LEN() (dalam dialek SQL lain – LENGTH()) – mengembalikan panjang string, termasuk spasi kosong

  • UCASE() (dalam dialek SQL lain – UPPER()) – mengembalikan string yang diubah menjadi huruf besar

  • LCASE() (dalam dialek SQL lain – LOWER()) – mengembalikan string yang diubah menjadi huruf kecil

  • INITCAP() – mengembalikan string yang diubah menjadi title case (yaitu setiap kata dalam string diawali huruf kapital)

  • MID() (dalam dialek SQL lain – SUBSTR()) – mengekstrak substring dari sebuah string

  • ROUND() – mengembalikan nilai numerik yang dibulatkan ke jumlah desimal tertentu

  • NOW() – mengembalikan tanggal dan waktu saat ini

48. Apa itu fungsi manipulasi huruf besar-kecil dalam SQL?

Fungsi manipulasi huruf besar-kecil merupakan subset dari fungsi karakter, dan digunakan untuk mengubah huruf pada data teks. Dengan fungsi ini, kita dapat mengonversi data ke huruf besar, huruf kecil, atau title case.

  • UCASE() (dalam dialek SQL lain – UPPER()) – mengembalikan string yang diubah menjadi huruf besar

  • LCASE() (dalam dialek SQL lain – LOWER()) – mengembalikan string yang diubah menjadi huruf kecil

  • INITCAP() – mengembalikan string yang diubah menjadi title case (yaitu setiap kata dalam string diawali huruf kapital)

49. Apa itu fungsi manipulasi karakter dalam SQL?

Fungsi manipulasi karakter merupakan subset dari fungsi karakter, dan digunakan untuk memodifikasi data teks.

  • CONCAT() – menggabungkan dua atau lebih nilai string dengan menambahkan string kedua ke akhir string pertama

  • SUBSTRING()/SUBSTR() – mengembalikan bagian dari string yang memenuhi titik awal dan akhir yang disediakan

  • LENGTH() (dalam dialek SQL lain – LEN()) – mengembalikan panjang string, termasuk spasi kosong

  • REPLACE() – mengganti semua kemunculan substring yang didefinisikan dalam sebuah string dengan substring lain

  • INSTR() – mengembalikan posisi numerik dari substring yang didefinisikan dalam sebuah string

  • LPAD() dan RPAD() – mengembalikan padding karakter sisi kiri/kanan untuk nilai rata kanan/rata kiri

  • TRIM() – menghapus semua karakter yang ditentukan, serta spasi, dari sisi kiri, kanan, atau kedua sisi sebuah string

50. Apa perbedaan antara variabel lokal dan global?

Variabel lokal hanya dapat diakses di dalam fungsi tempat ia dideklarasikan. Sebaliknya, variabel global, yang dideklarasikan di luar fungsi apa pun, disimpan dalam struktur memori tetap dan dapat digunakan di seluruh program.

51. Apa perbedaan antara SQL dan PL/SQL?

SQL adalah bahasa standar untuk melakukan query dan mengelola basis data relasional, terutama digunakan untuk manipulasi dan pengambilan data. PL/SQL (Procedural Language/SQL) adalah ekstensi SQL yang digunakan di basis data Oracle yang mencakup konstruksi pemrograman prosedural seperti loop, kondisi, dan penanganan pengecualian, sehingga memungkinkan logika bisnis kompleks diimplementasikan dalam basis data. Kami memiliki artikel lain tentang 20 Pertanyaan dan Jawaban Wawancara PL/SQL Teratas, yang bagus untuk ditinjau jika Anda tahu akan ditanya tentang pengetahuan Oracle Anda. 

52. Apa perbedaan antara LEFT JOIN dan LEFT OUTER JOIN?

Tidak ada perbedaan antara LEFT JOIN dan LEFT OUTER JOIN. Keduanya dapat dipertukarkan. SQL memungkinkan kata kunci OUTER bersifat opsional, jadi LEFT JOIN hanyalah singkatan dari LEFT OUTER JOIN. Keduanya mengembalikan semua record dari tabel kiri dan record yang cocok dari tabel kanan.

53. Apa itu pengindeksan dalam SQL, dan bagaimana meningkatkan kinerja?

Pengindeksan membuat struktur data khusus yang mempercepat pengambilan data dengan memungkinkan basis data menemukan baris lebih efisien. Ini bekerja seperti tabel lookup yang dioptimalkan, mengurangi kebutuhan pemindaian tabel penuh. Namun, pengindeksan yang berlebihan dapat memperlambat operasi insert, update, dan delete karena kebutuhan pemeliharaan indeks.

54. Apa itu stored procedure, dan bagaimana perbedaannya dengan fungsi?

Stored procedure adalah sekumpulan statement SQL yang telah dikompilasi sebelumnya dan dieksekusi sebagai satu kesatuan untuk melakukan suatu tugas. Prosedur dapat memodifikasi data atau objek skema, mengelola transaksi, dan mengembalikan nol atau lebih set hasil. Fungsi, di sisi lain, biasanya digunakan dalam ekspresi SQL, harus mengembalikan nilai (skalar atau bernilai tabel), dan di banyak basis data dibatasi dari efek samping. Perilaku pasti berbeda menurut DB (misalnya, T-SQL memiliki fungsi skalar dan bernilai tabel; PostgreSQL membedakan antara fungsi dan prosedur).

55. Apa pengurutan data default dengan statement ORDER BY, dan bagaimana mengubahnya?

Default-nya adalah menaik (NULLS FIRST/LAST berbeda-beda menurut DB). Gunakan kata kunci ASC/DESC per kolom sebagai berikut:

SELECT * FROM table_name 
ORDER BY col_1 DESC;

56. Apa itu operator himpunan SQL?

  • UNION – mengembalikan record yang diperoleh oleh setidaknya salah satu dari dua query (mengabaikan duplikat)

  • UNION ALL – mengembalikan record yang diperoleh oleh setidaknya salah satu dari dua query (termasuk duplikat)

  • INTERSECT – mengembalikan record yang diperoleh oleh kedua query

  • EXCEPT (disebut MINUS di MySQL dan Oracle) – hanya mengembalikan record yang diperoleh oleh query pertama tetapi bukan yang kedua

57. Operator apa yang digunakan dalam query untuk pencocokan pola?

Operator LIKE dikombinasikan dengan wildcard % dan _. Wildcard % merepresentasikan sejumlah karakter apa pun termasuk nol, sedangkan _ – tepat satu karakter.

58. Apa perbedaan antara primary key dan unique key dalam SQL?

Meskipun kedua jenis kunci memastikan nilai unik pada kolom tabel, yang pertama mengidentifikasi setiap record tabel secara unik, dan yang kedua mencegah duplikasi pada kolom tersebut.

59. Apa itu composite primary key dalam SQL?

Primary key dari sebuah tabel yang didasarkan pada beberapa kolom.

60. Urutan tipikal klausa SQL dalam statement SELECT?

SELECTFROMJOINONWHEREGROUP BYHAVINGORDER BYLIMIT

61. Dalam urutan apa interpreter mengeksekusi statement umum pada query SELECT?

Berikut adalah urutan eksekusi SQL

FROMONJOINWHEREGROUP BYHAVINGSELECTORDER BYLIMIT/OFFSET (FETCH)

62. Apa itu view dalam SQL?

Tabel virtual yang berisi subset data yang diambil dari satu atau lebih tabel basis data (atau view lainnya). View standar tidak menyimpan data; materialized view menyimpan data. View dapat menyederhanakan query, mengenkapsulasi logika, dan, dikombinasikan dengan hak akses, membatasi kolom/baris. View dapat menggabungkan/mengagregasi data dari beberapa tabel.

63. Bisakah kita membuat view berdasarkan view lain dalam SQL?

Bisa. Ini juga dikenal sebagai nested views. Namun, kita sebaiknya menghindari menumpuk banyak view karena kode menjadi sulit dibaca dan di-debug.

64. Bisakah kita tetap menggunakan view jika tabel asli dihapus?

Tidak. View apa pun yang didasarkan pada tabel tersebut akan menjadi tidak valid setelah tabel dasar dihapus. Jika kita tetap mencoba menggunakan view tersebut, kita akan menerima pesan kesalahan.

65. Jenis relasi SQL apa yang Anda ketahui?

  • One-to-one – setiap record dalam satu tabel berkorespondensi dengan hanya satu record dalam tabel lain
  • One-to-many – setiap record dalam satu tabel berkorespondensi dengan beberapa record dalam tabel lain
  • Many-to-many – setiap record dalam kedua tabel berkorespondensi dengan beberapa record dalam tabel lain

66. Nilai apa yang mungkin untuk field data BOOLEAN?

Dalam beberapa dialek SQL, seperti PostgreSQL, tipe data BOOLEAN ada secara eksplisit dan bernilai TRUE, FALSE, atau NULL. Dalam dialek lain, seperti Microsoft SQL Server, tipe data BIT digunakan untuk menyimpan nilai Boolean sebagai bilangan bulat 1 (true) atau 0 (false).

67. Apa itu normalisasi dalam SQL?

Normalisasi adalah proses desain basis data yang mencakup pengorganisasian dan restrukturisasi data untuk mengurangi redundansi, ketergantungan, duplikasi, dan inkonsistensi data. Hal ini mengarah pada peningkatan integritas data, lebih banyak tabel dalam basis data, akses data dan kontrol keamanan yang lebih efisien, serta fleksibilitas query yang lebih besar.

68. Apa itu denormalisasi dalam SQL?

Denormalisasi adalah proses kebalikan dari normalisasi: memperkenalkan redundansi data dan menggabungkan data dari beberapa tabel. Denormalisasi mengoptimalkan kinerja infrastruktur basis data dalam situasi saat operasi baca lebih penting daripada operasi tulis karena membantu menghindari join kompleks dan mengurangi waktu eksekusi query.

69. Apa perbedaan antara mengganti nama kolom dan memberi alias padanya?

Mengganti nama kolom berarti mengubah nama aktualnya secara permanen dalam tabel asli. Memberi alias pada kolom berarti memberinya nama sementara saat mengeksekusi query SQL, dengan tujuan membuat kode lebih mudah dibaca dan ringkas.

70. Apa perbedaan antara subquery nested dan correlated?

Subquery berkorelasi adalah inner query yang disarang dalam query yang lebih besar (outer) yang merujuk ke nilai dari outer query untuk eksekusinya, artinya subquery berkorelasi bergantung pada outer query-nya. Sebaliknya, subquery non-korelasi tidak bergantung pada data dari outer query dan dapat dijalankan secara independen.

71. Apa perbedaan antara clustered dan non-clustered index?

Clustered index menentukan urutan fisik record pada suatu tabel dan melakukan pencarian data berdasarkan nilai kunci, sedangkan non-clustered index mempertahankan urutan record yang tidak sesuai dengan urutan fisik data sebenarnya di disk. Satu tabel hanya dapat memiliki satu clustered index tetapi dapat memiliki banyak non-clustered index.

72. Apa itu fungsi CASE()?

Cara untuk mengimplementasikan logika if-then-else dalam SQL. Fungsi ini secara berurutan memeriksa kondisi yang disediakan pada klausa WHEN dan mengembalikan nilai dari klausa THEN yang sesuai saat kondisi pertama terpenuhi. Jika tidak ada kondisi yang terpenuhi, fungsi mengembalikan nilai dari klausa ELSE jika disediakan, jika tidak maka mengembalikan NULL. Sintaksnya:

CASE
    WHEN condition_1 THEN value_1
    WHEN condition_2 THEN value_2
    WHEN condition_3 THEN value_3
    ...
    ELSE value
END;

73. Apa perbedaan antara statement DELETE dan TRUNCATE?

DELETE adalah perintah DML (Data Manipulation Language) yang digunakan untuk menghapus satu atau beberapa baris dari sebuah tabel berdasarkan kondisi pada klausa WHERE. Ini dapat dibatalkan hanya jika dibungkus dalam transaksi (melalui ROLLBACK).

TRUNCATE adalah perintah DDL (Data Definition Language) yang menghapus semua baris dari sebuah tabel dengan mendealokasi halaman. Ini lebih cepat tetapi umumnya tidak dapat dibatalkan, dan tidak dapat digunakan pada tabel yang direferensikan oleh foreign key.

74. Apa perbedaan antara statement DROP dan TRUNCATE?

DROP menghapus sebuah tabel dari basis data sepenuhnya, termasuk struktur tabel dan semua constraint terkait, relasi dengan tabel lain, dan hak akses. TRUNCATE menghapus semua baris dari tabel tanpa memengaruhi struktur tabel dan constraint.  Keduanya DDL. DROP menghapus tabel dan metadatanya; TRUNCATE menghapus semua baris tetapi mempertahankan definisi tabel. Kinerja dan perilaku transaksional bergantung pada mesin DB.

75. Apa perbedaan antara statement HAVING dan WHERE?

Yang pertama bekerja pada data yang telah diagregasi setelah dikelompokkan, sedangkan yang kedua memeriksa setiap baris secara individual. Jika kedua statement ada dalam sebuah query, urutannya sebagai berikut: WHEREGROUP BYHAVING. Mesin SQL juga menafsirkannya dalam urutan yang sama.

76. Bagaimana cara menambahkan record ke sebuah tabel?

Menggunakan statement INSERT INTO dikombinasikan dengan VALUES. Sintaksnya:

INSERT INTO table_name
VALUES (value_1, value_2, ...);

77. Bagaimana cara menghapus record dari sebuah tabel?

Menggunakan statement DELETE. Sintaksnya:

DELETE FROM table_name
WHERE condition;

Dengan cara ini, kita juga dapat menghapus beberapa record jika memenuhi kondisi yang diberikan.

78. Bagaimana cara menambahkan kolom ke sebuah tabel?

Menggunakan statement ALTER TABLE dikombinasikan dengan ADD. Sintaksnya:

ALTER TABLE table_name
ADD column_name datatype;

79. Bagaimana cara mengganti nama kolom sebuah tabel?

Menggunakan statement ALTER TABLE dikombinasikan dengan RENAME COLUMN ... TO .... Sintaksnya:

ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name;

80. Bagaimana cara menghapus kolom dari sebuah tabel?

Menggunakan statement ALTER TABLE dikombinasikan dengan DROP COLUMN. Sintaksnya:

ALTER TABLE table_name
DROP COLUMN column_name;

81. Bagaimana cara memilih semua record genap atau ganjil dalam sebuah tabel?

Dengan memeriksa sisa pembagian dengan 2. Dalam beberapa versi SQL (misalnya, PostgreSQL dan MySQL), kita menggunakan fungsi MOD, dalam versi lain (Microsoft SQL Server dan SQLite) – operator modulo (%). Untuk memilih semua record genap menggunakan MOD:

SELECT * FROM table_name
WHERE MOD(ID_column, 2) = 0;

Untuk memilih semua record genap menggunakan %:

SELECT * FROM table_name 
WHERE ID_column % 2 = 0;

Untuk memilih semua record ganjil, sintaksnya identik pada kedua kasus, hanya saja kita menggunakan operator ketidaksamaan <> alih-alih =.

82. Bagaimana mencegah record duplikat saat membuat query?

Menggunakan statement DISTINCT bersama SELECT atau membuat unique key untuk tabel tersebut.

83. Bagaimana cara menyisipkan banyak baris ke dalam tabel?

Menggunakan statement INSERT INTO dikombinasikan dengan VALUES. Sintaksnya:

INSERT INTO table_name
VALUES (value_1, value_2, ...),
      (value_3, value_4, ...),
      (value_5, value_6, ...),
      ...;

84. Bagaimana cara menemukan nilai ke-n tertinggi dalam sebuah kolom tabel?

Menggunakan window function untuk menangani nilai seri yang sama dengan benar:

SELECT column_name
FROM (
  SELECT column_name, DENSE_RANK() OVER (ORDER BY column_name DESC) AS rnk
  FROM table_name
) t
WHERE rnk = :n;

Untuk baris ke-n berdasarkan urutan (mengabaikan seri yang sama): ORDER BY column_name DESC OFFSET n-1 ROWS FETCH NEXT 1 ROW ONLY.

85. Bagaimana cara menemukan nilai pada kolom teks tabel yang dimulai dengan huruf tertentu?

Menggunakan operator LIKE dikombinasikan dengan wildcard % dan _. Misalnya, kita perlu menemukan semua nama keluarga dalam sebuah tabel yang dimulai dengan "A". Query-nya:

SELECT * FROM table_name
WHERE surname LIKE 'A_';

Di sini, kita mengasumsikan bahwa nama keluarga harus berisi setidaknya dua huruf. Tanpa asumsi ini (artinya nama keluarga bisa hanya A), query-nya sebagai berikut:

SELECT * FROM table_name
WHERE surname LIKE 'A%';

86. Bagaimana cara menemukan id terakhir dalam sebuah tabel?

Cara termudah adalah menggunakan fungsi agregat MAX().

SELECT MAX(id) AS highest_id
FROM table_name;

Menggunakan ORDER BY dengan LIMIT atau TOP

SELECT id
FROM table_name
ORDER BY id DESC
LIMIT 1;

87. Bagaimana cara memilih baris acak dari sebuah tabel?

Menggunakan fungsi RAND() dikombinasikan dengan ORDER BY dan LIMIT. Dalam beberapa dialek SQL, seperti PostgreSQL, disebut RANDOM(). Misalnya, kode berikut akan mengembalikan lima baris acak dari sebuah tabel di MySQL:

SELECT * FROM table_name
ORDER BY RAND()
LIMIT 5;

Pertanyaan Wawancara SQL Berbasis Skenario

Pertanyaan berbasis skenario menguji kemampuan Anda menyelesaikan masalah bisnis dunia nyata dengan SQL. Pewawancara menggunakannya untuk menilai tidak hanya pengetahuan sintaks Anda, tetapi juga pendekatan pemecahan masalah dan kemampuan menangani kasus tepi seperti duplikat, nilai NULL, dan nilai seri yang sama.

88. Bagaimana cara menemukan dan menghapus record duplikat dari sebuah tabel?

Menemukan duplikat:

SELECT email, COUNT(*) AS duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

Menghapus duplikat (menyisakan satu record):

WITH duplicates AS (
  SELECT id, 
         ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
  FROM users
)
DELETE FROM users 
WHERE id IN (SELECT id FROM duplicates WHERE rn > 1);

Pendekatan ini menggunakan CTE dengan ROW_NUMBER() untuk mengidentifikasi duplikat, menyisakan record dengan ID terendah.

89. Bagaimana cara menghitung running total (jumlah kumulatif)?

Gunakan window function SUM() dengan klausa ORDER BY:

SELECT 
  transaction_date,
  amount,
  SUM(amount) OVER (ORDER BY transaction_date) AS running_total
FROM transactions;

Untuk running total per kategori (misalnya, per pelanggan):

SELECT 
  customer_id,
  transaction_date,
  amount,
  SUM(amount) OVER (
    PARTITION BY customer_id 
    ORDER BY transaction_date
  ) AS customer_running_total
FROM transactions;

90. Bagaimana cara menemukan karyawan yang berpenghasilan lebih tinggi dari rata-rata gaji di departemennya?

Ini adalah skenario subquery berkorelasi klasik:

SELECT e.name, e.department, e.salary
FROM employees e
WHERE e.salary > (
  SELECT AVG(salary) 
  FROM employees 
  WHERE department = e.department
);

Alternatifnya, menggunakan window function:

SELECT name, department, salary
FROM (
  SELECT 
    name, 
    department, 
    salary,
    AVG(salary) OVER (PARTITION BY department) AS dept_avg
  FROM employees
) t
WHERE salary > dept_avg;

91. Bagaimana cara menemukan celah dalam urutan angka (misalnya, nomor faktur yang hilang)?

Gunakan LEAD() untuk membandingkan setiap nilai dengan nilai berikutnya:

SELECT 
  invoice_number,
  LEAD(invoice_number) OVER (ORDER BY invoice_number) AS next_invoice,
  LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number - 1 AS gap_size
FROM invoices
WHERE LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number > 1;

Ini mengidentifikasi di mana selisih antara nomor faktur yang berurutan lebih dari 1.

92. Bagaimana cara menemukan pelanggan yang melakukan pembelian pada bulan-bulan berturut-turut?

Gunakan LAG() untuk membandingkan dengan baris sebelumnya:

WITH monthly_purchases AS (
  SELECT 
    customer_id,
    DATE_TRUNC('month', purchase_date) AS purchase_month,
    LAG(DATE_TRUNC('month', purchase_date)) OVER (
      PARTITION BY customer_id 
      ORDER BY DATE_TRUNC('month', purchase_date)
    ) AS prev_month
  FROM purchases
  GROUP BY customer_id, DATE_TRUNC('month', purchase_date)
)
SELECT DISTINCT customer_id
FROM monthly_purchases
WHERE purchase_month = prev_month + INTERVAL '1 month';

93. Bagaimana cara memutar data dari baris ke kolom?

Gunakan agregasi bersyarat dengan statement CASE:

SELECT 
  product_name,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 1 THEN amount ELSE 0 END) AS jan_sales,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 2 THEN amount ELSE 0 END) AS feb_sales,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 3 THEN amount ELSE 0 END) AS mar_sales
FROM sales
GROUP BY product_name;

Beberapa basis data (SQL Server, Oracle) memiliki sintaks PIVOT native untuk operasi ini.

94. Bagaimana cara menemukan 3 produk teratas berdasarkan penjualan di setiap kategori?

Gunakan DENSE_RANK() dengan PARTITION BY:

WITH ranked_products AS (
  SELECT 
    category,
    product_name,
    SUM(sales_amount) AS total_sales,
    DENSE_RANK() OVER (
      PARTITION BY category 
      ORDER BY SUM(sales_amount) DESC
    ) AS sales_rank
  FROM sales
  GROUP BY category, product_name
)
SELECT category, product_name, total_sales
FROM ranked_products
WHERE sales_rank <= 3
ORDER BY category, sales_rank;

95. Apa itu properti ACID dalam transaksi basis data?

ACID adalah akronim untuk empat properti kunci yang menjamin transaksi basis data yang andal:

  • Atomicity: Transaksi bersifat "semua atau tidak sama sekali" – semua operasi selesai dengan sukses, atau tidak ada yang dijalankan
  • Consistency: Transaksi membawa basis data dari satu keadaan valid ke keadaan valid lainnya, mempertahankan semua aturan dan constraint yang ditetapkan
  • Isolation: Transaksi yang berjalan bersamaan tidak saling mengganggu; setiap transaksi melihat snapshot data yang konsisten
  • Durability: Setelah transaksi di-commit, perubahan bertahan bahkan jika sistem mogok

Contoh transaksi:

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

COMMIT;

96. Apa itu deadlock, dan bagaimana cara mencegahnya?

Deadlock terjadi ketika dua atau lebih transaksi saling menunggu satu sama lain untuk melepaskan kunci, menciptakan ketergantungan melingkar sehingga tidak ada yang dapat berlanjut.

Contoh skenario: Transaksi A mengunci Tabel X dan menunggu Tabel Y, sementara Transaksi B mengunci Tabel Y dan menunggu Tabel X.

Strategi pencegahan:

  • Urutan penguncian yang konsisten: Selalu ambil kunci dalam urutan yang sama di semua transaksi
  • Perpendek transaksi: Lakukan commit atau rollback secepat mungkin
  • Gunakan tingkat isolasi yang sesuai: Tingkat isolasi yang lebih rendah mengurangi kontensi kunci
  • Akses hanya data yang diperlukan: Hindari mengunci baris yang tidak perlu
  • Tangani percobaan ulang deadlock: Sebagian besar basis data secara otomatis mendeteksi dan menyelesaikan deadlock dengan menggulirkan kembali satu transaksi

97. Bagaimana cara mengoptimalkan query SQL yang berjalan lambat?

Strategi optimasi kunci:

  • Tambahkan indeks yang sesuai: Buat indeks pada kolom yang digunakan dalam klausa WHERE, JOIN, dan ORDER BY
  • Analisis rencana eksekusi: Gunakan EXPLAIN (PostgreSQL/MySQL) atau EXPLAIN PLAN (Oracle) untuk mengidentifikasi hambatan
  • Hindari SELECT *: Ambil hanya kolom yang Anda butuhkan
  • Gunakan JOIN alih-alih subquery: JOIN sering lebih efisien daripada subquery berkorelasi
  • Batasi hasil: Gunakan LIMIT/TOP saat Anda tidak memerlukan semua baris
  • Hindari fungsi pada kolom terindeks: WHERE YEAR(date_col) = 2026 tidak dapat menggunakan indeks; gunakan WHERE date_col >= '2026-01-01' sebagai gantinya
  • Pertimbangkan partisi: Untuk tabel yang sangat besar, lakukan partisi berdasarkan tanggal atau kategori

98. Bagaimana cara menangani nilai NULL dalam perhitungan dan perbandingan?

NULL merepresentasikan data yang hilang atau tidak diketahui dan memerlukan penanganan khusus:

  • Perbandingan: Gunakan IS NULL atau IS NOT NULL alih-alih = NULL
  • COALESCE(): Mengembalikan nilai non-NULL pertama: COALESCE(column, 'default')
  • NULLIF(): Mengembalikan NULL jika dua nilai sama: NULLIF(a, b)
  • ISNULL() / NVL(): Fungsi spesifik basis data untuk mengganti nilai NULL
SELECT 
  name,
  COALESCE(phone, email, 'No contact') AS contact_info,
  CASE WHEN status IS NULL THEN 'Unknown' ELSE status END AS status
FROM customers;

99. Bagaimana cara menemukan rentetan terpanjang hari login berturut-turut untuk seorang pengguna?

Ini adalah masalah lanjutan "islands and gaps":

WITH login_groups AS (
  SELECT 
    user_id,
    login_date,
    login_date - ROW_NUMBER() OVER (
      PARTITION BY user_id 
      ORDER BY login_date
    ) * INTERVAL '1 day' AS group_id
  FROM user_logins
)
SELECT 
  user_id,
  MIN(login_date) AS streak_start,
  MAX(login_date) AS streak_end,
  COUNT(*) AS streak_length
FROM login_groups
GROUP BY user_id, group_id
ORDER BY streak_length DESC
LIMIT 1;

Triknya adalah mengurangkan nomor baris dari setiap tanggal – tanggal berturut-turut akan menghasilkan "group_id" yang sama.

Meningkatkan Keterampilan Tim Anda dengan SQL

Sementara persiapan wawancara SQL penting bagi pencari kerja dan manajer perekrutan, sama pentingnya bagi bisnis untuk berinvestasi dalam pelatihan SQL berkelanjutan bagi timnya. Kemampuan bekerja dengan data kini lebih penting dari sebelumnya, sehingga memastikan karyawan Anda memiliki keterampilan SQL yang kuat dapat menjadi pembeda bagi keberhasilan perusahaan Anda.

Jika Anda pemimpin tim atau pemilik bisnis yang ingin memastikan seluruh tim Anda mahir dalam SQL, DataCamp for Business menawarkan program pelatihan yang disesuaikan untuk membantu karyawan Anda menguasai keterampilan SQL, dari dasar hingga konsep lanjutan. Kami dapat menyediakan:

  • Jalur pembelajaran terarah: Dapat disesuaikan dengan tingkat keterampilan saat ini dan kebutuhan bisnis tim Anda.
  • Latihan praktis: Skenario dan latihan dunia nyata yang memperkuat pembelajaran dan meningkatkan retensi.
  • Pelacakan kemajuan: Alat untuk memantau dan menilai kemajuan tim Anda, memastikan mereka mencapai tujuan pembelajaran.

Berinvestasi dalam peningkatan keterampilan SQL melalui platform seperti DataCamp tidak hanya meningkatkan kemampuan tim Anda, tetapi juga memberikan keunggulan strategis bagi bisnis Anda, memungkinkan Anda tetap kompetitif dan memberikan hasil. Bicaralah dengan tim kami dan minta demo hari ini

Kesimpulan

Sebagai rangkuman, kami membahas 99 pertanyaan wawancara SQL tingkat pemula, menengah, dan berbasis skenario yang esensial beserta jawabannya. Semoga informasi ini membantu Anda bersiap untuk wawancara dan merasa lebih percaya diri, baik Anda mencari pekerjaan di bidang SQL atau merekrut kandidat untuk posisi SQL tingkat menengah.

Jika Anda merasa perlu lebih banyak latihan untuk mempersiapkan wawancara dengan lebih baik, pertimbangkan kursus dan track SQL DataCamp berikut:

FAQs

Bagaimana saya bisa mulai belajar SQL?

Untuk mulai belajar SQL, mulailah dengan konsep dasar basis data dan sistem manajemen basis data relasional. DataCamp memiliki banyak sumber daya untuk membantu Anda memulai, seperti kursus Introduction to SQL, Data Analyst in SQL Career Track dan lembar contekan SQL. Atau kunjungi halaman kursus SQL untuk menelusuri semua sumber daya.

Di mana saya dapat menemukan masalah SQL dunia nyata untuk berlatih?

Di platform DataCamp terdapat banyak proyek SQL untuk mengasah keterampilan Anda, cocok untuk semua tingkat.

Apa saja pertanyaan wawancara SQL umum untuk pemula?

Pemula sering diminta menjelaskan konsep dasar SQL, seperti perbedaan antara statement SELECT dan INSERT, tujuan kunci dalam basis data (primary key dan foreign key), dan query sederhana untuk mengambil data dari satu tabel menggunakan kondisi (klausa WHERE).

Apa saja pertanyaan wawancara SQL umum untuk praktisi menengah?

Praktisi tingkat menengah mungkin menghadapi pertanyaan tentang konsep SQL yang lebih kompleks seperti join (INNER, LEFT, RIGHT, FULL), subquery, agregasi dan pengelompokan data (GROUP BY), serta penggunaan operasi himpunan seperti UNION, INTERSECT, dan EXCEPT. Mereka juga dapat diminta menyelesaikan masalah yang melibatkan pengoptimalan query untuk kinerja.

Bagaimana saya harus mempersiapkan wawancara SQL?

Persiapan untuk wawancara SQL harus mencakup:

  • Meninjau dasar-dasar SQL dan konsep lanjutan.
  • Berlatih menulis query untuk menyelesaikan masalah umum.
  • Memahami desain basis data dan normalisasi.
  • Mengenal dialek SQL spesifik yang digunakan pemberi kerja (misalnya, PostgreSQL, MySQL, SQL Server).
  • Menyelesaikan contoh pertanyaan dan masalah wawancara yang tersedia online.

Apa yang harus saya harapkan dalam wawancara SQL teknis dan bagaimana cara terbaik menunjukkan keterampilan saya?

Dalam wawancara SQL teknis, Anda dapat mengharapkan pertanyaan yang menguji pengetahuan Anda tentang sintaks SQL, desain basis data, optimasi query, dan kemampuan pemecahan masalah menggunakan SQL. Untuk menunjukkan keterampilan Anda:

  • Latih cara menjelaskan proses berpikir Anda saat menyelesaikan masalah SQL.
  • Bersiaplah menulis query SQL bebas kesalahan di papan tulis atau lingkungan pengkodean online.
  • Tunjukkan pemahaman Anda tentang konsep kompleks seperti join, subquery, dan transaksi melalui contoh.
  • Diskusikan pengalaman dunia nyata Anda bekerja dengan basis data, soroti tantangan yang telah Anda atasi atau pengoptimalan yang telah Anda terapkan.

Seberapa penting mempelajari dialek SQL tertentu, dan mana yang harus saya fokuskan?

Walaupun sintaks inti SQL konsisten di berbagai RDBMS, setiap sistem (seperti MySQL, PostgreSQL, SQL Server, Oracle) memiliki dialeknya sendiri dengan fitur dan fungsi unik. Mempelajari dialek SQL tertentu penting jika Anda menargetkan peran yang menggunakan RDBMS tertentu. Fokuslah pada dialek yang paling relevan dengan tujuan karier Anda atau yang paling umum digunakan di industri Anda. Namun, memiliki dasar yang kuat dalam SQL standar memudahkan Anda untuk beradaptasi dengan berbagai dialek sesuai kebutuhan.

Apakah DataCamp memiliki sumber GRATIS tambahan untuk mempersiapkan wawancara SQL?

Ya! Jika Anda saat ini adalah dosen atau mahasiswa universitas, Anda dapat menggunakan DataCamp Classrooms untuk mendapatkan seluruh katalog premium kami secara GRATIS. Ini termasuk track dan sertifikasi SQL kami.

Anda juga dapat melihat SQL Basics cheat sheet gratis kami.

Topik SQL paling penting apa yang harus dipelajari untuk wawancara pada 2026?

Fokus pada area utama ini: (1) Join dan subquery – pahami INNER, LEFT, RIGHT, dan FULL join, serta subquery berkorelasi vs non-korelasi; (2) Window function – ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, dan running total; (3) CTE (Common Table Expressions) – untuk query yang mudah dibaca dan dikelola; (4) Agregasi dan GROUP BY – termasuk penggunaan klausa HAVING; (5) Optimasi query – strategi pengindeksan dan rencana eksekusi.

Apa perbedaan antara ROW_NUMBER, RANK, dan DENSE_RANK?

Ketiganya adalah window function peringkat, tetapi menangani nilai seri yang sama secara berbeda: ROW_NUMBER() memberikan nomor urut unik bahkan untuk nilai seri yang sama (1, 2, 3, 4); RANK() memberikan peringkat yang sama untuk nilai seri yang sama tetapi melewati angka berikutnya (1, 2, 2, 4); DENSE_RANK() memberikan peringkat yang sama untuk nilai seri yang sama tanpa melewati (1, 2, 2, 3). Gunakan DENSE_RANK saat mencari "nilai ke-n tertinggi" di mana nilai seri yang sama harus berbagi posisi yang sama.


Elena Kosourova's photo
Author
Elena Kosourova
LinkedIn

IBM Certified Data Scientist (2020), sebelumnya Ahli Geologi/Geomodeler Perminyakan untuk ladang minyak dan gas di seluruh dunia dengan pengalaman kerja internasional lebih dari 12 tahun. Mahir dalam Python, R, dan SQL. Bidang keahlian: pembersihan data, manipulasi data, visualisasi data, analisis data, pemodelan data, statistik, storytelling, machine learning. Berpengalaman luas dalam mengelola komunitas data science serta menulis/meninjau artikel dan tutorial tentang data science dan topik karier.

Topik

Pelajari lebih lanjut tentang SQL dengan kursus-kursus ini!

Kursus

Manipulasi Data di SQL

4 Hr
317K
Kuasai kueri SQL yang kompleks yang diperlukan untuk menjawab berbagai pertanyaan ilmu data dan menyiapkan set data yang kuat untuk analisis di PostgreSQL.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

12 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat Lebih BanyakLihat Lebih Banyak