Query annidate: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
(22 versioni intermedie di 14 utenti non mostrate)
Riga 1:
{{U|Query|informatica|novembre 2022|commento=sottotipologia trattabile nella voce principale}}
Le '''query annidate''', in [[informatica]], nell'ambito dei [[linguaggio di interrogazione|linguaggi di interrogazione]], rappresentano uno strumento sintattico molto importante per effettuare interrogazioni complesse sui [[database]].
 
Le '''query annidate''', in [[informatica]], nell'ambito dei [[linguaggio di interrogazione|linguaggi di interrogazione]], rappresentano uno strumento sintattico molto importante per effettuare interrogazioni complesse sui [[database]].
L'interrogazione di un [[database]], è una delle operazioni che viene effettuata con maggiore frequenza. '''Un'interrogazione nidificata''' (o subquery) è 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 si possono suddividere in '''subquery''' che restituiscono un solo valore e '''subquery''' che restituiscono un insieme di valori.
 
LIn generale l'interrogazione di un [[database]], è una delle operazioni che viene effettuata con maggiore frequenza. Un'''Un'interrogazione nidificata''' (o subquery) è una [[query]] che sta all'interno di un'altra interrogazione.: Lala [[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 si possono suddividere in '''subquery''' che restituiscono un solo valore e '''subquery''' che restituiscono un insieme di valori.
 
==Descrizione==
Riga 7 ⟶ 9:
Esempio di una '''subquery''' che restituisce un solo valore:
 
<sourcesyntaxhighlight lang="sql">
select *
from Dipendenti
where età>(Select AVG(età)
from Dipendenti)
</syntaxhighlight>
</source>
 
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), però si suppone di avere un [[database]] con all'interno la tabella ''Dipendenti'' con i relativi attributi o campi.
 
Esempio di una '''subquery''' che restituisce un insieme di valori:
 
<sourcesyntaxhighlight lang="sql">
select *
from Studenti
where matricola Not in (Select DISTINCT rif_matricola from Esami)
</syntaxhighlight>
from Esami)
</source>
 
La [[query]] restituisce tutti gli ''Studenti'' che non hanno mai sostenuto un esame, '''la subquery''' invece ricerca tutte le matricole degli '''Studenti''' 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 ===
Riga 37 ⟶ 38:
 
=== Subquery con tabelle derivate ===
Una '''tabella derivata''', è una tabella che viene creata durante l'esecuzione della query esterna, quindi è un semplice result-set, cioè un insieme di tuple (o record) ottenute da una [[query]]. Essa rappresenta un tipo speciale di subquery, posizionata nella clausola '''From''' della [[query]] ed è referenziata tramite un alias.
 
Esempio di una '''subquery''' con tabelle derivate:
 
<sourcesyntaxhighlight lang="sql">
select MAX(tot_salario)
from (select SUM(salario) as tot_salario
from Lavoratori
group by settore) AS temporanea;
</syntaxhighlight>
</source>
 
Questa [[query]], tramite la '''subquery''' nella clausola '''From''', permette di estrapolare dalla tabella ''Lavoratori'' il salario più alto della somma dei salari tra tutti i settori.
 
=== Query a campi incrociati ===
Riga 55 ⟶ 56:
Esempio di una [[query]] a campi incrociati:
 
<sourcesyntaxhighlight lang="sql">
Transform COUNT(*)
select classe
from Studenti
group by classe
 
Pivot sesso
</syntaxhighlight>
</source>
 
Questa [[query]] a campi incrociati permette di contare per ogni classe il numero di ''studenti'' e il numero di ''studentesse''.
Riga 73 ⟶ 74:
 
== Collegamenti esterni ==
*[{{cita web | 1 = http://database.html.it/guide/leggi/40/guida-linguaggio-sql/ | 2 = Guida al linguaggio SQL] | accesso = 17 marzo 2010 | dataarchivio = 11 luglio 2010 | urlarchivio = https://web.archive.org/web/20100711111837/http://database.html.it/guide/leggi/40/guida-linguaggio-sql/ | urlmorto = sì }}
*[http{{cita web|https://www.w3schools.com/sql/sql_intro.asp |SQL Tutorial]}}
 
[[Categoria:Teorie su base dati]]
{{portale|informatica}}
 
[[Categoria:TeorieTeoria sudelle basebasi di dati]]