Come imparare a scrivere una query

Le librerie e il web sono piene di manuali sul linguaggio SQL, molti dei quali estremamente precisi e approfonditi. Noi vogliamo provare ad approcciarci alla didattica in maniera diversa, non soffermandoci sulla sintassi, ma sul ragionamento necessario per tradurre del linguaggio naturale in una query. Riteniamo 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 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

 

Come scrivere con l’SQL

Partendo da queste premesse, abbiamo creato delle presentazioni su SlideShare che accompagnano il lettore nella scrittura delle prime query in SQL. Vi riportiamo in basso la prima presentazione sui costrutti di base Select, From e Where (consigliamo la visualizzazione a schermo intero). Abbiamo cercato di utilizzare i colori per sottolineare come le richieste in linguaggio naturale siano traducibili, senza troppa fatica, in clausole Sql.