Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Corso gestionale informatica, Esercizi di Informatica gestionale

Corso gestionale informatica aiuti

Tipologia: Esercizi

2024/2025

Caricato il 28/02/2026

espoir-kubota
espoir-kubota 🇮🇹

9 documenti

1 / 7

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Basi di Dati
DBDMG - Politecnico di Torino
Esercizi di SQL
Esercizio 1. Dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate):
RIVISTA (CodR, NomeR, Editore)
ARTICOLO (CodA, Titolo, Argomento, CodR)
esprimere in SQL le seguenti interrogazioni:
(a) Trovare il codice e il nome delle riviste che hanno pubblicato almeno un articolo di argomento
’motociclismo’.
SELECT R.CodR, NomeR
FROM RIVISTA R, ARTICOLO A
WHERE R.CodR=A.CodR
AND Argomento=’motociclismo’;
———————————–
SELECT CodR, NomeR
FROM RIVISTA
WHERE CodR IN
(SELECT CodR
FROM ARTICOLO
WHERE Argomento=’motociclismo’);
———————————–
SELECT CodR, NomeR
FROM RIVISTA R
WHERE EXISTS
(SELECT *
FROM ARTICOLO A
WHERE A.CodR = R.CodR
AND Argomento=’motociclismo’);
(b) Trovare il codice e il nome delle riviste che non hanno mai pubblicato articoli di argomento
’motociclismo’.
SELECT CodR, NomeR
FROM RIVISTA
WHERE CodR NOT IN
(SELECT CodR
FROM ARTICOLO
WHERE Argomento=’motociclismo’);
1
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Corso gestionale informatica e più Esercizi in PDF di Informatica gestionale solo su Docsity!

Basi di Dati

DBDMG - Politecnico di Torino

Esercizi di SQL

Esercizio 1. Dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate):

RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) esprimere in SQL le seguenti interrogazioni: (a) Trovare il codice e il nome delle riviste che hanno pubblicato almeno un articolo di argomento ’motociclismo’.

SELECT R.CodR, NomeR FROM RIVISTA R, ARTICOLO A WHERE R.CodR=A.CodR AND Argomento=’motociclismo’;

———————————–

SELECT CodR, NomeR FROM RIVISTA WHERE CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento=’motociclismo’);

———————————–

SELECT CodR, NomeR FROM RIVISTA R WHERE EXISTS (SELECT * FROM ARTICOLO A WHERE A.CodR = R.CodR AND Argomento=’motociclismo’);

(b) Trovare il codice e il nome delle riviste che non hanno mai pubblicato articoli di argomento ’motociclismo’.

SELECT CodR, NomeR FROM RIVISTA WHERE CodR NOT IN (SELECT CodR FROM ARTICOLO WHERE Argomento=’motociclismo’);

SELECT CodR, NomeR FROM RIVISTA R WHERE NOT EXISTS (SELECT * FROM ARTICOLO A WHERE A.CodR = R.CodR AND Argomento=’motociclismo’);

(c) Trovare il codice e il nome delle riviste che hanno pubblicato solo articoli di motociclismo.

SELECT R.CodR, NomeR FROM RIVISTA R, ARTICOLO A WHERE R.CodR = A.CodR AND R.CodR NOT IN (SELECT CodR FROM ARTICOLO WHERE Argomento <> ’motociclismo’);

———————————–

SELECT R.CodR, NomeR FROM RIVISTA R, ARTICOLO A WHERE R.CodR = A.CodR AND NOT EXISTS (SELECT * FROM ARTICOLO A WHERE A2.CodR = R.CodR AND Argomento <> ’motociclismo’);

(d) Trovare il codice e il nome delle riviste che pubblicano articoli di motociclismo oppure di auto.

SELECT R.CodR, NomeR FROM RIVISTA R,ARTICOLO A WHERE R.CodR=A.CodR AND (Argomento=’motociclismo’ OR Argomento=’auto’);

(e) Trovare il codice e il nome delle riviste che pubblicano articoli sia di motociclismo sia di auto.

