Utilia

SQL Formatter

Format query SQL untuk PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake, dan lainnya, dengan opsi huruf kata kunci dan indentasi, di browser Anda.

Cara memformat query SQL

  1. Tempel satu atau beberapa query, atau klik Buka file untuk memuat file .sql (hingga 10 MB).
  2. Pilih Dialek database Anda, misalnya PostgreSQL, MySQL, atau SQL Server (T-SQL).
  3. Pilih cara penulisan Kata kunci (HURUF KAPITAL, huruf kecil, atau Biarkan seperti diketik) dan Indentasi-nya.
  4. Centang Tanpa spasi di sekitar operator jika Anda lebih suka a=b+1 daripada a = b + 1.
  5. Klik Format SQL, lalu salin atau unduh hasilnya. Mengubah opsi akan memformat ulang query.

Query hanya diformat ulang sebagai teks. Query tidak pernah dijalankan dan tidak pernah dikirim ke database atau server.

Apa yang dilakukan formatter

Alat ini memakai pustaka open source sql-formatter. Setiap pernyataan dipecah menjadi klausa, dan setiap kata kunci klausa (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) ditempatkan di barisnya sendiri, dengan isi klausa menjorok di bawahnya. Kolom dalam daftar SELECT ditempatkan satu per baris, kondisi AND dan OR memulai baris baru, dan subquery serta ekspresi CASE diindentasi sesuai tingkat sarangnya. Ekspresi pendek dalam tanda kurung tetap di satu baris. Beberapa pernyataan yang dipisahkan titik koma dipisahkan dengan baris kosong.

Hanya spasi dan huruf besar/kecil yang berubah. Literal string, identifier berkutip, dan komentar dipertahankan persis, sehingga query yang telah diformat mengembalikan hasil yang sama dengan aslinya.

Mengapa dialek itu penting

Database SQL berbagi bahasa inti yang sama, tetapi berbeda dalam detail, dan formatter harus mengetahuinya agar bisa membaca query dengan benar:

  • identifier dikutip dengan "tanda kutip ganda" di SQL standar dan PostgreSQL, `backtick` di MySQL, MariaDB, dan BigQuery, serta [kurung siku] di SQL Server;
  • operator seperti ->> dan cast :: di PostgreSQL, atau akses path : di Snowflake, hanya ada di dialek tertentu;
  • placeholder parameter berbeda-beda: ?, $1, :name, atau @name;
  • setiap dialek punya kata cadangan dan fungsinya sendiri, yang diubah oleh opsi Kata kunci.

Jika Anda mendapat pesan “Query tidak dapat diurai”, pertama-tama pastikan dialek yang dipilih sesuai dengan database Anda. Pesan kesalahan menunjukkan baris dan kolom tempat penguraian berhenti. SQL Standar adalah pilihan yang paling ketat; pilih database Anda yang sebenarnya bila memungkinkan.

Huruf kata kunci dan tips gaya

Kata kunci berhuruf kapital tetap menjadi konvensi paling umum karena langsung memisahkan bahasa SQL dari nama tabel dan kolom. Huruf kecil populer di tim yang merasa lebih mudah membacanya, dan Biarkan seperti diketik tidak mengubah pilihan Anda. Nama tabel, kolom, dan fungsi tidak pernah diubah: hanya kata kunci cadangan yang mengikuti opsi tersebut. Untuk file yang panjang, format yang konsisten juga membuat perbedaan antarversi jauh lebih mudah ditinjau.

Pertanyaan yang sering diajukan

Dialek apa saja yang didukung?

SQL standar, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB, dan Couchbase N1QL.

Apakah alat ini memeriksa apakah query saya valid?

Tidak. Alat ini memeriksa apakah query bisa dibaca dalam dialek yang dipilih, tetapi tidak memeriksa apakah tabel atau kolomnya ada, atau apakah query akan berjalan. Hanya database Anda yang bisa memastikannya.

Bisakah alat ini memformat stored procedure?

Sebagian. Pernyataan di dalam procedure diformat, tetapi blok prosedural (BEGIN … END, loop, DECLARE) ditata lebih sederhana daripada di IDE khusus.

Apakah query saya dikirim ke server?

Tidak. Pemformatan berjalan di browser Anda, sehingga query yang berisi nama tabel atau data tetap di komputer Anda.

Mengapa komentar saya berpindah tempat?

Komentar tetap dipertahankan, tetapi komentar di akhir baris bisa ikut berpindah bersama elemen yang diikutinya ketika elemen tersebut dipindahkan ke baris baru.