Skip to content
Pemformat SQL
Tools

Pemformat SQL

Baru

Percantik dan perkecil kueri SQL dengan penyesuaian huruf kata kunci dan pemisahan klausa.

Mode
0 lines 0 characters

Runs entirely in your browser. Nothing is uploaded.

SQL formatter online gratis yang berjalan di browser Anda

SQL formatter ini mengubah kueri yang padat dan sulit dibaca menjadi SQL yang rapi dan berindentasi benar hanya dengan satu klik. Tempel kueri, pilih gaya Anda, dan baca hasilnya yang sudah rapi seketika — tidak ada yang perlu diinstal dan tidak perlu membuat akun. Setiap kueri diproses secara lokal di browser Anda, sehingga SQL yang Anda tempel tidak pernah diunggah — hal ini penting ketika kueri berisi nama tabel asli, detail skema, atau data contoh.

Sebagai SQL beautifier dan pretty printer, alat ini menempatkan setiap klausa pada barisnya sendiri, mengindentasi kolom dan kondisi, serta merapikan join Anda — tata letak mudah dibaca yang sama seperti yang Anda dapatkan dari plugin IDE, tetapi tersedia di mana saja, di perangkat apa pun, termasuk ponsel Anda.

Rapikan atau minifikasi — untuk semua dialek utama

Beralihlah di antara dua mode. Beautify mengembangkan kueri menjadi tata letak multi-baris yang rapi; Minify mengempiskannya kembali menjadi satu baris dan menghapus komentar, cocok untuk menyematkan kueri ke dalam kode atau file konfigurasi. Untuk meminifikasi SQL, Anda cukup mengganti mode dan menyalin hasilnya.

Berbeda dari formatter dasar, alat ini sadar dialek. Pilih MySQL, PostgreSQL, SQL Server (T-SQL), Oracle, SQLite, BigQuery, Snowflake, atau Standard SQL, dan ia menyesuaikan diri dengan mesin tersebut — mengenali identifier backtick MySQL dan komentar #, atau identifier berkurung siku T-SQL seperti [Order Details] — sehingga postgresql formatter, t-sql formatter, dan oracle sql formatter semuanya ada di satu tempat.

Huruf kata kunci, indentasi, dan gaya koma — sesuai selera Anda

Gaya format itu personal, jadi alat ini memberi Anda kendali yang biasanya dikenakan biaya oleh formatter populer. Atur huruf kata kunci menjadi UPPERCASE (konvensi klasik yang membuat SELECT dan FROM menonjol), lowercase, Capitalized, atau Keep as-is untuk mempertahankan persis apa yang Anda ketik.

Pilih lebar indentasi SQL Anda — 2 spasi, 4 spasi, atau satu tab — dan tentukan koma di akhir atau di awal untuk daftar SELECT. Subquery diindentasi satu tingkat lebih dalam secara otomatis, dan string literal serta komentar selalu dibiarkan tidak tersentuh sehingga tidak ada yang rusak di dalam kueri Anda.

Mengapa perlu merapikan SQL?

SQL yang mudah dibaca lebih mudah di-debug, lebih mudah direview, dan menghasilkan diff yang lebih bersih di version control. Ketika setiap anggota tim memformat dengan cara yang sama, code review menyoroti perubahan logika sungguhan, bukan gangguan whitespace. Tata letak yang konsisten juga membuat jauh lebih cepat untuk melihat kondisi join yang hilang atau tanda kurung yang salah tempat dalam kueri panjang.

Jika Anda menyalin SQL dari log, mewarisi kueri ORM satu baris, atau ingin merapikan pekerjaan sebelum melakukan commit, menjalankannya lewat SQL query formatter hanya butuh sedetik dan menghemat waktu pembaca berikutnya.

Perbandingan dengan sqlformat.org, poorsql.com, dan formatter IDE

Dua SQL formatter online gratis yang paling banyak ditautkan adalah sqlformat.org dan poorsql.com. Keduanya mengunggah kueri Anda ke server untuk diproses, yang menjadi masalah jika SQL berisi nama tabel asli, nama kolom sensitif, atau baris data contoh. sqlformat.org sudah ada sejak lama tetapi dukungan dialeknya terbatas, tidak ada mode minify, dan penempatan koma bersifat tetap. poorsql.com — dulunya bernama 'Poor Man's SQL Formatter' — bahkan lebih minim: satu gaya indentasi saja, tanpa toggle huruf kata kunci, tanpa unduhan.

