argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 ·...
TRANSCRIPT
![Page 1: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/1.jpg)
![Page 2: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/2.jpg)
Argomenti della lezione
Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate
![Page 3: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/3.jpg)
Nome Età
Persone
Reddito Andrea 27
Maria 55 Anna 50
Filippo 26 Luigi 50
Franco 60 Olga 30
Sergio 85 Luisa 75
Aldo 25 21
42 35 30 40 20 41 35 87
15
Madre Maternità Figlio Luisa
Anna Anna Maria Maria
Luisa Maria
Olga Filippo Andrea
Aldo
Luigi
Padre Paternità Figlio
Luigi Luigi
Franco Franco
Sergio Olga
Filippo Andrea
Aldo
Franco
![Page 4: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/4.jpg)
Join esplicito
Padre e madre di ogni persona
paternita JOIN maternita
PROJFiglio,Padre,Madre(paternita JOIN Figlio = Nome
RENNome Figlio(maternita))
![Page 5: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/5.jpg)
select paternita.figlio, padre, madre from maternita, paternita where maternita.figlio = paternita.figlio
select paternita.figlio, padre, madre from maternita join paternita
on maternita.figlio = paternita.figlio
select paternita.figlio, padre, madre from maternita natural join paternita
![Page 6: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/6.jpg)
select paternita.figlio, padre, madre from maternita join paternita
on maternita.figlio = paternita.figlio
Outer join
select paternita.figlio, padre, madre from maternita left join paternita
on maternita.figlio = paternita.figlio
select paternita.figlio, padre, madre from maternita full join paternita
on maternita.figlio = paternita.figlio
![Page 7: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/7.jpg)
Ordinamento del risultato Nome e reddito delle persone con
meno di trenta anni in ordine alfabetico
select nome, reddito from persone where eta < 30 order by nome
![Page 8: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/8.jpg)
Persone
Nome Reddito Andrea 21
Aldo 15 Filippo 30
Persone
Nome Reddito
Andrea 21 Aldo 15
Filippo 30
select nome, reddito
from persone where eta < 30
select nome, reddito
from persone where eta < 30 order by nome
![Page 9: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/9.jpg)
Operatori aggregati
Il numero di figli di Franco
select count(*) AS NumFigliDiFranco
from Paternita where Padre = 'Franco'
![Page 10: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/10.jpg)
Padre Paternità Figlio
Luigi Luigi
Sergio Olga
Filippo Franco Franco
Andrea Aldo
Franco
Franco Franco
Andrea Aldo
NumFigliDiFranco 2
![Page 11: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/11.jpg)
Il numero di figli di ciascun padre
select Padre, count(*) AS NumFigli from Paternita group by Padre
![Page 12: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/12.jpg)
Padre Paternità Figlio
Luigi Luigi
Sergio Olga
Filippo Franco Franco
Andrea Aldo
Franco
Padre NumFigli
Luigi Sergio
2 Franco 2
1
![Page 13: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/13.jpg)
Altri operatori aggregati
Somma: SUM Media: AVG Massimo: MAX Minimo: MIN
![Page 14: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/14.jpg)
Unione
La select da sola non permette di fare unioni; serve un costrutto esplicito:
SELECT … UNION SELECT ...
![Page 15: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/15.jpg)
Notazione posizionale!
select padre from paternita union select madre from maternita
quali nomi per gli attributi del risultato?
![Page 16: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/16.jpg)
Luisa
Anna Anna Maria Maria
Luisa Maria
Olga Filippo Andrea
Aldo
Luigi
Figlio
Luigi Luigi
Franco Franco
Sergio Olga
Filippo Andrea
Aldo
Franco
Luisa
Anna Anna Maria Maria
Luisa Maria
Olga Filippo Andrea
Aldo
Luigi
Padre Figlio
Luigi Luigi
Franco Franco
Sergio Olga
Filippo Andrea
Aldo
Franco
![Page 17: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/17.jpg)
Notazione posizionale
select padre, figlio from paternita union select figlio, madre from maternita
select padre, figlio from paternita union select madre, figlio from maternita
![Page 18: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/18.jpg)
select padre as genitore, figlio from paternita union select madre as genitore, figlio from maternita
![Page 19: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/19.jpg)
Interrogazioni nidificate
le condizioni atomiche permettono anche il confronto fra un attributo e il
risultato di una sottointerrogazione quantificazioni esistenziali
![Page 20: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/20.jpg)
nome e reddito del padre di Mario
select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Mario'
![Page 21: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/21.jpg)
nome e reddito del padre di Mario
select Nome, Reddito from Persone where Nome = (select Padre from Paternita where Figlio = 'Mario')
![Page 22: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/22.jpg)
Nome e reddito dei padri di persone che guadagnano più di 20 milioni
select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20
![Page 23: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/23.jpg)
Nome e reddito dei padri di persone che guadagnano più di 20 milioni
select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio =any (select Nome from Persone where Reddito > 20))
![Page 24: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/24.jpg)
Le persone che hanno almeno un figlio
select * from Persone where exists ( select * from Paternita where Padre = Nome) or exists ( select * from Maternita where Madre = Nome)
![Page 25: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/25.jpg)
Quantificazione esistenziale
possiamo avere condizioni del tipo: EXISTS ( Sottoespressione )
![Page 26: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/26.jpg)
I padri i cui figli guadagnano tutti più di venti milioni
select distinct Padre from Paternita Z where not exists (
select * from Paternita W, Persone where W.Padre = Z.Padre
and W.Figlio = Nome and Reddito <= 20)
![Page 27: Argomenti della lezionescienzepolitiche.unical.it/bacheca/archivio/materiale/... · 2017-11-15 · Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join](https://reader033.vdocumenti.com/reader033/viewer/2022050506/5f97ed16a8335102db65dd9c/html5/thumbnails/27.jpg)
Argomenti della lezione
Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate