~/VibeHandbook
PDF Gratis

Bahasa

iso.org

SQL

Apa itu ini

(Structured Query Language / Bahasa Kueri Terstruktur) adalah bahasa standar untuk melakukan kueri dan memanipulasi relasional seperti PostgreSQL, MySQL, SQLite, dan SQL Server. Bayangkan memesan makanan di restoran: Anda mengatakan apa yang Anda inginkan di piring, bukan bagaimana cara memasaknya. SQL bekerja dengan cara yang sama. Anda menjelaskan hasil yang Anda inginkan, dan mesin database yang mencari cara paling efisien untuk mengambilnya. Ini disebut bersifat deklaratif.

Kelebihan

  • Deklaratif: nyatakan apa yang Anda inginkan, bukan cara melakukan perulangan (loop) pada baris data.
  • Sudah terbukti selama puluhan tahun, dengan mesin yang matang dan jaminan konsistensi yang kuat.
  • Operasi berbasis himpunan (join, agregat, window function) ringkas dan cepat.
  • Dapat dipindahkan — SQL inti berfungsi di sebagian besar database relasional.

Kompromi (trade-off)

  • Dialek berbeda-beda (Postgres vs. MySQL vs. SQLite), jadi portabilitasnya tidak total.
  • Mudah menulis kueri yang lambat; performa tergantung pada index dan rencana eksekusi kueri (query plan).
  • Bukan bahasa serbaguna (general-purpose) — alur kontrol dan logika terasa canggung.
  • Perubahan skema (migrasi) perlu kehati-hatian di lingkungan produksi.

Kapan menggunakannya

Gunakan SQL kapan pun data Anda bersifat relasional dan dikueri berdasarkan struktur: pelaporan, analitik, aplikasi, dan sistem apa pun di mana integritas data serta join itu penting. Ini adalah alat yang tepat untuk agregasi dan pertanyaan ad-hoc atas data terstruktur, dan cocok dipasangkan dengan hampir semua bahasa backend.

Kecocokan dengan vibe coding

Asisten AI sangat andal dalam SQL dan dapat menerjemahkan pertanyaan berbahasa Inggris biasa (plain-English) menjadi kueri dengan hasil yang mengejutkan baiknya, tetapi mereka mungkin menebak-nebak skema Anda. Arahkan AI dengan menempelkan definisi tabel sebenarnya (pernyataan CREATE TABLE) dan menyebutkan nama database spesifik Anda (Postgres, SQLite, dll.) agar AI menggunakan dialek dan fungsi yang benar. Minta AI menjelaskan kueri tersebut dan menyarankan index untuk kueri yang lambat. Selalu minta AI membuat input pengguna diparameterisasi, bukan menempelkan nilainya langsung ke dalam teks kueri. Bayangkan sebuah kolom formulir tempat seseorang mengetik bukan sebuah nama, melainkan sebuah perintah; jika Anda menempelkan teks itu langsung ke dalam kueri Anda, database mungkin akan menjalankannya. Memisahkan input pengguna mencegah hal ini — sebuah serangan yang disebut SQL injection. Verifikasi kueri yang dihasilkan pada sampel kecil sebelum menjalankannya di lingkungan produksi.

SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.active = true
GROUP BY u.name
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC;