Format SQL

Perindah dan format kueri SQL. Beberapa dialek. Gratis, selamanya.
Dialek SQL
SQL Masukan
SQL yang Diformat
SQL Masukan

Pribadi dan aman

Semuanya terjadi di browser Anda. File Anda tidak pernah menyentuh server kami.

Sangat cepat

Tanpa mengunggah, tanpa menunggu. Konversi saat Anda meletakkan file.

Benar-benar gratis

Tidak perlu akun. Tidak ada biaya tersembunyi. Tidak ada trik ukuran file.

SQL (Structured Query Language) adalah bahasa umum yang digunakan oleh hampir setiap database relasional serius di planet ini—dari PostgreSQL, MySQL, dan SQLite hingga sistem komersial seperti SQL Server dan Oracle. Ini memungkinkan Anda untuk mendefinisikan struktur data, menyimpan data, mengkuerinya secara efisien, dan menegakkan aturan tentang bagaimana data tersebut berperilaku.

Berikut adalah tur mendalam sekitar 2.500 kata tentang SQL: apa itu, bagaimana cara kerjanya, dan cara menggunakannya dengan baik dalam sistem nyata.

1. Apa itu SQL (dan mengapa masih penting)

SQL adalah bahasa deklaratif: Anda menjelaskan apa data yang Anda inginkan, dan database memutuskan bagaimana cara mendapatkannya. Tutorial seperti panduan SQL di W3Schools dan seri SQL W3Schools.in memperkenalkan SQL sebagai bahasa standar untuk menyimpan, memanipulasi, dan mengambil data di banyak mesin database.

Karena SQL distandarisasi dan didukung secara luas, Anda dapat menggunakan model mental yang sama untuk:

  • aplikasi web di MySQL atau PostgreSQL
  • aplikasi tertanam menggunakan SQLite
  • sistem perusahaan seperti SQL Server atau Oracle

Sebagian besar data bisnis sehari-hari—pesanan, pengguna, pembayaran, log, analitik—akhirnya disimpan dalam tabel yang dapat Anda kueri dengan SQL.

2. Standar dan Dialek SQL

SQL distandarisasi oleh keluarga standar ISO/IEC 9075, yang mendefinisikan bahasa inti dan banyak ekstensi opsional. Standar telah berevolusi melalui versi seperti SQL-86, SQL-92, SQL:1999, SQL:2003, dan hingga SQL:2023. Artikel seperti ikhtisar ANSI tentang standar SQL ISO/IEC 9075:2023 menjelaskan bagaimana standar ANSI dan ISO selaras seiring waktu.

Standar itu sendiri dibagi menjadi beberapa bagian, seperti:

  • Bagian 1 (Framework) dan Bagian 2 (Foundation)
  • Bagian 3 (Call-Level Interface) untuk API
  • Bagian 4 (Persistent Stored Modules) untuk prosedur tersimpan
  • Bagian selanjutnya seperti SQL/XML, SQL/MED, dan bahkan SQL/PGQ untuk kueri grafik properti

Anda dapat melihat daftar lengkap di halaman katalog ISO untuk SQL dan di sumber seperti pembagian Modern SQL dari bagian standar.

Dalam praktiknya, setiap database mengimplementasikan dialeknya sendiri:

  • PostgreSQL menambahkan ekstensi seperti tipe data lanjutan dan pencarian teks lengkap, didokumentasikan dalam manual PostgreSQL.
  • MySQL memiliki variannya sendiri dari pernyataan SQL dan fungsi.
  • SQLite mendukung subset SQL yang substansial dengan beberapa perilaku unik, dijelaskan secara detail dalam dokumentasi SELECT.

Konsep inti—tabel, baris, kolom, join, agregat—dapat dipindahkan, tetapi sistem non-trivial apa pun akan melibatkan pembelajaran keunikan dan fitur dialek tertentu.

3. Dasar Relasional: Tabel, Baris, Kunci

Pada intinya, SQL dirancang di sekitar model relasional: data hidup dalam tabel (relasi), di mana setiap baris mewakili fakta dan setiap kolom menggambarkan atribut.

