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 30 Apr 2026  · 15 mnt baca

Baik Anda pencari kerja yang mencari kesempatan baru untuk menerapkan keterampilan SQL Anda atau manajer perekrutan yang akan mewawancarai kandidat untuk lowongan di perusahaan, 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 diri, belajar, dan merekrut secara efektif, termasuk:

  • Pengetahuan dasar: Definisi jelas tentang RDBMS, key, dan dialek SQL.
  • Penguasaan teknis: Pembahasan mendalam tentang DDL vs. DML, constraint, dan pengindeksan.
  • Logika kueri: Penjelasan tentang Join, Subquery, dan Fungsi Agregat.
  • Penerapan praktis: Solusi pengodean dunia nyata, seperti menemukan nilai ke-n tertinggi atau menghapus duplikasi.
  • Pertanyaan berbasis skenario: Masalah ala wawancara yang mencakup running total, deteksi duplikat, analisis celah, dan lainnya.

 Bagi yang ingin meningkatkan pengetahuan dan keterampilan lebih jauh, pertimbangkan untuk menjelajahi kursus komprehensif kami di bidang rekayasa data, teknologi cloud, dan AWS.

Sekilas Pertanyaan Wawancara SQL

Wawancara SQL cenderung mencerminkan cara orang benar-benar mempelajari bahasanya.

Di awal, fokusnya pada kosakata dan tata bahasa, seperti mengetahui apa itu join, bagaimana SELECT bekerja, dan perbedaan antara DDL dan DML.

Seiring makin familiar, fokus bergeser dari "bisakah Anda menulis kueri" menjadi "bisakah Anda menulis kueri yang tepat." Anda mulai memahami kapan indeks membantu, mengapa normalisasi penting, dan bagaimana perintah yang tampak mirip seperti DELETE dan TRUNCATE berperilaku di balik layar.

Pada level senior, sintaks diasumsikan sudah dikuasai, dan ujian sebenarnya adalah pemecahan masalah: menangani duplikat, NULL, tie, dan logika peringkat dengan window function dan CTE, serta menalar tentang transaksi, konkurensi, dan performa. 

Untuk praktisi tingkat menengah

  1. Fungsi dalam SQL. Anda perlu mengetahui fungsi agregat dan skalar, serta fungsi bawaan dan 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 pernyataan SQL seperti DELETE, TRUNCATE, dan DROP.

  4. Kueri lanjutan. Anda mungkin ditanya tentang subquery, baik bertingkat maupun berkorelasi, serta bagaimana melakukan tugas spesifik seperti menemukan nilai ke-n tertinggi dalam sebuah kolom.

Pertanyaan Wawancara SQL Umum

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

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

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 contoh.

Berbagai versi SQL, baik gratis maupun berbayar, juga disebut dialek SQL. Semua dialek SQL memiliki sintaks yang sangat mirip dan hanya berbeda secara tidak signifikan 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 tabel

Pertanyaan Wawancara SQL untuk Pemula 

Pewawancara Anda mungkin memulai dengan pertanyaan yang lebih mudah:

4. Apa itu pernyataan SQL?

Juga dikenal sebagai perintah SQL. Ini adalah rangkaian karakter yang ditafsirkan oleh mesin SQL sebagai perintah yang sah dan dieksekusi sesuai dengan itu. Beberapa contoh pernyataan SQL adalah SELECT, CREATE, DELETE, DROP, REVOKE, dan seterusnya.

5. Apa itu kueri SQL?

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

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

6. Apa itu subquery SQL?

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

7. Apa itu join SQL?

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

8. Apa itu komentar SQL?

Penjelasan yang bisa dibaca manusia tentang apa yang dilakukan sepotong kode tertentu. Komentar kode SQL dapat berupa satu baris (diawali dengan dua tanda minus --) atau mencakup beberapa baris (sebagai berikut: /*comment_text*/). Saat mesin SQL berjalan, ia mengabaikan komentar kode. Tujuan menambahkan komentar kode SQL adalah membuat kode lebih mudah dipahami bagi orang yang akan membacanya di masa depan.

9. Apa itu alias SQL?

