PK Systems PK Systems
Strumenti per sviluppatori

Formattatore SQL

Abbellisci le query SQL con regole specifiche per dialetto. SQL standard, PostgreSQL, MySQL, BigQuery, T-SQL e SQLite — tutto nel tuo browser.

Formattatore SQL

SQL formattato

Clicca su "Formatta SQL" per formattare la tua query.

Cosa fa questo strumento?

L'SQL è un linguaggio che si scrive una volta e si debugga per sempre: copi una query dal log di un ORM o dal messaggio di un collega in chat e ti arriva come una riga unica da 400 caratteri. Questo formattatore SQL online prende quel muro di testo e lo dispone su più righe con un'indentazione coerente, mettendo una clausola per riga, allineando le condizioni di JOIN e spezzando lunghi elenchi di SELECT in colonne impilate verticalmente. È specifico per dialetto, quindi comprende funzionalità di PostgreSQL come RETURNING, i backtick di MySQL, le parentesi quadre di T-SQL, gli elenchi di colonne EXCEPT di BigQuery e le peculiarità di SQLite — la query risultante resta valida per il motore per cui è stata scritta. Tutto avviene nel tuo browser, quindi l'SQL che incolli non lascia mai la scheda e non tocca mai un server. La query originale non viene mai modificata semanticamente — cambiano solo gli spazi, le interruzioni di riga e le maiuscole/minuscole — quindi puoi reincollare il risultato nel tuo codice, in un file di migration, nella descrizione di una pull request, in un post sul blog o in una risposta in chat con tranquillità. Usalo per ripulire i log da Postgres, MySQL, SQL Server, BigQuery o SQLite, per preparare query per le code review, o semplicemente per rendere leggibile una query da 200 righe prima di iniziare a ottimizzare il piano di esecuzione.

Come usarlo

Scegli un dialetto che corrisponda al database di destinazione, incolla l'SQL nella textarea, scegli le maiuscole/minuscole e l'indentazione che preferisci e clicca su Formatta. Il risultato appare sotto con un pulsante di copia con un solo clic.

  1. Scegli il dialetto giusto — Se non sei sicuro, SQL standard gestisce la maggior parte delle query conformi ANSI. Passa a un dialetto specifico del fornitore quando la tua query usa identificatori come `backtick`, [parentesi quadre] o parole chiave esclusive di un fornitore (RETURNING, QUALIFY, ecc.).
  2. Scegli la formattazioneMAIUSCOLO è lo standard di fatto per l'SQL nelle code review. minuscolo si legge più come prosa. Mantieni conserva quello che hai già scritto.
  3. Imposta l'indentazione — 2 spazi è il valore predefinito più comune. 4 spazi è più gradevole con CTE annidati. Tab si abbina agli editor configurati con sola indentazione a tabulazione.
  4. Formatta e copia — Clicca su Formatta SQL, controlla il risultato e usa il pulsante di copia per metterlo negli appunti. Reincollalo nel tuo editor, in un file di migration o in una risposta in chat.

Le regole di formattazione in parole semplici

Il formattatore emette una clausola principale per riga: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Ogni JOIN sta su una riga propria con la condizione ON corrispondente indentata di un livello. Gli elementi di un elenco SELECT, di una tupla VALUES o di una clausola IN (…) vengono divisi su più righe quando superano la larghezza di riga. Subquery e CTE ricevono un livello di indentazione aggiuntivo rispetto al genitore. I commenti (-- e /* */) sono conservati alla lettera. Il risultato è lo stesso insieme di istruzioni da cui sei partito — solo disposto in modo che chi rivede possa cogliere la struttura della query a colpo d'occhio.

Promemoria sui dialetti

Ogni dialetto gestisce in modo diverso la quotatura degli identificatori, la concatenazione di stringhe e una manciata di parole chiave proprietarie. Scegli il dialetto che corrisponde al motore per cui stai scrivendo.

Dialetto Peculiarità rispettate dal formattatore
SQL standardBase conforme ANSI. Doppi apici per gli identificatori, apici singoli per le stringhe, || per la concatenazione.
PostgreSQLAggiunge RETURNING, ON CONFLICT, ::cast, stringhe quotate con dollaro ($$) e letterali di array.
MySQLIdentificatori con backtick, STRAIGHT_JOIN, SQL_CALC_FOUND_ROWS, stringhe con doppi apici consentite.
BigQueryRiferimenti a progetto/dataset/tabella con backtick, EXCEPT negli elenchi di colonne, QUALIFY, UNNEST.
T-SQL (SQL Server)Identificatori tra parentesi quadre, TOP n, OUTPUT INSERTED.*, hint NOLOCK.
SQLitePer lo più ANSI; piccole differenze in WITHOUT ROWID, gestione di CONFLICT e tipizzazione lasca.

Domande frequenti

La mia query viene inviata a un server?

No. La formattazione avviene interamente all'interno della scheda del tuo browser, quindi l'SQL che incolli — inclusi nomi di tabelle e colonne sensibili, ID hardcoded o dati di produzione inseriti nelle clausole WHERE — non raggiunge mai i nostri server o terze parti. Puoi disconnetterti dalla rete dopo che la pagina è stata caricata e il formattatore funziona comunque.

Perché il risultato è leggermente diverso da quello del formattatore del mio IDE?

Ogni formattatore SQL ha le proprie opinioni su interruzioni di riga, virgola in testa o in coda e su come gestire lunghe espressioni CASE. I valori predefiniti qui seguono convenzioni comuni tra editor di database professionali e code review. Se ti serve una corrispondenza esatta con la guida di stile del tuo team, passa il risultato attraverso il formattatore preferito dal team come passaggio finale.

Eseguirà la mia query?

No. Avviene solo la formattazione (spazi e maiuscole/minuscole). La query non viene mai eseguita, analizzata su uno schema di database o inviata da nessuna parte.

Comprende stored procedure e blocchi PL/pgSQL?

Formatta correttamente l'SQL esterno ma tratta il corpo procedurale interno come testo opaco — le interruzioni di riga all'interno di BEGIN … END sono conservate ma non riavvolte. Per stored procedure complesse usa uno strumento specifico del fornitore come il formattatore di PGAdmin.

Cosa succede se lascio il dialetto su SQL standard ma la mia query usa i backtick di MySQL?

Il formattatore di solito produrrà comunque un risultato sensato, ma le parole chiave proprietarie potrebbero finire non indentate o con maiuscole/minuscole sbagliate. Scegli il dialetto corrispondente per il risultato più pulito.

Può gestire più istruzioni separate da punto e virgola?

Sì. Più istruzioni separate da ; vengono formattate in modo indipendente e unite con una riga vuota tra di esse. Comodo per incollare un intero script di migration.