Elemen tipikal meliputi:

  • Tabel: mis. customers, orders
  • Kolom: mis. id, name, order_date, total_amount
  • Kunci primer: pengidentifikasi unik untuk setiap baris (seringkali sebuah id)
  • Kunci asing: kolom yang merujuk ke kunci primer tabel lain (mis. orders.customer_idcustomers.id)

Panduan normalisasi—seperti tutorial normalisasi DigitalOcean atau penjelasan freeCodeCamp tentang 1NF, 2NF, 3NF—merangkum desain relasional yang baik sebagai meminimalkan redundansi dan mencegah anomali pembaruan dengan membagi data menjadi tabel yang terstruktur dengan baik dan menghubungkannya dengan kunci.

Ketika Anda mengkueri dengan SQL, pada dasarnya Anda bertanya kepada database: "Dari tabel-tabel ini, di bawah kondisi ini, baris dan kolom apa yang harus saya lihat?"

4. Kueri Inti: SELECT

Pernyataan SELECT adalah kuda kerja SQL dan mungkin perintahnya yang paling kompleks. Referensi SELECT SQLite menyebutnya "perintah paling rumit dalam bahasa SQL", dan baik dokumentasi SELECT MySQL maupun tutorial seperti panduan SELECT SQLite Tutorial membahas banyak opsi yang dimilikinya.

SELECT id, name
FROM customers;

Bagian kunci:

  • SELECT mencantumkan kolom (atau * untuk semua kolom, meskipun biasanya lebih baik eksplisit).
  • FROM memilih satu atau lebih tabel.
  • WHERE memfilter baris.
  • ORDER BY mengurutkan hasil.
  • LIMIT membatasi berapa banyak baris yang Anda lihat.
SELECT id, name, created_at
FROM customers
WHERE active = TRUE
ORDER BY created_at DESC
LIMIT 50;

Tutorial pengantar seperti tutorial SQL W3Schools dan ikhtisar W3Schools MySQL tentang perintah umum menggunakan SELECT untuk menunjukkan bagaimana Anda mengekstrak data dari tabel dalam satu ekspresi yang dapat dibaca.

5. Filtering, Pengurutan, dan Ekspresi

SQL bersinar ketika Anda menggabungkan filtering dan ekspresi langsung dalam kueri:

SELECT
 id,
 total_amount,
 total_amount * 0.1 AS tax_estimate
FROM orders
WHERE status = 'paid'
 AND total_amount >= 100
ORDER BY total_amount DESC;

Klausa WHERE dapat menggunakan operator perbandingan (=, <>, >, <), operator logika (AND, OR, NOT), pencocokan pola (LIKE, ILIKE), dan lainnya. Database seperti MySQL mendokumentasikan kumpulan fungsi dan operator bawaan yang kaya untuk operasi numerik, string, tanggal/waktu, JSON, dan lainnya.

Anda juga dapat:

  • menggunakan IN untuk mencocokkan dengan daftar: WHERE status IN ('paid', 'refunded')
  • menggunakan BETWEEN untuk rentang: WHERE created_at BETWEEN '2025-01-01' AND '2025-01-31'
  • menggunakan IS NULL / IS NOT NULL untuk menangani nilai yang hilang

Tutorial dan manual yang baik menekankan bahwa ekspresi muncul di banyak klausa— WHERE, ORDER BY, HAVING, dan bahkan SELECT itu sendiri. Dokumentasi MySQL menyoroti ini di bagian evaluasi ekspresi dalam bab fungsi dan operator.

6. Menggabungkan Tabel

Database nyata jarang menyimpan semuanya dalam satu tabel. Sebaliknya, Anda menormalisasi data ke beberapa tabel dan menggabungkannya ketika Anda mengkueri. Join dibahas secara luas di sumber seperti halaman W3Schools tentang join SQL, tutorial join GeeksforGeeks, ikhtisar join TutorialsPoint, dan panduan interaktif seperti tutorial join SQL di SQL Practice Online.

SELECT
 id,
 c.name,
 o.order_date,
 o.total_amount
FROM orders AS o
JOIN customers AS c
 ON c.id = o.customer_id;