Nama sementara yang diberikan pada tabel (atau kolom dalam tabel) saat menjalankan kueri 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 sepresisi mungkin. Jika tidak, itu dapat terlihat seperti upaya menyimpang dari topik utama dan bisa memicu pertanyaan tambahan yang mungkin kurang Anda kuasai.

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

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 grup pengguna.
  • Transaction Control Language (TCL) – untuk mengontrol transaksi dalam basis data.
  • Data Query Language (DQL) – untuk melakukan kueri pada data dalam basis data guna memperoleh informasi yang diperlukan.

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, paket perangkat lunak yang digunakan untuk melakukan berbagai operasi pada data yang disimpan dalam basis data, seperti mengakses, memperbarui, membersihkan, 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 contoh RDBMS.

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 berelasi melalui key bersama. 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 sekumpulan data terkait yang terorganisasi dan disimpan dalam bentuk tabular, yaitu dalam baris dan kolom. Field adalah istilah lain untuk kolom pada 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 kueri luar.
  • Nested – subquery di dalam subquery lain.

16. Apa itu constraint, dan mengapa menggunakannya?

Sekumpulan kondisi yang mendefinisikan jenis data yang dapat diinput 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 yang unik dan benar-benar non-null (NOT NULL dan UNIQUE).

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

18. Jenis join apa yang Anda ketahui?

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

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

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

  • FULL (OUTER) JOIN – mengembalikan semua rekaman dari kedua (atau semua) tabel. Dapat dianggap sebagai kombinasi dari 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 tabel yang dikenai constraint PRIMARY KEY untuk memastikan nilai unik dan non-null dalam kolom tersebut. Dengan kata lain, primary key adalah kombinasi dari constraint NOT NULL dan UNIQUE. Primary key mengidentifikasi secara unik setiap rekaman tabel.

Konsep terkait — Surrogate key: Surrogate key adalah pengenal yang dibuat secara artifisial (biasanya bilangan bulat berurutan atau UUID) yang ditetapkan untuk setiap rekaman, terlepas dari nilai data aktual. Tidak seperti natural key (misalnya alamat email), surrogate key tetap stabil ketika data bisnis berubah, menjadikannya pilihan populer untuk primary key dalam basis data produksi.

 Setiap tabel dapat mendefinisikan paling banyak satu PRIMARY KEY (yang bisa komposit). PRIMARY KEY sangat direkomendasikan namun tidak secara ketat diwajibkan oleh semua engine.

20. Apa itu unique key dalam SQL?