Formatter desktop seperti Redgate SQL Prompt tampil rapi tetapi butuh instalasi dan hanya berfungsi di dalam SQL Server Management Studio atau Visual Studio. SQLFluff sangat bagus untuk pipeline CI tetapi butuh Python dan command line. Prettier bisa memformat SQL lewat plugin tetapi butuh Node.js. Alat ini tidak butuh semua itu: berjalan instan di browser mana pun, bekerja di ponsel, memproses semuanya secara lokal, dan menambahkan dukungan dialek yang dapat dikonfigurasi, minifikasi, serta unduhan — mengisi celah antara 'tempel ke formulir web sederhana' dan 'menyiapkan toolchain'.

Berfungsi untuk DDL, DML, dan lainnya

Formatter ini memahami seluruh bahasa, bukan hanya pernyataan SELECT. Ia merapikan DML (SELECT, INSERT, UPDATE, DELETE), menata definisi kolom DDL dalam pernyataan CREATE TABLE satu per baris, dan menangani CTE (WITH …), window function, UNION, ekspresi CASE, serta subquery bertingkat.

Alat ini adalah SQL pretty printer yang pragmatis, bukan query planner lengkap — ia memformat ulang teks Anda tanpa mengeksekusi atau memvalidasinya — sehingga cepat, privat, dan bekerja sama baiknya baik kueri Anda lima baris maupun lima ratus baris.

Privat, instan, dan gratis — berfungsi di perangkat apa pun

Tidak ada yang perlu didaftarkan dan tidak ada yang perlu dibayar. Setiap proses format dan minify terjadi di browser Anda menggunakan JavaScript, sehingga SQL Anda tidak pernah meninggalkan perangkat, dan tetap berfungsi bahkan offline setelah halaman dimuat. Simpan SQL beautifier ini sebagai bookmark dan gunakan kapan pun Anda perlu memformat, mengindentasi, atau meminifikasi kueri.

Alat ini berfungsi di iPhone dan Android sama baiknya seperti di desktop. Tempel kueri dari chat atau tiket di ponsel, format di tempat, dan salin hasilnya kembali — tanpa aplikasi untuk diinstal, tanpa akun untuk masuk. Alat ini dimuat cepat, merespons instan, dan tidak menghalangi pekerjaan Anda.

Dialek SQL dan mengapa kueri yang sama terlihat berbeda di setiap tempat

ANSI SQL (distandarkan pada 1986 dan direvisi melalui SQL-92, SQL:1999, SQL:2003, SQL:2011, dan SQL:2016) mendefinisikan inti yang portabel, tetapi setiap vendor database menambahkan ekstensi eksklusif yang cepat berbeda dalam praktiknya. Hal sesederhana menggabungkan dua string saja berbeda di setiap mesin: PostgreSQL, SQLite, dan Oracle menggunakan operator ||, SQL Server menggunakan +, dan MySQL menggunakan fungsi CONCAT(). Fungsi tanggal sama beragamnya — NOW() di MySQL, GETDATE() di SQL Server, SYSDATE di Oracle, dan CURRENT_TIMESTAMP di SQL standar semuanya mengembalikan waktu saat ini tetapi tidak bisa saling dipertukarkan.

Primary key yang bertambah otomatis adalah sumber gesekan lain. PostgreSQL menggunakan pseudo-type SERIAL (atau yang lebih baru GENERATED ALWAYS AS IDENTITY), MySQL menggunakan AUTO_INCREMENT, SQL Server menggunakan IDENTITY(1,1), dan Oracle menggunakan sequence dengan trigger. Paging hasil sama spesifiknya per dialek: MySQL dan PostgreSQL menggunakan LIMIT n OFFSET m, SQL Server menggunakan TOP n atau yang lebih baru FETCH FIRST n ROWS ONLY, dan Oracle versi lama mengandalkan ROWNUM. Formatter yang memahami dialek-dialek ini men-tokenisasi kueri Anda terhadap kumpulan kata kunci yang tepat, sehingga tidak pernah salah mengenali fungsi khusus dialek sebagai identifier generik dan memformat kode Anda dengan benar untuk mesin target.