Jenis join umum:

  • INNER JOIN – hanya baris dengan kecocokan di kedua tabel
  • LEFT JOIN – semua baris dari tabel kiri, plus kecocokan dari kanan
  • RIGHT JOIN – kebalikan dari left join (tidak didukung di beberapa mesin seperti SQLite)
  • FULL OUTER JOIN – baris dari kedua sisi, bahkan jika tidak cocok

Penjelasan visual dan berbasis kode, seperti artikel "SQL joins explained" DbSchema atau contoh join LearnSQL.com, adalah cara yang bagus untuk membangun intuisi yang kuat tentang bagaimana join berperilaku.

7. Agregasi, Pengelompokan, dan Fungsi Jendela

Untuk merangkum data—total, rata-rata, hitungan—Anda menggunakan fungsi agregat (COUNT, SUM, AVG, MIN, MAX) dengan GROUP BY:

SELECT
 customer_id,
 COUNT(*) AS order_count,
 SUM(total_amount) AS total_spent
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(total_amount) >= 1000
ORDER BY total_spent DESC;

Referensi seperti bab fungsi dan operator MySQL dan dokumentasi PostgreSQL tentang fungsi agregat dan jendela mengkatalogkan fungsi bawaan yang dapat Anda gunakan dalam ekspresi ini.

SQL modern juga mendukung fungsi jendela, yang memungkinkan Anda menghitung agregat di atas "jendela" geser baris sambil tetap mengembalikan baris individual—misalnya, total berjalan atau peringkat. Fungsi jendela masuk ke SQL melalui amandemen ke SQL:1999, kemudian diintegrasikan ke SQL:2003, seperti yang diringkas dalam catatan tentang standar SQL:1999 dan SQL:2003.

SELECT
 customer_id,
 order_date,
 total_amount,
 SUM(total_amount) OVER (
   PARTITION BY customer_id
   ORDER BY order_date
 ) AS running_total
FROM orders;

Jenis kueri ini sangat kuat untuk analisis langsung di database.

8. Definisi Data: Membuat dan Mengembangkan Skema

SQL tidak hanya untuk mengkueri; ini juga mendefinisikan bentuk data Anda melalui pernyataan Data Definition Language (DDL), yang didokumentasikan dengan baik di bagian seperti panduan Definisi Data PostgreSQL dan bab pernyataan SQL MySQL.

Perintah DDL umum:

  • CREATE DATABASE my_app; – membuat database
  • CREATE TABLE customers (...); – mendefinisikan tabel
  • ALTER TABLE customers ADD COLUMN phone TEXT; – mengubah struktur tabel
  • DROP TABLE customers; – menghapus tabel
CREATE TABLE customers (
 id           SERIAL PRIMARY KEY,
 email        VARCHAR(255) UNIQUE NOT NULL,
 name         TEXT NOT NULL,
 created_at   TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 active       BOOLEAN NOT NULL DEFAULT TRUE
);

Poin penting:

  • Tipe data: bilangan bulat, string, tanggal, boolean, JSON, dll.
  • Kendala: PRIMARY KEY, UNIQUE, NOT NULL, ekspresi CHECK
  • Nilai default dan kolom yang dihasilkan

Setiap manual RDBMS utama— bagian bahasa SQL PostgreSQL, manual referensi MySQL, dan referensi bahasa SQLite—menekankan untuk berpikir hati-hati tentang DDL, karena keputusan skema sulit diubah nanti.

9. Transaksi, Konkurensi, dan Kendala

Database SQL umumnya mengimplementasikan properti ACID—Atomicity, Consistency, Isolation, Durability—melalui transaksi:

BEGIN;

UPDATE accounts
SET balance = balance - 200
WHERE id = 1;

UPDATE accounts
SET balance = balance + 200
WHERE id = 2;

COMMIT;

Jika sesuatu gagal antara BEGIN dan COMMIT, transaksi dapat dirollback sehingga perubahan menengah tidak bocor ke database.