Kolom (atau beberapa kolom) dari tabel yang dikenai constraint UNIQUE untuk memastikan nilai unik dalam kolom tersebut, termasuk kemungkinan 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 tabel yang dikenai constraint FOREIGN KEY (atau key 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 tabel basis data dan digunakan untuk menyimpan bagian pentingnya serta memungkinkan pencarian dan pengambilan data lebih cepat. Indeks sangat efisien untuk basis data besar, di mana indeks secara signifikan meningkatkan performa kueri.

23. Jenis indeks apa yang Anda ketahui?

  • Unique index – tidak mengizinkan duplikasi dalam kolom tabel dan karenanya membantu menjaga integritas data.
  • Clustered index – mendefinisikan urutan fisik rekaman tabel basis data dan melakukan pencarian data berdasarkan nilai key. Satu tabel hanya dapat memiliki satu clustered index.
  • Non-clustered index – mempertahankan urutan rekaman tabel yang tidak sesuai dengan urutan fisik data aktual 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. Ini menunjukkan arsitektur keseluruhan basis data, menentukan relasi antar berbagai objek dalam basis data, dan mendefinisikan berbagai izin akses untuknya. Baca panduan skema basis data kami untuk pemahaman yang lebih mendalam.

25. Apa itu operator SQL?

Karakter yang dicadangkan, kombinasi karakter, atau kata kunci yang digunakan dalam kueri SQL untuk melakukan operasi tertentu. Operator SQL biasanya 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.)

  • Gabungan (+=, -=, *=, /=, 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 kueri SQL untuk memfilter data guna memperoleh hasil yang diinginkan. Beberapa contohnya adalah WHERE, LIMIT, HAVING, LIKE, AND, OR, ORDER BY, dll.

28. Pernyataan apa yang umum digunakan dengan kueri SELECT?

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

29. Bagaimana cara membuat tabel dalam SQL?

Menggunakan pernyataanCREATE 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 pernyataan 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 pernyataan DROP TABLE. Sintaksnya: DROP TABLE table_name;.

32. Bagaimana cara mendapatkan jumlah rekaman dalam tabel?

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

33. Bagaimana cara mengurutkan rekaman dalam tabel?

Menggunakan pernyataan ORDER BY:

SELECT * FROM table_name
ORDER BY col_1;

Kita dapat menentukan bahwa kita memerlukan urutan menurun menggunakan kata kunci DESC; jika tidak, urutan akan menaik secara default. Kita juga dapat mengurutkan berdasarkan lebih dari satu kolom dan menentukan untuk masing-masing, apakah urutan menaik atau menurun secara terpisah. Contoh:

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

34. Bagaimana cara memilih semua kolom dari tabel?

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

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

Menggunakan pernyataan INTERSECT:

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

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

36. Apa itu pernyataan DISTINCT, dan bagaimana cara menggunakannya?

Pernyataan ini digunakan dengan pernyataan SELECT untuk menyaring duplikasi dan hanya mengembalikan nilai unik dari kolom tabel. Sintaksnya:

SELECT DISTINCT col_1
FROM table_name;

37. Apa itu relasi? Berikan beberapa contoh.

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

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

Nilai NULL menunjukkan tidak adanya data untuk sel tertentu dalam tabel. Sebaliknya, nol adalah nilai numerik yang valid, dan string kosong adalah string legal 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 saat bekerja dengan basis data SQL?

Tantangan mencakup penyetelan performa untuk set data besar, mengelola strategi pengindeksan, memastikan integritas data dengan constraint, menangani transaksi konkuren, dan mengoptimalkan eksekusi kueri.

Pertanyaan Wawancara SQL Tingkat Menengah

41. Apa itu Common Table Expression (CTE)?

Common Table Expression (CTE) adalah himpunan hasil bernama sementara yang dapat Anda referensikan dalam pernyataan SELECT, INSERT, UPDATE, atau DELETE. CTE meningkatkan keterbacaan kueri dan memungkinkan Anda memecah kueri kompleks menjadi bagian-bagian yang lebih sederhana dan dapat digunakan kembali. Sintaks 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 kueri rekursif (data hierarkis seperti bagan organisasi) dan saat Anda perlu mereferensikan subquery yang sama beberapa kali.

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

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

Window function kunci meliputi:

  • ROW_NUMBER() – menetapkan nomor urut unik ke setiap baris
  • RANK() – menetapkan peringkat dengan celah untuk tie
  • DENSE_RANK() – menetapkan peringkat tanpa celah untuk tie
  • LAG() / LEAD() – mengakses data dari baris sebelumnya/berikutnya
  • SUM() OVER(), AVG() OVER() – perhitungan berjalan atau kumulatif

Contoh: Hitung total penjualan berjalan

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 tie secara berbeda:

  • ROW_NUMBER() – selalu menetapkan nomor urut unik (1, 2, 3, 4...), bahkan untuk tie
  • RANK() – memberikan peringkat yang sama untuk tie, lalu melompati angka (1, 2, 2, 4...)
  • DENSE_RANK() – memberikan peringkat yang sama untuk tie, 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() saat mencari nilai "ke-n tertinggi" di mana tie harus berbagi posisi yang sama.

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

44. Apa itu fungsi dalam SQL?

Objek basis data yang merepresentasikan sekumpulan pernyataan SQL yang sering digunakan untuk tugas tertentu. Fungsi menerima beberapa parameter input, melakukan perhitungan atau manipulasi lain pada parameter tersebut, dan mengembalikan hasilnya. Fungsi membantu meningkatkan keterbacaan kode dan menghindari pengulangan potongan kode yang sama.

45. Jenis fungsi SQL apa yang Anda ketahui?

  • Fungsi agregat – bekerja pada beberapa rekaman, biasanya yang dikelompokkan untuk kolom yang disediakan dari 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

  • 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 huruf kapital judul (setiap kata dimulai dengan 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 kapitalisasi data teks. Dengan fungsi ini, kita dapat mengonversi data ke huruf besar, kecil, atau kapital judul.

  • 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 kapital judul (setiap kata dimulai 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 string yang memenuhi titik mulai dan akhir yang diberikan

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

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

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

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

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

50. Apa perbedaan antara variabel lokal dan global?

Variabel lokal hanya dapat diakses di dalam fungsi tempat variabel tersebut 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 kueri 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, memungkinkan logika bisnis yang kompleks diimplementasikan di 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 mengizinkan kata kunci OUTER menjadi opsional, sehingga LEFT JOIN hanyalah singkatan dari LEFT OUTER JOIN. Keduanya mengembalikan semua rekaman dari tabel kiri dan rekaman yang cocok dari tabel kanan.

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

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

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

Stored procedure adalah sekumpulan pernyataan SQL yang sudah 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 himpunan 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 pernyataan ORDER BY, dan bagaimana mengubahnya?

Default-nya menaik (NULLS FIRST/LAST bervariasi 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 rekaman yang diperoleh oleh setidaknya satu dari dua kueri (tidak termasuk duplikat)

  • UNION ALL – mengembalikan rekaman yang diperoleh oleh setidaknya satu dari dua kueri (termasuk duplikat)

  • INTERSECT – mengembalikan rekaman yang diperoleh oleh kedua kueri

  • EXCEPT (disebut MINUS di MySQL dan Oracle) – hanya mengembalikan rekaman yang diperoleh oleh kueri pertama namun tidak oleh kueri kedua

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

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

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

Meskipun keduanya memastikan nilai unik dalam kolom tabel, yang pertama mengidentifikasi secara unik setiap rekaman tabel, sedangkan yang kedua mencegah duplikasi dalam kolom tersebut.

59. Apa itu composite primary key SQL?

Primary key dari tabel yang didasarkan pada beberapa kolom.

60. Urutan tipikal klausa SQL dalam pernyataan SELECT apa?

SELECTFROMJOINONWHEREGROUP BYHAVINGORDER BYLIMIT

61. Dalam urutan apa interpreter mengeksekusi pernyataan umum dalam kueri 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 lain). View standar tidak menyimpan data; materialized view menyimpan data. View dapat menyederhanakan kueri, mengenkapsulasi logika, dan, dikombinasikan dengan privilege, membatasi kolom/baris. View dapat melakukan join/mengagregasi data dari beberapa tabel.

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

Ya. 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. Setiap view yang didasarkan pada tabel tersebut akan menjadi tidak valid setelah tabel dasar dihapus. Jika kita tetap mencoba menggunakan view seperti itu, kita akan menerima pesan kesalahan.

65. Jenis relasi SQL apa yang Anda ketahui?

  • Satu-ke-satu – setiap rekaman di satu tabel berkorespondensi dengan hanya satu rekaman di tabel lain
  • Satu-ke-banyak – setiap rekaman di satu tabel berkorespondensi dengan beberapa rekaman di tabel lain
  • Banyak-ke-banyak – setiap rekaman di kedua tabel berkorespondensi dengan beberapa rekaman di tabel lain

66. Nilai apa yang mungkin untuk field data BOOLEAN?

Dalam beberapa dialek SQL, seperti PostgreSQL, tipe data BOOLEAN ada secara eksplisit dan mengambil nilai 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 penataan ulang data untuk mengurangi redundansi, ketergantungan, duplikasi, dan inkonsistensi data. Ini menghasilkan peningkatan integritas data, lebih banyak tabel dalam basis data, akses data dan kontrol keamanan yang lebih efisien, serta fleksibilitas kueri 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 performa infrastruktur basis data ketika operasi baca lebih penting daripada operasi tulis, karena membantu menghindari join yang kompleks dan mengurangi waktu eksekusi kueri.

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

Mengganti nama kolom berarti mengubah secara permanen nama aslinya dalam tabel. Memberikan alias pada kolom berarti memberinya nama sementara saat menjalankan kueri SQL, dengan tujuan membuat kode lebih mudah dibaca dan ringkas.

70. Apa perbedaan antara subquery bertingkat (nested) dan berkorelasi?

Subquery berkorelasi adalah kueri dalam yang disarang dalam kueri lebih besar (luar) yang merujuk nilai dari kueri luar untuk eksekusinya, artinya subquery berkorelasi bergantung pada kueri luarnya. Sebaliknya, subquery non-korelasi tidak bergantung pada data dari kueri luar dan dapat dijalankan secara mandiri.

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

Sementara clustered index mendefinisikan urutan fisik rekaman pada tabel dan melakukan pencarian data berdasarkan nilai key, non-clustered index mempertahankan urutan rekaman yang tidak cocok dengan urutan fisik data aktual di disk. Satu tabel hanya dapat memiliki satu clustered index tetapi banyak non-clustered index.

72. Apa itu fungsi CASE()?

Cara untuk mengimplementasikan logika if-then-else dalam SQL. Fungsi ini memeriksa secara berurutan kondisi yang diberikan dalam klausa WHEN dan mengembalikan nilai dari klausa THEN yang sesuai ketika kondisi pertama terpenuhi. Jika tidak ada kondisi yang terpenuhi, fungsi akan mengembalikan nilai dari klausa ELSE jika disediakan, jika tidak, 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 pernyataan DELETE dan TRUNCATE?

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

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

74. Apa perbedaan antara pernyataan DROP dan TRUNCATE?

DROP menghapus 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 dan constraint tabel.  Keduanya adalah DDL. DROP menghapus tabel beserta metadata-nya; TRUNCATE menghapus semua baris tetapi mempertahankan definisi tabel. Performa dan perilaku transaksional bergantung pada engine DB.

75. Apa perbedaan antara pernyataan HAVING dan WHERE?

Yang pertama bekerja pada data yang telah diagregasi setelah dikelompokkan, sementara yang kedua memeriksa setiap baris secara individual. Jika keduanya ada dalam kueri, urutannya adalah:WHEREGROUP BYHAVING. Mesin SQL juga menafsirkannya dalam urutan yang sama.

76. Bagaimana Anda menambahkan sebuah rekaman ke tabel?

Menggunakan pernyataan INSERT INTO dikombinasikan dengan VALUES. Sintaksnya:

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

77. Bagaimana Anda menghapus sebuah rekaman dari tabel?

Menggunakan pernyataan DELETE. Sintaksnya:

DELETE FROM table_name
WHERE condition;

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

78. Bagaimana Anda menambahkan kolom ke tabel?

Menggunakan pernyataan ALTER TABLE dikombinasikan dengan ADD. Sintaksnya:

ALTER TABLE table_name
ADD column_name datatype;

79. Bagaimana Anda mengganti nama kolom tabel?

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

ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name;

80. Bagaimana Anda menghapus kolom dari tabel?

Menggunakan pernyataan ALTER TABLE dikombinasikan dengan DROP COLUMN. Sintaksnya:

ALTER TABLE table_name
DROP COLUMN column_name;

81. Bagaimana Anda memilih semua rekaman genap atau ganjil dalam tabel?

Dengan memeriksa sisa hasil 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 rekaman genap menggunakan MOD:

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

Untuk memilih semua rekaman genap menggunakan %:

SELECT * FROM table_name 
WHERE ID_column % 2 = 0;

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

82. Bagaimana cara mencegah rekaman duplikat saat membuat kueri?

Menggunakan pernyataan DISTINCT dikombinasikan dengan SELECT atau membuat unique key untuk tabel tersebut.

83. Bagaimana Anda menyisipkan banyak baris ke dalam tabel?

Menggunakan pernyataan 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 Anda menemukan nilai ke-n tertinggi dalam kolom tabel?

Menggunakan window function untuk menangani tie 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 tie): ORDER BY column_name DESC OFFSET n-1 ROWS FETCH NEXT 1 ROW ONLY.

85. Bagaimana Anda menemukan nilai dalam kolom teks yang dimulai dengan huruf tertentu?

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

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), kuerinya sebagai berikut:

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

86. Bagaimana Anda menemukan id terakhir dalam tabel?

Metode 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, ini disebut RANDOM(). Misalnya, kode berikut akan mengembalikan lima baris acak dari tabel di MySQL:

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

Pertanyaan Wawancara SQL Berbasis Skenario

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

88. Bagaimana Anda menemukan dan menghapus rekaman duplikat dari tabel?

Menemukan duplikat:

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

Menghapus duplikat (menyisakan satu rekaman):

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 rekaman dengan ID terendah.

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

Gunakan fungsi SUM() sebagai window function 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 Anda menemukan karyawan yang memperoleh gaji lebih tinggi daripada rata-rata 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
);