Literal boolean menunjukkan perpecahan yang sama: SQL standar dan PostgreSQL menerima TRUE dan FALSE; MySQL versi lama dan SQLite menggunakan 1 dan 0; SQL Server bahkan tidak punya tipe BOOLEAN sama sekali dan menggunakan tipe data BIT sebagai gantinya. Window function — diperkenalkan di SQL:2003 — kini didukung luas di PostgreSQL, SQL Server, Oracle, dan MySQL 8+, tetapi sintaks pasti untuk batas frame dan mode GROUPS masih bervariasi. Mengetahui dialek mana yang Anda targetkan sebelum memformat mencegah formatter salah mengubah huruf kata kunci vendor atau merusak sintaks khusus dialek yang jika tidak akan membingungkan parser generik.

Cara kerja parser dan formatter SQL di balik layar

SQL formatter adalah front-end compiler khusus yang berhenti tepat sebelum pembuatan kode. Langkah pertama adalah lexing (tokenisasi): memindai string SQL mentah karakter demi karakter dan menghasilkan aliran token bertipe — kata kunci seperti SELECT dan JOIN, identifier (nama tabel dan kolom), literal string dan numerik, operator, tanda kurung, dan whitespace. Token whitespace biasanya dibuang oleh lexer, tetapi formatter menyimpannya di jalur samping karena mempertahankan posisi komentar membutuhkan pengetahuan persis di mana setiap komentar berada relatif terhadap kode di sekitarnya.

Langkah kedua adalah parsing: mengonsumsi aliran token dan membangun Abstract Syntax Tree (AST). Parser recursive-descent menangani struktur bertingkat SQL secara alami — pernyataan SELECT bisa berisi subquery di klausa FROM, yang bisa berisi subquery berkorelasi lagi di klausa WHERE-nya, dan seterusnya hingga kedalaman berapa pun. AST membuat struktur menjadi eksplisit: node akar adalah pernyataan, anaknya adalah klausa, anak setiap klausa adalah ekspresi, dan setiap ekspresi bisa memiliki sub-ekspresi. CTE (blok WITH), ekspresi CASE, dan operasi set (UNION, INTERSECT) semuanya muncul sebagai node kelas satu dalam tree tersebut.

Langkah terakhir adalah pretty-printing: menelusuri AST dan menghasilkan SQL yang sudah diformat. Di setiap node, printer memutuskan apakah akan mencetak sebaris (semua dalam satu baris) atau melebar (setiap anak di barisnya sendiri berindentasi), dipandu oleh batas panjang baris dan aturan per-klausa. Inilah mengapa formatter berbasis regex gagal pada SQL kompleks: ekspresi reguler tidak dapat mencocokkan tanda kurung bertingkat sembarang, tidak dapat membedakan kata kunci di dalam string literal dari kata kunci sungguhan, dan tidak dapat melacak kedalaman indentasi melalui struktur rekursif. Formatter berbasis AST yang tepat menangani semua itu — subquery bertingkat berindentasi dengan benar, kata kunci di dalam 'string literal' tidak pernah diubah menjadi huruf besar, dan komentar multibaris dilekatkan kembali ke node pernyataan yang benar setelah pemformatan ulang.

CTE, window function, dan pola SQL modern

Common Table Expression (CTE), ditulis dengan kata kunci WITH, memungkinkan Anda menamai hasil antara dan merujuknya kembali di kueri yang sama, mengubah tumpukan subquery yang bersarang dalam menjadi rangkaian langkah bernama yang mudah dibaca. Kueri yang menurunkan daftar pelanggan terfilter, menggabungkannya ke pesanan, lalu mengagregasi per wilayah, berubah menjadi tiga blok berlabel jelas ketimbang tiga lapis tanda kurung. CTE rekursif memperluas ini lebih jauh: dengan menambahkan self-reference UNION ALL di dalam CTE, Anda bisa menelusuri data hierarkis — struktur organisasi, pohon bill-of-materials, komentar bertingkat — tanpa kode prosedural. Formatter yang baik mengindentasi anggota anchor dan rekursif secara konsisten, membuat batas rekursi langsung terlihat.

