SuperDevTools

Formattare SQL online

Risultato
Incolla del SQL, trascina un file .sql o fai clic su «Esempio».
Query
0
Righe del risultato
0
Dimensione del risultato
0

Questo strumento formatta solo il testo: non controlla tutta la sintassi e non esegue nulla. Stringhe, identificatori tra virgolette e commenti vengono copiati così come sono.

Tutto avviene nel browser: le tue query non vengono inviate né salvate da nessuna parte.

Un formattatore SQL per query leggibili

Una query scritta tutta di seguito su una sola riga funziona, ma si legge male, ed è proprio quello che si trova spesso in un file di log o nel codice di un'applicazione. Formattare SQL significa dividere la query in clausole allineate e rientrate, per vedere subito quali colonne vengono lette, quali tabelle vengono unite e quali filtri si applicano. Uno stile comune semplifica anche la revisione del codice: il confronto tra due versioni mostra solo le modifiche vere.

Come si usa

  1. Incolla una o più query in «La tua query SQL» oppure apri un file .sql. «Esempio» carica una query con JOIN, sottoquery e CASE.
  2. Scegli il «Dialetto»: SQL standard, MySQL / MariaDB, PostgreSQL, SQLite o SQL Server.
  3. Imposta le «Parole chiave» (In MAIUSCOLO, In minuscolo, Invariate), il «Rientro», le «Colonne» (Una per riga o Su una sola riga) e le «Virgole» (A fine riga o A inizio riga).
  4. Fai clic su «Formatta» o «Minifica», poi su «Copia» o «Scarica (.sql)».

Esempio e convenzioni

Prendiamo select id, nome from clienti where citta = 'Torino' and attivo = 1 order by nome;, lunga 81 caratteri. Con le impostazioni predefinite lo strumento restituisce 10 righe: SELECT da solo, poi id, e nome rientrati di due spazi, FROM e clienti, WHERE seguito da citta = 'Torino', quindi AND attivo = 1 su una riga propria e infine ORDER BY e nome;. Minificata, la stessa query sta in 76 caratteri: SELECT id,nome FROM clienti WHERE citta='Torino' AND attivo=1 ORDER BY nome;.

Queste scelte seguono le convenzioni più diffuse:

  • parole chiave in maiuscolo, nomi di tabelle e colonne lasciati come li hai scritti;
  • una clausola principale per riga: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, UNION, INSERT INTO, VALUES, UPDATE, SET, DELETE FROM, CREATE TABLE;
  • ogni JOIN apre una riga con la sua condizione ON, e ogni AND o OR di un filtro va a capo, tranne quello di un BETWEEN;
  • una sottoquery ha un livello di rientro in più, e un CASE mette ogni WHEN e l'ELSE su righe separate.

Cosa lo strumento non modifica mai

L'analizzatore riconosce le stringhe tra apici singoli, gli identificatori tra virgolette doppie, apici inversi o parentesi quadre, i commenti -- e /* */, i numeri, gli operatori e i parametri (?, :nome, $1). Il contenuto di stringhe e commenti viene ricopiato carattere per carattere: in WHERE nota = 'select from where' le tre parole restano in minuscolo.

I dialetti si distinguono soprattutto nel modo di citare i nomi: apici inversi e commenti # in MySQL, parentesi quadre come [Nome cliente] in SQL Server, stringhe $$…$$ e operatore :: in PostgreSQL.

Se un apice, un commento o una parentesi restano aperti, lo strumento formatta comunque e indica riga e colonna del problema. Non è una validazione completa: un errore nel nome di una tabella o una virgola dimenticata non vengono rilevati, e nessuna query viene eseguita su un database.

Domande frequenti

La formattazione può cambiare il risultato della query?

No. Cambiano solo gli spazi e le maiuscole delle parole chiave, che per SQL sono indifferenti. Attenzione a una colonna senza virgolette che si chiama come una parola chiave (date, text, key): subisce lo stesso trattamento. Mettila tra virgolette oppure scegli «Invariate».

Posso formattare uno script di migliaia di righe?

Sì. Le query separate da «;» vengono trattate una dopo l'altra e separate da una riga vuota. Il calcolo avviene in background senza bloccare la pagina: 5.000 righe richiedono meno di un secondo su un computer recente. Sono accettati file fino a 20 MB.

Minificare e poi riformattare dà lo stesso risultato?

Sì, a parità di impostazioni, perché la formattazione dipende solo dalla sequenza degli elementi. La minificazione conserva i commenti -- e aggiunge un a capo dopo ciascuno, così non inghiottono il resto della query.