Formattatore SQL

RSS

Trasforma SQL lungo e disordinato in query pulite e indentate per MySQL, PostgreSQL, SQL Server, SQLite, BigQuery e altri.

Funziona al 100% nel tuo browser. Nulla di ciò che incolli viene caricato o salvato.
Query SQL
SQL formattato
Pronto.

Come usare il formattatore SQL

  1. Incolla una o più istruzioni SQL nella casella di input.
  2. Seleziona il dialetto che corrisponde al tuo database: SQL standard, MySQL, PostgreSQL, SQL Server (T-SQL), SQLite, MariaDB, BigQuery, Snowflake o Oracle PL/SQL.
  3. Scegli come scrivere le parole chiave: MAIUSCOLO, minuscolo oppure Mantieni per lasciarle come sono scritte.
  4. Imposta l'indentazione.
  5. 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:

DialettoVirgolette degli identificatoriEsempi 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 restituisce id con l'alias name. 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 clausola ON se vuoi mantenere le righe senza corrispondenza.
  • Condizioni AND e OR mescolate senza parentesi. L'operatore AND ha la precedenza su OR, quindi a OR b AND c significa a 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.id invece di id).
  • 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.
Suggerimento: Devi formattare il risultato di una query salvato come JSON? Incollalo nel formattatore e validatore JSON.

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

Copiato negli appunti