Formattazione SQL

Aggiunge rientri e andate a capo alle istruzioni SQL per renderle leggibili. Utile nella messa a punto di interrogazioni lunghe e complesse, nella revisione del codice e nella documentazione.

Prima della formattazione

Dopo la formattazione

Che cos'è un formattatore SQL?

Una lunga istruzione SQL compressa su una sola riga non rivela nulla della propria struttura. Questo strumento inserisce a capo intorno a parole chiave come SELECT, FROM, WHERE e JOIN e indenta le sottoquery annidate, così che la forma dell'istruzione diventi seguibile con l'occhio. La formattazione non cambia mai il significato.

Il dialetto scelto influisce sul risultato. MySQL, PostgreSQL, Oracle e SQL Server hanno ciascuno una sintassi propria: scegliete quello corrispondente al database che usate. Tenete inoltre presente che un SQL con un errore di sintassi non può essere analizzato correttamente e può tornare non formattato — in quel caso verificate prima la validità dell'SQL stesso.

Passaggi per formattare l'SQL

  1. Incollate il vostro SQL Incollate nel campo l'SQL da formattare. Separando le istruzioni con punti e virgola, potete elaborarne più di una insieme.
  2. Scegliete il dialetto Selezionate quello corrispondente al database in uso. Se non ne siete certi, l'SQL standard formatta comunque la grande maggioranza delle sintassi.
  3. Impostate indentazione e maiuscole Adattate l'ampiezza dell'indentazione alla convenzione del vostro team. Attivando le maiuscole, le parole chiave si allineano e l'istruzione si legge meglio.
  4. Formattate e controllate il risultato Premete « Formatta » e il risultato compare, pronto per essere incollato direttamente in una revisione del codice o in una specifica.

Consigli per sfruttarlo al meglio

  • Le parole chiave dell'SQL come SELECT, FROM, WHERE e JOIN sono mandate a capo e allineate automaticamente, e anche le sottointerrogazioni annidate ricevono il rientro appropriato.
  • Attivando la conversione in maiuscolo, le parole chiave sono automaticamente rese in maiuscolo e la leggibilità migliora.
  • Regolando l'ampiezza del rientro potete adattare la formattazione alle convenzioni di scrittura della vostra squadra.
  • Incollare l'SQL formattato in una revisione del codice o in un documento di specifiche lo rende assai più leggibile.
  • Sono previsti i principali dialetti SQL: MySQL, PostgreSQL, Oracle e altri.

Quando un formattatore SQL torna utile

Decifrare un SQL che vi è stato consegnato

Formattate un'istruzione su una riga estratta da un log o dal sorgente di un'applicazione e la struttura delle condizioni di join e di filtro diventa chiara a colpo d'occhio.

Fare ordine prima di una revisione del codice

Consegnandolo con l'indentazione già allineata, chi revisiona può concentrarsi sulla logica anziché sull'impaginazione. Anche il diff si legge più facilmente.

Inserire SQL in una specifica

Incollate SQL formattato in un documento e chi legge potrà seguire la struttura. Insieme alle maiuscole, si legge bene anche su carta.

Analizzare la forma di una query lenta

Poiché vedete la profondità delle sottoquery e il numero di join, potete formulare un'ipotesi prima ancora di leggere il piano di esecuzione.

I termini dell'SQL spiegati

Dialetto SQL
Le differenze di sintassi tra i prodotti di database. Ciascun prodotto aggiunge estensioni proprie all'SQL standard: da qui l'importanza della scelta in fase di formattazione.
Sottoquery
Una query scritta annidata all'interno di un'altra istruzione SQL. Più scende in profondità, più diventa difficile da leggere: è proprio lì che l'indentazione rende di più.
JOIN
La sintassi che recupera dati collegando più tabelle. Le condizioni di join tendono ad allungarsi, quindi la posizione degli a capo governa la leggibilità.
Istruzione preparata
Un approccio che costruisce la query inserendo i valori in un secondo momento. È il fondamento di ogni difesa contro l'SQL injection.
SQL injection
Un attacco che mescola frammenti di SQL nei valori inseriti per far eseguire una query non voluta. Costruire l'SQL per concatenazione di stringhe lo agevola.
Stored procedure
Una sequenza di elaborazioni conservata sul lato database. Contenendo sintassi di controllo, può ricadere fuori da ciò che la formattazione copre.

Domande frequenti

Oltre all'SQL standard, sono previsti MySQL, PostgreSQL, Oracle con PL/SQL e SQL Server con T-SQL. Scegliendo dall'elenco il dialetto della base di dati che usate, anche la sintassi specifica sarà formattata correttamente.

Se l'SQL inserito contiene un errore di sintassi, il formattatore può non riuscire ad analizzarlo. Verificate con il vostro programma cliente che l'istruzione sia sintatticamente valida.

Incollando più istruzioni separate da punto e virgola, saranno formattate tutte insieme. La sintassi a blocchi delle procedure memorizzate e di PL/SQL, però, può non essere pienamente gestita.
Tool-kun

A proposito — cinquant'anni di SQL e la storia delle basi di dati relazionali

SQL nasce dal modello relazionale proposto nel 1970 da Edgar F. Codd in un articolo pubblicato mentre lavorava presso IBM, che sviluppò poi il linguaggio con il nome di «SEQUEL», mutato in SQL per ragioni di marchio. Standardizzato dall'ente statunitense di normazione nel 1986, è un linguaggio di straordinaria longevità, tuttora usato da innumerevoli basi di dati.

Fra gli episodi di sicurezza più celebri figura l'iniezione di SQL. Nella violazione della rete di gioco di Sony del 2011 furono sottratti i dati personali di oltre cento milioni di persone e il danno fu stimato in 171 milioni di dollari. Ancora oggi la vulnerabilità compare stabilmente nella classifica dei dieci principali rischi delle applicazioni web e la contromisura fondamentale resta l'uso delle istruzioni preparate.

La clausola «WHERE 1=1» è una comoda tecnica per costruire interrogazioni dinamiche, ma è anche l'esempio tipico dell'iniezione di SQL: inserire in un modulo di accesso la stringa ' OR '1'='1 permetteva di entrare senza parola d'ordine. Quella vulnerabilità classica è tuttora un materiale didattico d'obbligo nei corsi di sicurezza.