Un SQL formatter prende codice SQL compatto, scritto su una sola riga o generato automaticamente, e lo riscrive con indentazione e ritorni a capo coerenti. Sviluppatori e analisti lo usano per rivedere i join, fare debug dei filtri, ripulire l'output di un ORM, condividere query in ticket o documentazione e analizzare i piani di esecuzione.
La formattazione non cambia cosa *fa* una query: cambia quanto è facile leggerla per una persona. Con un layout coerente, il rapporto tra SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING e ORDER BY diventa molto più semplice da esaminare, soprattutto nelle query che mescolano subquery e CTE.
SQL ha molti *dialetti*: PostgreSQL, MySQL, SQLite, T-SQL (Microsoft SQL Server), Oracle e BigQuery estendono tutti lo standard con una sintassi propria. Un buon formatter capisce il dialetto che scegli, così non rompe la sintassi specifica del database.
Cosa impari mentre formatti SQL
Le clausole SQL hanno ruoli precisi: SELECT sceglie le colonne, FROM sceglie le tabelle, WHERE filtra le righe, GROUP BY aggrega e ORDER BY ordina.
Un'indentazione leggibile mette in evidenza query annidate, join e condizioni che in una query su una sola riga resterebbero invisibili.
Il dialetto conta: RETURNING, LIMIT, TOP e gli identificatori tra parentesi quadre ([col] o "col") non sono portabili tra database.
Con un buon formatter i commenti sopravvivono alla formattazione, così puoi spiegare *perché* esiste un filtro proprio accanto al filtro.
Come formattare una query SQL passo per passo
1
Incolla la query
Inserisci il tuo SQL nella casella di input. Funziona con SQL su una sola riga, generato da un ORM o formattato solo in parte.
2
Scegli il dialetto
Seleziona PostgreSQL, MySQL, SQLite o T-SQL, così il formatter rispetta le parole chiave specifiche come LIMIT, TOP o RETURNING.
3
Imposta lo stile
Scegli maiuscole o minuscole per le parole chiave (il maiuscolo è lo standard) e l'ampiezza dell'indentazione (2 o 4 spazi). La maggior parte dei team usa parole chiave in maiuscolo e indentazione a 2 spazi.
4
Leggi l'output formattato
Ogni clausola sta su una riga propria, i join sono allineati e le subquery indentate. I commenti vengono mantenuti.
5
Copialo nel tuo progetto
Incolla la query formattata nella tua migrazione, in una raw query dell'ORM o nel tuo strumento di BI. Tutto resta nel tuo browser.
Riferimento rapido delle clausole SQL
Le clausole che vedrai nel 95% delle query SELECT, nell'ordine in cui vengono elaborate a livello concettuale. Documentazione ufficiale: PostgreSQL SELECT, MySQL SELECT.
Clausola
A cosa serve
Esempio
SELECT
Scegliere quali colonne o espressioni restituire
SELECT id, name
FROM
Scegliere la tabella (o le tabelle) di origine
FROM users
JOIN ... ON
Combinare righe di un'altra tabella
JOIN orders ON orders.user_id = users.id
WHERE
Filtrare le righe prima del raggruppamento
WHERE active = true
GROUP BY
Aggregare le righe che condividono valori
GROUP BY country
HAVING
Filtrare i gruppi aggregati
HAVING COUNT(*) > 10
ORDER BY
Ordinare il risultato
ORDER BY created_at DESC
LIMIT / OFFSET
Paginare il risultato
LIMIT 20 OFFSET 40
WITH ... AS
Common Table Expression (CTE): dare un nome a una subquery
WITH active AS (...)
Esempi SQL da provare
Formattare una query semplice
Input
select id,name from users where active=trueorderby created_at desclimit10
Formattato
SELECT id, nameFROM usersWHERE active =trueORDERBY created_at DESCLIMIT10;
Ora ogni clausola sta sulla sua riga e l'elenco delle colonne è indentato. Rivedere questa query in una code review è diventato 10 volte più facile.
Analizzare un join
Input
select u.name,o.total from users u join orders o on o.user_id=u.id where o.total>100
Formattato
SELECT u.name, o.totalFROM users uJOIN orders o ON o.user_id = u.idWHERE o.total >100;
Gli alias di tabella (users u, orders o) tengono corto l'elenco delle colonne. La riga JOIN ... ON rende esplicito il rapporto tra le tabelle.
Leggere una subquery annidata
Input
select*from users where id in(select user_id from enrollments where course_id=5)
Formattato
SELECT*FROM usersWHERE id IN(SELECT user_idFROM enrollmentsWHERE course_id =5);
Indentare la query interna mostra chiaramente la dipendenza. Molte subquery si possono riscrivere come JOIN o CTE una volta che la struttura è visibile.
ORM come Prisma, Django e ActiveRecord registrano l'SQL nei log come un'unica lunga riga. Il beautifier la divide in clausole e indenta le condizioni WHERE concatenate, così puoi davvero leggere cosa fa la query prima di incollarla in un ticket.
Errori comuni nella formattazione SQL
Dare per scontato che un SQL formattato sia un SQL *corretto*. La formattazione cambia il layout, non la semantica: una query dall'aspetto pulito può comunque dare il risultato sbagliato.
Modificare una query mentre la formatti e dimenticare di testare di nuovo il risultato.
Ignorare il dialetto: LIMIT 10 in PostgreSQL, TOP 10 in T-SQL e FETCH FIRST 10 ROWS ONLY in SQL standard fanno tutti la stessa cosa.
Mescolare maiuscole e minuscole nelle parole chiave (Select, SELECT, select) nello stesso progetto. Scegli uno stile e resta coerente: la maggior parte dei team usa parole chiave in maiuscolo.
Domande frequenti sul SQL formatter
Formattare SQL cambia il risultato della query?
No. La formattazione cambia solo spazi bianchi e maiuscole. Il database interpreta entrambe le versioni con lo stesso piano di esecuzione, quindi le righe restituite sono identiche.
Perché formattare SQL?
Un SQL leggibile è più facile da correggere, rivedere, insegnare e mantenere, soprattutto quando la query ha più join, subquery, CTE o funzioni finestra.
Cos'è un dialetto SQL?
Un dialetto SQL è un'estensione dello SQL standard specifica di un database. PostgreSQL, MySQL, SQLite, T-SQL (SQL Server), Oracle e BigQuery hanno ciascuno una sintassi propria che va oltre lo standard.
Un SQL formatter può correggere query rotte?
Un formatter può far emergere problemi di sintassi riscrivendo la query in forma strutturata, ma non conosce il tuo schema e non può garantire che la query sia logicamente corretta.
Devo scrivere le parole chiave SQL in maiuscolo?
La maggior parte delle guide di stile consiglia parole chiave in maiuscolo (SELECT, FROM, WHERE) e identificatori in minuscolo, perché il contrasto visivo fa risaltare la struttura della query. Scegli uno stile e resta coerente.
Che differenza c'è tra SQL formatter e SQL beautifier?
Sono due nomi per la stessa cosa. "Beautify" e "format" significano entrambi riscrivere una query con indentazione, ritorni a capo e maiuscole coerenti, così è più facile da leggere. Che tu cerchi un SQL beautifier, un SQL pretty printer o un SQL formatter, questo strumento fa il lavoro: incolla la query, scegli il dialetto e copia la versione pulita.
Come formatto una query SQL online gratis?
Incolla la query nella casella di input, scegli il dialetto (PostgreSQL, MySQL, SQLite o T-SQL) e il formatter la reindenta all'istante con ogni clausola su una riga propria. È completamente gratis e senza registrazione, e tutto gira nel tuo browser: il tuo SQL non viene mai caricato, quindi è sicuro anche per query proprietarie o di produzione.