Bagian MySQL tentang pernyataan transaksional dan penguncian membahas START TRANSACTION, COMMIT, ROLLBACK, dan savepoint, sementara bab PostgreSQL tentang kontrol konkurensi dan manajemen transaksi menjelaskan bagaimana tingkat isolasi dan MVCC bekerja di balik layar.

Kendala—seperti kunci asing atau kendala cek—adalah cara database untuk menegakkan aturan bisnis:

ALTER TABLE orders
ADD CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id)
REFERENCES customers (id);

Jika digunakan dengan baik, mereka mengubah database Anda menjadi penjaga invarian, mencegah data tidak valid di sumbernya daripada hanya mengandalkan logika aplikasi.

10. Desain Skema dan Normalisasi

Membuat skema dengan benar seringkali lebih penting daripada kueri yang cerdas. Normalisasi adalah proses menyusun tabel untuk mengurangi redundansi dan meningkatkan konsistensi. Tutorial seperti:

Progresi tipikal:

  • 1NF: tidak ada grup berulang; setiap kolom menampung nilai atomik.
  • 2NF: setiap atribut non-kunci bergantung pada seluruh kunci primer (untuk kunci komposit).
  • 3NF: tidak ada dependensi transitif (atribut non-kunci tidak bergantung pada atribut non-kunci lainnya).

Over-normalisasi dapat merusak kinerja dan memperumit kueri; tim pragmatis sering menormalisasi ke 3NF dan kemudian denormalisasi secara selektif (misalnya, caching agregat) di mana kinerja memerlukannya.

11. Indeks dan Kinerja Kueri

Indeks adalah alat utama untuk membuat kueri SQL cepat. Mereka adalah struktur data bantu yang memungkinkan database melompat langsung ke baris yang relevan daripada memindai seluruh tabel.

Sumber yang sangat dihormati tentang pengindeksan adalah Use The Index, Luke! oleh Markus Winand, buku online gratis yang sepenuhnya fokus pada kinerja SQL dan strategi pengindeksan. Halaman utama situs, UseTheIndexLuke.com, dan artikel seperti "Indexing LIKE filters" dan "More indexes, slower INSERT" menjelaskan kapan indeks membantu dan kapan merugikan.

Ide kunci:

  • Indeks B-tree mempercepat pencarian kesetaraan dan rentang (WHERE email = ..., WHERE created_at >= ...).
  • Indeks komposit mempertimbangkan urutan kolom—misalnya, (customer_id, created_at) bekerja dengan baik untuk WHERE customer_id = ? AND created_at >= ?.
  • Indeks membantu SELECT, UPDATE, dan DELETE dengan filter, tetapi memperlambat penyisipan karena setiap penyisipan harus memperbarui semua indeks yang relevan.

Panduan seperti artikel MSSQLTips tentang merancang indeks SQL Server menunjukkan bagaimana pilihan dan urutan kolom dalam indeks memengaruhi kueri nyata.

Aturan praktis:

  • Indeks kunci primer Anda dan kolom join/filter yang sering digunakan.
  • Hindari mengindeks setiap kolom—terlalu banyak indeks membunuh kinerja penulisan.
  • Gunakan EXPLAIN/EXPLAIN ANALYZE database untuk melihat bagaimana kueri dieksekusi.

12. Fitur SQL Modern: CTE, JSON, dan Lainnya

Sementara dasar-dasarnya tetap stabil, SQL modern telah berkembang secara signifikan:

  • Common Table Expressions (CTE) melalui WITH memungkinkan kueri yang lebih dapat dibaca dan modular:
    WITH recent_orders AS (
     SELECT *
     FROM orders
     WHERE order_date >= CURRENT_DATE - INTERVAL '7 days'
    )
    SELECT customer_id, COUNT(*) 
    FROM recent_orders
    GROUP BY customer_id;
  • Dukungan JSON memungkinkan Anda mencampur data semi-terstruktur dengan tabel relasional. PostgreSQL, MySQL, dan lainnya mendokumentasikan fungsi JSON yang luas dalam manual mereka, seperti fitur JSON MySQL yang tercantum di bawah fungsi JSON.
  • Tipe data lanjutan (array, hstore, geometri, pencarian teks lengkap) dijelaskan dalam bab tipe data dan indeks PostgreSQL di manual PostgreSQL.