Alternatif, 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 Anda 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 celah antara nomor faktur berurutan lebih besar dari 1.

92. Bagaimana Anda 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 Anda memutar data dari baris menjadi kolom?

Gunakan agregasi kondisional dengan pernyataan 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 bawaan untuk operasi ini.

94. Bagaimana Anda 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 berhasil, atau tidak ada yang dieksekusi
  • Consistency: Transaksi membawa basis data dari satu keadaan valid ke keadaan valid lainnya, mempertahankan semua aturan dan constraint yang didefinisikan
  • Isolation: Transaksi yang berjalan bersamaan tidak saling mengganggu; setiap transaksi melihat snapshot data yang konsisten
  • Durability: Setelah transaksi di-commit, perubahan akan tetap ada bahkan jika sistem mengalami crash

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 lock, 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 peroleh lock dalam urutan yang sama di semua transaksi
  • Jaga transaksi tetap singkat: Commit atau rollback secepat mungkin
  • Gunakan tingkat isolasi yang sesuai: Tingkat isolasi lebih rendah mengurangi kontensi lock
  • 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 membatalkan satu transaksi

97. Bagaimana Anda mengoptimalkan kueri SQL yang 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 kali lebih efisien daripada subquery berkorelasi

  • Batasi himpunan hasil: Gunakan LIMIT/TOP saat Anda tidak membutuhkan 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 Anda 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 pertama yang bukan NULL: 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 Anda menemukan rentetan (streak) terpanjang hari login berurutan untuk seorang pengguna?

