Formattare e indentare una query SQL
- Dashboard
- Documentazione
- API
Perché la formattazione SQL?
La formattazione SQL permette di rendere le query SQL più leggibili e comprensibili per gli sviluppatori e gli amministratori di database. Questo facilita il debug, la code review e l'ottimizzazione delle query. Un SQL ben formattato è essenziale per mantenere la qualità del codice e collaborare efficacemente in un team di sviluppo.
Tipi di query SQL supportate
Questo strumento supporta tutti i tipi di query SQL, incluse le istruzioni SELECT, INSERT, UPDATE, DELETE, così come le istruzioni di creazione e modifica di tabelle (CREATE, ALTER, DROP).
Come formattare query SQL
Nella pagina di formattazione, potete formattare la vostra query SQL incollandola nella zona di testo prevista a tal scopo.
Non appena la query SQL viene sottomessa, sarà formattata e mostrata in una zona di risultato. Se la query è invalida, sarà mostrato un errore con un'indicazione della natura del problema.
Usare l'SQL formattato
Potete copiare l'SQL formattato usando il pulsante di copia previsto a tal scopo. Questo faciliterà l'integrazione delle query SQL nei vostri progetti o report.
Il vostro codice SQL dovrebbe assomigliare a questo:
SELECT u.id, u.name, u.email,
p.product_name, p.price,
o.order_date, o.quantity,
(SELECT SUM(p2.price * o2.quantity)
FROM orders o2
JOIN products p2 ON o2.product_id = p2.id
WHERE o2.user_id = u.id) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id
WHERE u.id IN (
SELECT user_id
FROM orders
WHERE order_date >= '2023-01-01' AND order_date <= '2023-12-31'
GROUP BY user_id
HAVING COUNT(*) > 5
)
AND p.price > 50
ORDER BY u.name ASC, o.order_date DESC
LIMIT 10;
Domande frequenti
Quali dialetti SQL sono supportati: MySQL, PostgreSQL, SQL Server?
Il formattatore riconosce la sintassi SQL standard (ANSI) così come le principali estensioni di MySQL, PostgreSQL, SQL Server (T-SQL), Oracle (PL/SQL) e SQLite. Le parole chiave specifiche di ogni motore (LIMIT di MySQL e PostgreSQL, TOP di SQL Server, RETURNING di PostgreSQL, MERGE) sono indentate correttamente. Le funzioni native proprie di un motore vengono conservate così come sono senza validazione.
Il formattatore gestisce le CTE e le query ricorsive?
Sì. Le CTE (Common Table Expressions) dichiarate con WITH ... AS (...) sono indentate sul loro proprio blocco, e le CTE ricorsive (WITH RECURSIVE) sono riconosciute. Questo rende le query complesse nettamente più leggibili, in particolare le gerarchie (alberi, grafi) e le finestre scorrevoli. Le sottoquery correlate sono anche allineate con il loro scope padre.
Qual è la differenza tra un formattatore SQL e un ottimizzatore di query?
Un formattatore SQL non cambia la semantica della query: si limita a riorganizzare visivamente il codice (a capo, indentazione, maiuscole delle parole chiave). Un ottimizzatore, invece, riscrive la query o suggerisce modifiche (indici mancanti, join da riorganizzare, sottoquery da trasformare in join) per migliorare le performance. Per analizzare il piano di esecuzione, usate EXPLAIN o EXPLAIN ANALYZE a seconda del motore.
I commenti SQL sono preservati?
Sì. I commenti in linea -- commento e i commenti multi-riga /* ... */ sono conservati al loro posto originale. È essenziale per documentare una query complessa o marcare sezioni (TODO, hint per l'ottimizzatore, versione di una migrazione). Se trasmettete la query a un motore che interpreta gli hint commentati (/*+ INDEX(...) */ su Oracle), sono ugualmente preservati.
Perché le parole chiave SQL sono in maiuscolo?
Mettere le parole chiave (SELECT, FROM, WHERE, JOIN) in maiuscolo è una convenzione storica che le distingue visivamente dagli identificatori (nomi di tabella, colonne). Questa pratica facilita la lettura, soprattutto nelle query lunghe. I nomi di tabella e colonna sono invece conservati nella loro maiuscolizzazione originale per rispettare le convenzioni dello schema (in particolare su PostgreSQL dove la maiuscolizzazione è sensibile per gli identificatori quotati).
Il formattatore valida la sintassi SQL?
Il formattatore effettua un'analisi sintattica leggera che rileva gli errori grossolani (parentesi non bilanciate, punto e virgola mancante a fine istruzione, parole chiave incoerenti). Non valida né l'esistenza delle tabelle e colonne, né la conformità a uno schema preciso. Per questo, eseguite la query in modalità EXPLAIN sulla vostra base, o usate un linter dedicato come sqlfluff.
Esempio di richiesta
curl -X POST https://cdrn.fr/api/v1/tools/sql-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Schema di input
| Campo | Tipo | Richiesto | Predefinito |
|---|---|---|---|
input |
text | ✓ | – |
Endpoint
GET https://cdrn.fr/api/v1/tools- elenca tutti gli strumenti disponibiliGET https://cdrn.fr/api/v1/tools/sql-formatter- recupera lo schema di questo strumentoPOST https://cdrn.fr/api/v1/tools/sql-formatter/execute- esegue questo strumento con un payload JSON