SELECT R.CodR, NomeR FROM RIVISTA R,ARTICOLO A WHERE R.CodR=A.CodR AND Argomento=’motociclismo’ AND R.CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento=’auto’);

———————————–

(b) Trovare i codici e i nomi dei velisti che hanno prenotato una barca rossa e una verde.

SELECT V.Vid, VNome FROM VELISTI V, PRENOTAZIONI P, BARCHE B WHERE V.Vid = P.Vid AND B.Bid = P.Bid AND Colore=’Rosso’ AND V.Vid IN (SELECT Vid FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND Colore=’Verde’ ); ———————————– SELECT Vid, VNome FROM VELISTI V WHERE Vid IN (SELECT Vid FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND Colore=’Rosso’) AND Vid IN (SELECT Vid FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND Colore=’Verde’ );

(c) Trovare i codici dei velisti che non hanno mai prenotato una barca rossa. SELECT Vid FROM VELISTI V WHERE Vid NOT IN (SELECT Vid FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND Colore=’Rosso’);

(d) Trovare i codici e i nomi dei velisti che non hanno mai prenotato una barca rossa.

SELECT Vid, VNome FROM VELISTI V WHERE Vid NOT IN (SELECT Vid FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND Colore=’Rosso’); ———————————– SELECT Vid, VNome FROM VELISTI V WHERE NOT EXISTS (SELECT * FROM PRENOTAZIONI P, BARCHE B WHERE B.Bid = P.Bid AND V.Vid = P.Vid AND Colore=’Rosso’);

(e) Trovare i codici e i nomi dei velisti che hanno prenotato almeno due barche diverse. SELECT V.Vid, VNome FROM VELISTI V, PRENOTAZIONI P WHERE V.Vid = P.Vid GROUP BY V.Vid, VNome HAVING COUNT(DISTINCT Bid) >= 2; ———————————– SELECT Vid, VNome FROM VELISTI V WHERE Vid IN (SELECT Vid FROM PRENOTAZIONI GROUP BY Vid HAVING COUNT(DISTINCT Bid) >= 2);

(f) Trovare i codici e i nomi dei velisti che hanno prenotato almeno tre barche diverse. SELECT V.Vid, VNome FROM VELISTI V, PRENOTAZIONI P WHERE V.Vid = P.Vid GROUP BY V.Vid, VNome HAVING COUNT(DISTINCT Bid) >= 3; ———————————– SELECT Vid, VNome FROM VELISTI V WHERE Vid IN (SELECT Vid FROM PRENOTAZIONI GROUP BY Vid HAVING COUNT(DISTINCT Bid) >= 3);

(g) Trovare i codici e i nomi dei velisti che hanno effettuato almeno tre prenotazioni.

SELECT V.Vid, VNome FROM VELISTI V, PRENOTAZIONI P WHERE V.Vid = P.Vid GROUP BY V.Vid, VNome HAVING COUNT() >= 3; ———————————– SELECT Vid, VNome FROM VELISTI V WHERE Vid IN (SELECT Vid FROM PRENOTAZIONI GROUP BY Vid HAVING COUNT() >= 3);

(c) Trovare i codici e i nomi dei dipendenti abilitati al volo su almeno due aerei in grado di coprire distanze superiori a 5000 Km e che siano abilitati al volo su qualche Boeing. SELECT D.Did, DNome FROM DIPENDENTE D, CERTIFICATO C, AEREO A WHERE D.Did = C.Did AND C.Aid = A.Aid AND Autonomia > 5000 AND Did IN (SELECT Did FROM CERTIFICATO C, AEREO A WHERE C.Aid = A.Aid AND ANome =’Boeing’) GROUP BY D.Did, DNome HAVING COUNT() >= 2; ———————————– SELECT Did, DNome FROM DIPENDENTE WHERE Did IN (SELECT Did FROM CERTIFICATO C, AEREO A WHERE C.Aid = A.Aid AND Autonomia > 5000 GROUP BY Did HAVING COUNT() >= 2) AND Did IN (SELECT Did FROM CERTIFICATO C, AEREO A WHERE C.Aid = A.Aid AND ANome =’Boeing’);