Come imparare a scrivere una query

Come scrivere una query

Le librerie e il web sono piene di manuali sul linguaggio SQL, molti dei quali estremamente precisi e approfonditi. Io voglio provare ad approcciarmi alla didattica in maniera diversa, non soffermandomi sulla sintassi, ma sul ragionamento necessario per tradurre del linguaggio naturale in una query SQL. Ritengo che la natura dichiarativa dell’SQL richieda un approccio didattico differente rispetto agli altri linguaggi di programmazione.

Negli anni ’70, prima di una disputa legale per ragioni di brevetto, il nome del nostro linguaggio preferito era SEQUEL. Purtroppo la caduta della “E” ha tolto evidenza ad un aspetto molto significativo del nome: la lettera “E” stava per “English” per sottolineare la stretta vicinanza tra l’SQL e la lingua inglese parlata nel quotidiano.

Come parliamo e come programmiamo?

Nel libro Training Kit (Exam 70-461) Querying Microsoft SQL Server 2012 (MCSA) troviamo un esempio chiarificatore: ad un essere umano ci rivolgiamo in modo naturale con una frase del tipo

“Prendi una mela dal frigorifero”.

Se parlassimo ad un robot (o programmassimo in un altro linguaggio) riformuleremmo la frase in questo modo più algoritmico

“Vai al frigorifero e prendi una mela”

in quanto sentiremmo l’esigenza di impartire le istruzioni con un ordine più rigido. Ebbene, la programmazione in Sql ricalca il primo modo di esprimersi, quello tra esseri umani. Quando scriviamo una query SQL dobbiamo specificare prima i nomi delle colonne (all’interno della clausola select) e solo in seguito il nome delle tabelle (nella clausola from). Con un po’ di fantasia, la query esatta sarà

SELECT mela
FROM   frigorifero

invece di una più algoritmica

FROM   frigorifero
SELECT mela

SQL è un linguaggio dichiarativo

L’SQL è un linguaggio di programmazione dichiarativo si concentra su cosa il programma deve fare, senza concentrarsi sul come o sull’algoritmo specifico. Tramite l’SQL chiederemo ad esempio al database di creare una nuova tabella, di estrarre le informazioni da una vista applicando dei filtri e dei raggruppamenti o di modificare il tipo di una colonna. Ma per far ciò non avremo mai bisogno di implementare algoritmi o utilizzare i comuni costrutti della programmazione procedurale come IF, WHILE o FOR.

Facciamo un esempio per rendere più chiara la questione: per estrarre l’elenco dei codici fiscali dei clienti residenti nella regione Lombardia, con un linguaggio procedurale potremmo scrivere un algoritmo del genere:

  • consideriamo la particolare struttura dati contenente le informazioni sui clienti (si potrebbe trattare ad esempio di una lista o un array);
  • tramite un ciclo FOR scansioniamo tutti gli elementi della lista;
  • tramite un IF, consideriamo soltanto i clienti residenti in Lombardia. In quel caso salviamo il codice fiscale in un array di output.

L’approccio dichiarativo è completamente diverso: lo sviluppatore scriverà una semplice query con il linguaggio SQL:

SELECT CodiceFiscale
FROM   Clienti
WHERE  RegioneResidenza =  'Lombardia';

e demanderà al RDBMS (Relational Database Management System) l’onere di tradurre ed eseguire la query.

Primi passi con l’SQL

Partendo da queste premesse, ho creato una video lezione che accompagni il lettore nella scrittura delle prime query in SQL.

Continua a imparare

Torna in alto
Torna su