Window function (diperkenalkan di SQL:2003 dan kini didukung PostgreSQL, SQL Server, Oracle, MySQL 8+, SQLite 3.25+, BigQuery, dan Snowflake) melakukan perhitungan pada sekumpulan baris yang terkait dengan baris saat ini tanpa meruntuhkan hasil menjadi satu baris per grup. Klausa OVER (PARTITION BY dept ORDER BY salary DESC) mendefinisikan window; fungsi seperti ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), dan SUM() beroperasi di dalamnya. Total berjalan, peringkat persentil, perbandingan setiap penjualan dengan penjualan bulan sebelumnya — semuanya bisa dicapai dalam satu pass tanpa self-join. Bila diformat dengan benar, sub-klausa PARTITION BY dan ORDER BY muncul di barisnya sendiri yang berindentasi, membuat definisi window mudah dipindai sekilas.

Dua pola modern lain yang perlu diketahui: LATERAL join (PostgreSQL, MySQL 8+, BigQuery) memungkinkan subquery di klausa FROM merujuk kolom dari referensi tabel sebelumnya — efektifnya subquery per baris yang menggantikan subquery berkorelasi yang bertele-tele di daftar SELECT. Klausa FILTER pada agregat (SUM(salary) FILTER (WHERE dept = 'engineering'), didukung di PostgreSQL, SQLite, dan DuckDB) adalah alternatif yang lebih bersih ketimbang membungkus CASE WHEN di dalam setiap agregat. Kedua pola menghasilkan SQL yang lebih mudah dibaca saat diformat dengan indentasi yang tepat, dan formatter yang sadar dialek mengenalinya sebagai sintaks valid alih-alih menandainya sebagai error parsing.

SQL injection — kesalahan paling berbahaya seputar SQL

SQL injection terjadi ketika input dari pengguna digabungkan langsung ke dalam string SQL alih-alih dilewatkan sebagai parameter terpisah. Contoh klasiknya adalah pengecekan login yang ditulis sebagai "SELECT * FROM users WHERE name = '" + username + "'". Jika penyerang mengetik ' OR 1=1; DROP TABLE users; -- sebagai username, string yang dihasilkan menjadi dua pernyataan: sebuah SELECT yang mengembalikan semua baris (karena 1=1 selalu benar) dan sebuah DROP yang menghancurkan tabel. Sintaks komentar double-dash kemudian membungkam apa pun yang datang setelahnya. Ini adalah lelucon di balik xkcd #327 ("Bobby Tables"), dan hal ini telah menyebabkan kebocoran data nyata di perusahaan dari berbagai ukuran.

Perbaikannya adalah parameterized query (juga disebut prepared statement): tulis WHERE name = ? (atau $1 di PostgreSQL) dan lewatkan nilai pengguna sebagai argumen terpisah. Driver database mengirim struktur SQL dan nilai parameter ke server secara independen — server mengompilasi rencana kueri sebelum ia pernah melihat nilainya, sehingga secara struktural mustahil bagi parameter untuk ditafsirkan sebagai sintaks SQL. ORM dan query builder menggunakan parameterisasi secara internal secara default; bahaya muncul ketika developer melewatinya dengan konkatenasi string mentah demi kenyamanan atau untuk membangun kolom ORDER BY dinamis. Bahkan nama kolom dan tabel yang digunakan secara dinamis harus divalidasi terhadap allowlist — keduanya tidak bisa diparameterisasi sehingga tidak boleh diambil mentah-mentah dari input pengguna.

SQL injection telah muncul di OWASP Top 10 setiap tahun sejak daftar itu dimulai pada 2003 dan secara konsisten menempati peringkat pertama atau kedua di antara kerentanan aplikasi web. Risiko sekunder adalah terekspos-nya SQL dalam pesan error: exception database yang tidak ditangani dan membocorkan stack trace ke browser memberi tahu penyerang nama tabel, nama kolom, dan versi mesin database Anda — langkah pengintaian dari setiap serangan injection bertarget. Kueri yang diformat dan distruktur dengan baik lebih mudah diaudit untuk risiko injection, lebih mudah direfaktor untuk menggunakan parameter, dan lebih mudah bagi reviewer kode untuk melihat di mana interpolasi mentah telah menyusup. Memformat SQL Anda bukanlah kontrol keamanan tersendiri, tetapi SQL yang mudah dibaca adalah SQL yang mudah diaudit.

