Esercizi di riepilogo su Linguaggi di Data Querying
3 Novembre 2020
Dato il seguente database relazionale, che modella dati relativi a squadre di calcio:
SQUADRA(Nome, Città, CapienzaStadio)
GIOCATORE(Codice, Nome, Cognome, AnnoNascita) ROSA(CodiceGiocatore, NomeSquadra, Anno, Ingaggio) Con vincoli di integrità referenziale:
ROSA.CodiceGiocatore à GIOCATORE.Codice ROSA.NomeSquadra à GIOCATORE.Nome Si assumono le seguenti cardinalità:
SQUADRA à 20 righe GIOCATORE à 50 righe ROSA à 200 righe ESERCIZIO A
Indicare numero di righe/colonne (valore esatto o intervallo [min:max]) prodotto dalle query seguenti:
1) SELECT * FROM SQUADRA
WHERE (Nome=”Inter”)
2) SELECT Nome, count(*) FROM SQUADRA
GROUP BY Nome
3) SELECT *
FROM SQUADRA, ROSA
4) SELECT *
FROM GIOCATORE, ROSA
WHERE (Codice=CodiceGiocatore)
5) SELECT Codice, count(*) FROM GIOCATORE, ROSA
WHERE ((Codice=CodiceGiocatore) AND (Anno=2020)) GROUP BY Codice
6) SELECT Codice FROM GIOCATORE INTERCEPT
SELECT CodiceGiocatore FROM ROSA
ESERCIZIO B
1) Riscrivere la query usando il costrutto EXISTS.
SELECT Nome, Cognome FROM GIOCATORE, ROSA
WHERE ((Codice=CodiceGiocatore) AND (NomeSquadra=”Juventus”) AND (Anno=2020))
2) Riscrivere la query evitando l’utilizzo dell’OR.
SELECT Nome FROM SQUADRA
WHERE ((Città=”Torino”) OR (CapienzaStadio>85000))
ESERCIZIO C
1) Costruire la query che restituisce il numero di squadre distinte in cui ha militato Zlatan Ibrahimovic nella sua carriera.
2) Riscrivere la query di cui sopra evitando il join nella clausola FROM.
3) Costruire la query che restituisce i nomi delle squadre che nel 2020 hanno speso meno di 12 mln di euro per il totale degli ingaggi dei propri giocatori.
4) Costruire la query che restituisce codice, nome e cognome dei giocatori che nella loro carriera hanno militato sia nel Milan sia nell’Inter.
ESERCIZIO D
1) Assumendo che ROSA sia una collezione MongoDB, scrivere la query che restituisce i nomi delle squadre in cui ha militato il giocatore con codice 234.
2) Assumendo che ROSA sia una collezione MongoDB, scrivere la query che restituisce i codici dei giocatori che nel 2020 hanno avuto un ingaggio superiore a 3000.