Standar SQL sendiri telah menambahkan bagian untuk XML, array multidimensi, dan kueri grafik properti, seperti yang didokumentasikan dalam katalog standar SQL ISO dan dalam artikel tentang evolusi SQL seperti artikel standar SQL ANSI.

SQL modern cukup kuat sehingga banyak aplikasi dapat mendorong logika kompleks—hierarki, analitik, pemrosesan acara—ke lapisan database.

13. Belajar SQL Secara Efektif

Karena SQL tetap fundamental untuk pekerjaan data, ada ekosistem sumber belajar yang kaya:

Strategi pembelajaran praktis:

  1. Kuasai SELECT dan filtering dasar. Mulai dengan kueri sederhana dan secara bertahap tambahkan WHERE, ORDER BY, dan LIMIT.
  2. Biasakan diri dengan join. Latih semua jenis join sampai Anda dapat memprediksi hasil dengan percaya diri.
  3. Tambahkan pengelompokan dan agregasi. Pelajari cara menjawab pertanyaan seperti "pendapatan per bulan" atau "10 pelanggan teratas" dengan GROUP BY.
  4. Pelajari desain skema. Pelajari normalisasi dan praktikkan pemodelan sistem nyata—misalnya, toko, sistem pemesanan, jejaring sosial.
  5. Jelajahi fitur mesin favorit Anda. Baca dokumentasi resmi database Anda— bagian bahasa SQL PostgreSQL, manual referensi MySQL, atau referensi bahasa SQLite—untuk menemukan alat khusus mesin.
  6. Akhirnya, pelajari kinerja. Bereksperimen dengan indeks menggunakan konsep di Use The Index, Luke! dan sumber serupa, dan profil kueri dengan EXPLAIN.

Jika Anda dapat membaca dan menulis SQL dengan nyaman, Anda dapat memeriksa data langsung di produksi, membuat laporan tanpa mengekspor ke spreadsheet, men-debug logika aplikasi dengan melihat tabel yang mendasarinya, dan berkolaborasi lebih efektif dengan insinyur dan analis.

14. Gambaran Besar

SQL berada di persimpangan unik: berusia lebih dari 40 tahun, tetapi sangat relevan dalam sistem cloud-native dan analitik berat saat ini. Standar ISO/IEC 9075 dan banyak bagiannya terus berevolusi, sementara database open-source seperti PostgreSQL, MySQL, dan SQLite mendorong fitur praktis dan peningkatan kinerja.

Jika Anda bekerja dengan data—pengembang, analis, ilmuwan data, atau manajer produk—SQL adalah bahasa bersama yang memungkinkan Anda mengajukan pertanyaan langsung ke database. Layak dipelajari sekali, dan membayar untuk sisa karier Anda.

Pertanyaan yang Sering Diajukan

Apa itu pemformatan SQL?

Pemformatan SQL adalah proses mengatur kueri SQL dengan indentasi yang tepat, jeda baris, dan casing kata kunci untuk meningkatkan keterbacaan dan pemeliharaan.

Dialek SQL mana yang didukung?

Pemformat kami mendukung beberapa dialek SQL termasuk MySQL, PostgreSQL, SQL Server, SQLite, Oracle, dan banyak lainnya.

Apakah kode SQL saya aman?

Ya! Semua pemformatan SQL terjadi sepenuhnya di browser Anda. Kueri Anda tidak pernah meninggalkan komputer Anda, memastikan privasi dan keamanan lengkap.

Bisakah saya memformat beberapa pernyataan SQL?

Ya, Anda dapat memformat beberapa pernyataan SQL sekaligus. Pemformat akan menangani setiap pernyataan dengan tepat berdasarkan dialek yang dipilih.

Bagaimana jika SQL saya memiliki kesalahan sintaks?

Pemformat akan mencoba memformat SQL Anda bahkan jika mengandung kesalahan sintaks. Namun, Anda mungkin melihat pesan kesalahan untuk SQL yang tidak valid yang tidak dapat diuraikan. Selalu validasi SQL Anda dengan sistem database Anda.