Concetti Chiave
- Il comando Select consente di scrivere interrogazioni SQL in modo sintetico, ma può diventare complesso e difficile da interpretare.
- È possibile utilizzare la clausola Into per salvare i risultati parziali in tabelle temporanee, semplificando così le interrogazioni annidate.
- Le tabelle temporanee create possono essere eliminate con il comando Droptable, una volta terminate le elaborazioni necessarie.
- Le clausole del comando Select devono essere utilizzate in un ordine specifico per garantire la corretta esecuzione delle query.
- L'esercizio d'esempio mostra come calcolare la media dei voti degli studenti di Informatica solo se esistono studenti iscritti a quella specializzazione.
Il comando Select permette di essere molto sintetici nella scrittura delle interrogazioni,con interrogazioni annidate anche su più di due livelli,tuttavia il rischi che si corre e quello di ottenere istruzioni SQL troppo complesse e di difficile interpretazione. A questo proposito,ricordo che è possibile salvare in tabelle temporanee i risultati parziali di un'elaborazione grazie alla clausola Into, che va specificata dopo aver elencato glia attributi della Select. In questo modo,risultati di elaborazioni parziali possono essere raccolti in tabelle temporanee che potranno poi essere utilizzate come tabelle di ingresso per elaborazioni successive,limitandocisi la scrittura di interrogazioni annidate molto complesse. Le tabelle temporanee possono poi esse eliminate con il comando Droptable.
Per finire ricordiamo che le clausole che costituiscono il comando Select che se utilizzate devono comparire nel seguente ordine.
SELECT attributi per il taglio verticale
FROM tabelle coinvolte
WHERE condizioni di giunzione e di taglio orizzontale
GROUP BY attributi per il raggruppamento
HAVING condizioni di taglio orizzontale sui gruppi
ORDER BY attributi per l'ordinamento
Esercizio generico.
Visualizzare la media dei voti degli studenti di Informatica solo se esistono studenti iscritti a quella specializzazione:
SELECT AVG (Voto) AS MediaVotiInformatica
FROM Stundenti,Valutazioni,Classi.
WHERE Studenti.Matricola = Valutazioni.Matricola
AND Studenti.CodiceClasse = Classi.CodiceClasse AND Specializzazione = “Informatica”
AND EXISTS
(SELECT *
FROM Studenti, Classi
WHERE Studenti.CodiceClasse = Classi.CodiceClasse
AND Specializzazione = “Informatica”);