Query annidate

strumento sintattico per effettuare interrogazioni complesse sui database

Le query annidate,in Informatica,ma soprattutto nei Query language, rappresentano uno strumento sintattico molto importante per effettuare interrogazioni complesse su un Database. L'interrogazione di un Database,è una delle operazioni che viene effettuata con maggiore frequenza. Un'interrogazione nidificata(o subquery),non è altro che una query che sta all'interno di un'altra interrogazione. La query interna, cioè la subquery,passa i risultati alla query esterna che li verifica nella condizione che segue la clausola Where. Esistono vari tipi di subquery,ma principalmente possiamo suddividerle in subquery che restituiscono un solo valore,e subquery che restituiscono un insieme di valori.

Esempio di una subquery che restituisce un solo valore:

select * 
from Dipendenti 
where età>(Select AVG(età) 
from Dipendenti)

La query restituisce tutti i Dipendenti la cui età supera l'età media di tutti i dipendenti. Il compito di andare a calcolare questa media è svolto dalla query interna(subquery),ma si suppone di avere un Database con all'interno la tabella Dipendenti con i relativi attributi.

Esempio di una subquery che restituisce un insieme di valori:

select * 
from Studenti
where matricola Not in(Select DISTINCT rif_matricola
from Esami)

La query restituisce tutti gli Studenti che non hanno mai sostenuto un esame,la subquery invece ricerca tutte le matricole che hanno sostenuto almeno un esame. La clausola Distinct permette di eliminare la ripetizione delle matricole degli Studenti che hanno sostenuto più di un esame.

Gli operatori aggregati

Gli operatori aggregati(o funzioni di aggregazione),sono di fondamentale importanza per effettuare subquery complesse. Questi operatori si caratterizzano per il fatto di restituire un valore in corrispondenza di un gruppo di valori o dei valori che formano una colonna di una tabella contenuta in un Database. Nella maggior parte dei Query language, tra cui SQL, i più importanti sono:

  • COUNT() per contare i record;
  • SUM() per sommare i valori della colonna prescelta;
  • AVG() per calcolare la media aritmetica dell'attributo numerico prescelto;
  • MAX() per ottenere il valore massimo dell'attributo numerico prescelto;
  • MIN() per ottenere il valore minimo dell'attributo numerico prescelto.

Query a campi incrociati

Le query a campi incrociati permettono di calcolare una somma,una media,un conteggio o altri tipi di operazioni di aggregazione su alcuni attributi. Occorre specificare che questo tipo di interrogazione non è presente in MySQL,ma è presente invece nel linguaggio SQL per Access. Le query a campi incrociati permettono di raggruppare le tuple in base a due campi: il primo rappresenterà le colonne delle tuple risultato,mentre il secondo rappresenterà le righe.

Esempio di una query a campi incrociati:

transform 
select classe
from Studenti
group by classe
pivot sesso

Voci correlate