Ini adalah masalah lanjutan "pulau dan celah":

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 berurutan 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 tim mereka. Kemampuan bekerja dengan data menjadi lebih penting dari sebelumnya, sehingga memastikan karyawan Anda memiliki keterampilan SQL yang kuat dapat menjadi pembeda bagi kesuksesan 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 tim Anda saat ini dan kebutuhan bisnis.
  • 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 kapabilitas tim Anda tetapi juga memberikan keuntungan 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 penting tingkat pemula, menengah, dan berbasis skenario beserta jawaban yang tepat. Semoga informasi ini membantu Anda bersiap untuk wawancara dan merasa lebih percaya diri, baik Anda sedang mencari pekerjaan di bidang SQL atau merekrut kandidat untuk posisi SQL tingkat menengah.

Jika Anda merasa perlu lebih banyak latihan untuk lebih siap menghadapi wawancara, pertimbangkan untuk menelusuri daftar lengkap kursus SQL kami:

FAQs

Bagaimana saya bisa mulai belajar SQL?

Untuk mulai belajar SQL, mulailah dengan dasar-dasar konsep 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 bisa 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 pernyataan SELECT dan INSERT, tujuan key dalam basis data (primary key dan foreign key), dan kueri sederhana untuk mengambil data dari satu tabel menggunakan kondisi (klausa WHERE).