Frequently asked questions

Bagaimana cara memformat (merapikan) kueri SQL?

Tempel SQL Anda ke kotak input dan versi yang sudah diformat langsung muncul di sebelah kanan. Formatter menempatkan setiap klausa utama (SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY) di barisnya sendiri, mengindentasi kolom dan kondisi di bawahnya, serta bisa mengubah kata kunci menjadi huruf besar. Misalnya, satu baris yang padat seperti 'select id,name from users where active=1' menjadi tata letak multi-baris yang bersih dan bisa Anda salin atau unduh dengan satu klik.

Apa itu SQL formatter / beautifier?

SQL formatter — juga disebut SQL beautifier atau pretty printer — mengambil SQL yang diminifikasi atau berspasi tidak konsisten dan menulis ulang whitespace, indentasi, dan huruf kata kunci menjadi tata letak yang konsisten dan mudah dibaca, tanpa mengubah apa yang dilakukan kueri. Ia hanya menyentuh format: jeda baris, indentasi, dan kapitalisasi. Logika, tabel, kolom, dan nilai tetap persis seperti yang Anda tulis.

Bagaimana cara merapikan SQL secara online?

Buka halaman ini, tempel kueri Anda, lalu pilih opsi Anda — dialek, huruf kata kunci (UPPERCASE, lowercase, atau Capitalize), lebar indentasi (2 spasi, 4 spasi, atau tab), dan posisi koma (di akhir atau di awal). SQL yang sudah dirapikan diperbarui saat Anda mengetik dan siap disalin atau diunduh sebagai file .sql. Karena semuanya berjalan lokal, aman untuk kueri privat atau produksi.

Apakah kata kunci SQL harus huruf besar?

Sudah menjadi konvensi lama untuk menulis kata kunci reserved dalam UPPERCASE — SELECT, FROM, WHERE, JOIN — agar menonjol dari nama tabel dan kolom Anda. Tetapi kata kunci SQL tidak peka huruf besar/kecil, jadi ini murni pilihan gaya dan tidak pernah memengaruhi hasil. Alat ini membiarkan Anda memilih: UPPERCASE, lowercase, Capitalized (Select, From), atau Keep as-is untuk membiarkan huruf asli Anda tidak berubah.

Bagaimana cara meminifikasi kueri SQL?

Ganti mode ke Minify. Formatter mengempiskan SQL Anda menjadi satu baris, menghapus komentar, dan menghilangkan whitespace yang tidak perlu, sehingga kueri multi-baris yang tersebar di 'SELECT *', 'FROM users', dan 'WHERE id = 1' menjadi satu baris 'SELECT * FROM users WHERE id = 1'. SQL yang diminifikasi berguna untuk menyematkan kueri ke dalam kode aplikasi, konfigurasi JSON, atau baris log.

Dialek SQL apa saja yang didukung?

Pilih dari Standard SQL, MySQL, PostgreSQL, SQL Server (T-SQL), Oracle, SQLite, BigQuery, dan Snowflake. Pengaturan dialek menyesuaikan pengenalan kata kunci dan quoting — misalnya identifier backtick MySQL dan komentar #, atau identifier berkurung siku T-SQL seperti [Order Details] — sehingga kode Anda diformat dengan benar untuk mesin database Anda.

Apakah aman menempel SQL secara online?

Dengan alat ini, ya. Setiap kueri diformat sepenuhnya di browser Anda dengan JavaScript dan tidak pernah dikirim ke server, dicatat, atau disimpan. Ini penting ketika kueri berisi nama tabel asli, detail skema, atau data contoh. Dua alternatif yang paling sering ditautkan — sqlformat.org dan poorsql.com — keduanya memproses kueri Anda di sisi server, yang tidak masalah untuk contoh mainan tetapi berbeda ceritanya untuk SQL produksi. Di sini, tidak ada yang meninggalkan perangkat Anda.

Bagaimana cara mengindentasi SQL dengan benar?

