Bagaimana pemformatan SQL berfungsi
Pemformatan SQL ialah penulisan semula dipacu-leksem yang menelusuri setiap token dalam kueri dan memancarkan semula ruang putih di sekelilingnya berdasarkan peraturan untuk dialek yang dipilih. Semantik kueri tidak pernah berubah, hanya susun aturnya.
- Pilih dialek. Backtick MySQL, pelakon
::PostgreSQL, laluan jadual bertitik BigQuery, dan pengecam kurungan petak T-SQL masing-masing memerlukan tokenizer yang mengetahui tentangnya. Pemilih dialek memilih tatabahasa mana yang hendak digunakan. - Tokenkan input. Pemformat membahagikan kueri kepada aliran token: kata kunci (
SELECT,JOIN), pengecam, literal, operator, kurungan, dan ulasan. Literal rentetan dan pengecam bertanda petik diluluskan tanpa sentuhan supaya sintaks khusus dialek terus berfungsi. - Terapkan peraturan susun atur. Klausa peringkat atas (
SELECT,FROM,WHERE,GROUP BY,ORDER BY) bermula pada barisnya sendiri. Ungkapan berpisah koma dalam senarai pilih dan senarai lajur masing-masing mendapat baris, diinden mengikut unit inden yang dipilih. - Terapkan kes kata kunci. Togol kes kata kunci menulis semula kata kunci SQL yang diiktiraf kepada huruf besar, huruf kecil, atau mengekalkan kes input secara verbatim. Pengecam tidak pernah disentuh — nama lajur dan jadual sentiasa dihasilkan seperti yang ditulis.
- Pancarkan rentetan yang diformatkan. Aliran token digabungkan semula menjadi rentetan tunggal dengan aksara inden (2 ruang, 4 ruang, atau tab) dan peraturan pemisah baris yang dikonfigurasi. Mod langsung menjalankan semula keseluruhan saluran paip pada nyahhantaran 200 ms semasa anda menaip.
Mengapa mencetak-cantik SQL
- Kebolehbacaan diff permintaan tarik. CTE 200 baris yang ditulis semula sebagai satu baris mengubah semakan kod menjadi permainan tekaan. Pemformatan konsisten memastikan diff terhad kepada perubahan yang sebenarnya anda buat — lajur baharu,
JOINtambahan, predikatWHEREyang berbeza — supaya pengulas dapat melihatnya tanpa mengurai ruang putih. - Penyahpepijatan lebih mudah. Apabila kueri mengembalikan kiraan baris yang salah, perkara pertama yang anda lakukan ialah membacanya baris demi baris. SQL yang diformatkan meletakkan setiap
JOINpada barisnya sendiri dan menyejajarkan predikatWHEREsupayaANDyang hilang atauORyang tersasar kelihatan sekilas. - Gaya pasukan yang konsisten. Kebanyakan pasukan mengamalkan panduan gaya SQL dan mahu setiap kueri yang dikomit mengikutinya. Menjalankan pemformat sebelum komit menghapuskan hujah gaya dari semakan dan meninggalkan hanya logik untuk dibincangkan.
- Berkongsi SQL dalam dokumen. Buku panduan, retrospektif insiden, dan dokumen Notion semuanya mendapat manfaat daripada SQL yang dibaca dari atas ke bawah. SQL yang diformatkan ditampal dengan bersih ke dalam blok kod berpagar dan dicetak dengan boleh diramal dalam eksport PDF, tanpa pembalutan baris yang janggal di tengah kata kunci.
Aplikasi biasa
Pemformatan SQL muncul dalam jurutera analitik, pembangunan backend, dan kerja operasi bila-bila masa kueri perlu dibaca oleh seseorang yang tidak menulisnya.
- Jurutera analitik: cangkuk pra-komit dalam projek dbt yang memformat semula setiap fail model supaya diff PR terhad kepada perubahan logik, bukan perubahan ruang putih.
- Pentadbiran pangkalan data: tampal entri log kueri-perlahan satu baris, formatkannya, dan telusuri susunan gabung sambil menulis retrospektif insiden.
- Dokumentasi: ambil kueri dari penerokaan Looker atau buku kerja Tableau, formatkannya untuk buku panduan, dan benamkannya sebagai contoh boleh-tampal untuk giliran siap-siaga.
Contoh yang dikerjakan
Tampal SELECT u.id,u.email,COUNT(o.id) FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at > '2024-01-01' GROUP BY u.id,u.email ORDER BY u.id; ke dalam anak tetingkap input dengan dialek ditetapkan kepada PostgreSQL, inden 2 ruang, dan kes kata kunci BESAR. Output meletakkan SELECT, FROM, LEFT JOIN, WHERE, GROUP BY, dan ORDER BY pada barisnya sendiri; setiap lajur dalam senarai pilih dan senarai kumpulan mendapat barisnya sendiri yang diinden; dan predikat ON duduk satu inden lebih dalam daripada kata kunci JOIN yang dimilikinya. Kueri yang sama melalui dialek BigQuery menghasilkan output yang sama untuk kes ini tetapi akan mengekalkan pengecam bertanda backtick jika ada.
FAQ
Dialek SQL mana yang disokong?
Dropdown dialek merangkumi SQL Piawai, MySQL, PostgreSQL, SQLite, MariaDB, Transact-SQL (SQL Server / Azure SQL), BigQuery, Snowflake, dan Redshift. Pustaka sql-formatter pendasar juga mengenali DuckDB, Spark SQL, Hive, Trino, Db2, N1QL, PL/SQL, ClickHouse, TiDB, dan SingleStoreDB — memilih dialek yang paling hampir menghasilkan output yang munasabah walaupun sasaran tepat tidak ada dalam senarai. Pengecam, literal rentetan, dan operator khusus dialek (PostgreSQL @>, awalan BigQuery SAFE.) dikekalkan secara verbatim.
Adakah ini mengesahkan SQL saya?
Tidak. Pemformat ialah penulis semula leksikal, bukan penghurai. Ia mentokenkan input, menerapkan peraturan susun atur, dan memancarkan hasilnya; ia tidak menyemak sama ada kueri sah secara semantik, sama ada jadual yang dirujuk wujud, atau sama ada sintaks sah dalam dialek yang dipilih. Jalankan output yang diformatkan melalui pangkalan data sebenar (atau penyelit SQL seperti SQLFluff) untuk semakan ketepatan sebenar.
Mengapa kata kunci saya ditukar kepada huruf besar?
Dropdown kes kata kunci lalai kepada BESAR, yang merupakan konvensyen dalam kebanyakan panduan gaya SQL yang diterbitkan. Tukar kepada kecil jika pasukan anda menulis select / from dalam huruf kecil, atau Kekalkan jika anda mahu output mengekalkan kes yang anda taip. Pengecam tidak pernah terjejas — hanya set kata kunci yang diiktiraf ditulis semula.
Adakah kueri saya dimuat naik ke mana-mana?
Tidak. Pustaka sql-formatter yang terjual beli berjalan dalam pelayar anda, pemformatan berlaku secara setempat pada mesin anda, dan teks kueri tidak pernah merentasi rangkaian. Satu-satunya permintaan keluar yang dibuat halaman ini ialah permintaan analitik dan iklan yang dikongsi yang dibuat oleh setiap halaman di tools.ultim8soft.com; teks SQL itu sendiri bukan sebahagian daripada mana-mana satupun.
SQL yang dicetak-cantik berhenti menjadi hujah gaya sebaik sahaja pemformat mengendalikannya. Alat ini berjalan sepenuhnya dalam pelayar anda, kueri tidak pernah meninggalkan halaman, dan tokenizer sedar-dialek yang sama yang memperkuatkan pakej npm sql-formatter melakukan penulisan semula.