Apa saja pertanyaan wawancara SQL umum untuk praktisi tingkat 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 kueri untuk performa.

Bagaimana saya harus mempersiapkan wawancara SQL?

Persiapan untuk wawancara SQL harus mencakup:

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

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

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

  • Latih menjelaskan proses berpikir Anda saat menyelesaikan masalah SQL.
  • Bersiaplah untuk menulis kueri SQL bebas kesalahan di papan tulis atau lingkungan pengodean 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 Anda atasi atau optimasi yang Anda lakukan.

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

Sementara 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 membidik 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 akan memudahkan Anda beradaptasi dengan berbagai dialek sesuai kebutuhan.

Apakah DataCamp memiliki sumber daya GRATIS tambahan untuk mempersiapkan wawancara SQL?

Ya! Jika Anda saat ini seorang dosen atau mahasiswa, 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 tahun 2026?

Fokus pada area kunci 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 kueri yang mudah dibaca dan dikelola; (4) Agregasi dan GROUP BY – termasuk penggunaan klausa HAVING; (5) Optimasi kueri – strategi pengindeksan dan rencana eksekusi.

Apa perbedaan antara ROW_NUMBER, RANK, dan DENSE_RANK?

Ketiganya adalah window function peringkat, tetapi menangani tie secara berbeda: ROW_NUMBER() menetapkan nomor urut unik bahkan untuk tie (1, 2, 3, 4); RANK() memberikan peringkat yang sama untuk tie tetapi melewati angka berikutnya (1, 2, 2, 4); DENSE_RANK() memberikan peringkat yang sama untuk tie tanpa melewati (1, 2, 2, 3). Gunakan DENSE_RANK saat mencari nilai "ke-n tertinggi" di mana tie 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
323.6K
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

14 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