Indentasi SQL yang baik menjaga setiap klausa tetap di margin kiri dan mengindentasi item di bawahnya — kolom di bawah SELECT, kondisi di bawah WHERE, tabel yang di-join di bawah FROM, dan subquery bersarang satu tingkat lebih dalam. Alat ini melakukannya secara otomatis; Anda tinggal memilih lebar indentasi — 2 spasi, 4 spasi, atau tab — dan diterapkan secara konsisten di seluruh pernyataan.

Bagaimana cara menyusun kueri SQL?

Kueri yang mudah dibaca mengikuti urutan logis SELECT → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT, dengan satu klausa per baris dan setiap kondisi AND/OR diindentasi di bawah WHERE. Memformat SQL Anda di sini menerapkan struktur itu untuk Anda, yang membuat kueri panjang jauh lebih mudah dipindai, di-debug, dan direview dalam pull request.

Apa alat untuk memformat kueri SQL?

Halaman ini adalah alat itu — SQL formatter berbasis browser yang gratis, tanpa perlu instal atau daftar: tempel, format, salin. Alat ini melengkapi formatter editor di VS Code, DataGrip, DBeaver, atau Oracle SQL Developer, tetapi bekerja instan di perangkat apa pun, termasuk ponsel, yang ideal saat Anda mereview kueri di dalam tiket, email, atau pesan chat.

Bagaimana perbandingannya dengan sqlformat.org atau poorsql.com?

Perbedaan utamanya adalah di mana pemrosesan terjadi. sqlformat.org dan poorsql.com sama-sama mengirim kueri Anda ke server mereka — tidak masalah untuk kueri mainan, tetapi menjadi perhatian jika SQL menyentuh tabel produksi atau menyertakan nama skema asli. Formatter UtiloKit berjalan sepenuhnya di browser Anda, sehingga tidak ada yang ditransmisikan ke mana pun. Dari segi fitur, sqlformat.org tidak punya mode minify dan opsi khusus dialek seperti BigQuery atau Snowflake. poorsql.com hanya punya satu gaya indentasi dan tanpa kontrol huruf kata kunci. UtiloKit memberi Anda delapan dialek, empat opsi huruf kata kunci, koma di akhir atau di awal, dan file .sql yang bisa diunduh — semua tanpa perlu mendaftar.

Bagaimana cara memformat SQL di VS Code atau SQL Developer?

Di VS Code Anda memasang ekstensi SQL formatter dan menekan Shift+Alt+F; di Oracle SQL Developer, shortcut-nya Ctrl+F7; di SSMS Anda perlu menambahkan add-in pihak ketiga. Semuanya membutuhkan aplikasi dan sedikit konfigurasi. Alat ini memberi Anda hasil rapi yang sama di browser tanpa perlu menyiapkan apa pun — tempel kueri, pilih gaya Anda, dan salin kembali.

Apakah pemformatan mengubah perilaku kueri saya?

Tidak. Merapikan hanya mengubah whitespace, jeda baris, dan (secara opsional) huruf kata kunci — tidak pernah mengurutkan ulang klausa, mengganti nama apa pun, atau mengubah nilai. SQL mengabaikan whitespace ekstra di antara token dan memperlakukan kata kunci tanpa peduli huruf besar/kecil, sehingga kueri yang sudah diformat mengembalikan hasil yang persis sama. String literal (dalam tanda kutip) dan komentar dipertahankan tanpa disentuh.

Apa itu perintah DDL, DML, DCL, dan TCL?

Ini adalah empat sub-bahasa SQL. DDL (Data Definition Language) mendefinisikan struktur — CREATE, ALTER, DROP, TRUNCATE. DML (Data Manipulation Language) bekerja dengan baris data — SELECT, INSERT, UPDATE, DELETE. DCL (Data Control Language) mengelola izin — GRANT, REVOKE. TCL (Transaction Control Language) mengelola transaksi — COMMIT, ROLLBACK, SAVEPOINT. Formatter ini merapikan pernyataan dari keempatnya.

Apakah SQL formatter berfungsi offline?

Ya. Karena semua proses format dan minify berjalan lokal di browser Anda, setelah halaman dimuat Anda bisa memformat SQL tanpa koneksi jaringan sama sekali — dan kueri Anda tidak pernah meninggalkan perangkat, yang membuatnya cepat sekaligus sepenuhnya privat.