Come usare il formattatore SQL
- Incolla una o più istruzioni SQL nella casella di input.
- Seleziona il dialetto che corrisponde al tuo database: SQL standard, MySQL, PostgreSQL, SQL Server (T-SQL), SQLite, MariaDB, BigQuery, Snowflake o Oracle PL/SQL.
- Scegli come scrivere le parole chiave: MAIUSCOLO, minuscolo oppure Mantieni per lasciarle come sono scritte.
- Imposta l'indentazione.
- Fai clic su Formatta SQL e copia il risultato.
Le tue query vengono formattate nel browser e non vengono mai caricate né memorizzate, quindi puoi incollare in sicurezza query di produzione che rivelano nomi di tabelle o logica aziendale.
Perché formattare l'SQL?
L'SQL non è sensibile agli spazi: il database esegue una query su una sola riga esattamente come una ben indentata. Le persone, però, le leggono in modo molto diverso. Le query copiate dai log di un ORM, da strumenti di monitoraggio o da report di query lente di solito arrivano come un'unica lunga riga, e così è difficile capire quali condizioni appartengono a quale join o sottoquery.
Un formattatore mette ogni clausola principale (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY) su una riga a sé e indenta in modo coerente le parti annidate. Confronta:
select u.id,u.email,count(o.id) as orders from users u left join orders o on o.user_id=u.id where u.created_at>='2026-01-01' group by u.id,u.email having count(o.id)>5 order by orders desc;
SELECT
u.id,
u.email,
COUNT(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE
u.created_at >= '2026-01-01'
GROUP BY
u.id,
u.email
HAVING
COUNT(o.id) > 5
ORDER BY
orders DESC;
La versione formattata è più facile da rivedere in una pull request, più facile da correggere e produce diff più puliti quando qualcuno in seguito aggiunge una colonna o una condizione.
Perché il dialetto è importante
Ogni database estende l'SQL standard con una propria sintassi. Scegliere il dialetto giusto aiuta il formattatore a riconoscere correttamente parole chiave, operatori e virgolette degli identificatori:
| Dialetto | Virgolette degli identificatori | Esempi di sintassi specifica |
|---|---|---|
| MySQL / MariaDB | `backticks` | LIMIT 10, ON DUPLICATE KEY UPDATE |
| PostgreSQL | "double quotes" | cast con ::, RETURNING, ILIKE |
| SQL Server (T-SQL) | [brackets] | SELECT TOP 10, @variables |
| BigQuery | `backticks` | STRUCT, UNNEST, EXCEPT in SELECT * |
| Oracle PL/SQL | "double quotes" | FETCH FIRST 10 ROWS ONLY, blocchi BEGIN … END; |
Se una query viene formattata in modo strano, per esempio un operatore viene spezzato o una parola chiave viene trattata come nome di colonna, passare al dialetto corretto di solito risolve il problema.
Errori SQL comuni che la formattazione ti aiuta a individuare
Un formattatore non esegue né convalida completamente la tua query, ma un layout chiaro rende evidenti molti bug:
- Una virgola mancante nell'elenco della select.
SELECT id name FROM usersè SQL valido, ma restituisceidcon l'aliasname. Con una colonna per riga, la virgola mancante salta all'occhio. - Un filtro su una tabella in outer join nella
WHERE.LEFT JOIN orders o … WHERE o.status = 'paid'trasforma in silenzio l'outer join in un inner join. Sposta la condizione nella clausolaONse vuoi mantenere le righe senza corrispondenza. - Condizioni
ANDeORmescolate senza parentesi. L'operatoreANDha la precedenza suOR, quindia OR b AND csignificaa OR (b AND c). Aggiungi le parentesi per rendere esplicita l'intenzione. - Parentesi o apici non bilanciati. Quando l'indentazione dell'output devia all'improvviso, cerca una parentesi non chiusa o un letterale stringa non chiuso subito prima di quel punto.
Consigli e buone pratiche
- Le parole chiave in maiuscolo sono una convenzione diffusa perché separano la sintassi SQL dai nomi di tabelle e colonne; il minuscolo è altrettanto valido. Scegline uno per progetto.
- Assegna sempre un alias alle tabelle nelle query con più tabelle e qualifica i nomi delle colonne (
u.idinvece diid). - Non costruire mai l'SQL concatenando input dell'utente. Usa query parametrizzate o prepared statement per prevenire la SQL injection.
- Memorizzi i timestamp come interi? Usa il convertitore timestamp Unix per verificare cosa significa un valore e il generatore UUID per chiavi primarie di prova.
Domande frequenti
La formattazione cambia ciò che fa la mia query?
No. Il formattatore cambia solo spazi, a capo e, se lo scegli, le maiuscole e minuscole delle parole chiave. Identificatori, letterali stringa e logica della query restano invariati.
Il formattatore SQL controlla se la mia query è valida?
Non completamente. Divide la query in token per impaginarla, quindi un input molto errato può produrre un output strano, ma non verifica che tabelle o colonne esistano né che l'istruzione verrebbe eseguita. Per questo usa il tuo database o un EXPLAIN.
Posso formattare più istruzioni insieme?
Sì. Separa le istruzioni con il punto e virgola e ognuna viene formattata separatamente.
Le parole chiave SQL devono essere in maiuscolo?
Le parole chiave SQL non distinguono maiuscole e minuscole in tutti i principali database, quindi è solo una scelta di stile. Il maiuscolo è tradizionale e diffuso nella documentazione; molti team moderni preferiscono il minuscolo. Ciò che conta è la coerenza.
Aggiornato