Eserciziario di SQL. Indice. 1 Interrogazioni base: proiezione, selezione e join 2. 2 Interrogazioni nidificate: IN, NOT IN, EXISTS, NOT EXISTS 5

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Eserciziario di SQL. Indice. 1 Interrogazioni base: proiezione, selezione e join 2. 2 Interrogazioni nidificate: IN, NOT IN, EXISTS, NOT EXISTS 5"

Transcript

1 Eserciziario di SQL Indice 1 Interrogazioni base: proiezione, selezione e join 2 2 Interrogazioni nidificate: IN, NOT IN, EXISTS, NOT EXISTS 5 3 Funzioni aggregate e Group by: COUNT(), AVG(), SUM(), MAX() MIN() e GROUP BY 9 4 Uso della correlazione 15 5 Interrogazioni varie 16 1

2 Sono di seguito riportate un insieme di interrogazioni risolte in SQL. Ogni interrogazione è caratterizzata dalle tabelle sulle quali deve essere eseguita, dal testo in linguaggio naturale dell interrogazione e da una o più possibili soluzioni in SQL. In ogni tabella gli attributi sottolineati identificano la chiave primaria della tabella. 1 Interrogazioni base: proiezione, selezione e join Interrogazione 1. Selezionare il nome di tutte le riviste presenti nella base di dati. SELECT NomeR FROM RIVISTA; Interrogazione 2. Selezionare il codice e il nome di tutte le riviste presenti nella base di dati. SELECT CodR, NomeR FROM RIVISTA; Interrogazione 3. Selezionare il nome di tutte le riviste pubblicate dall editore Editore1. SELECT NomeR FROM RIVISTA WHERE Editore= Editore1 ; Interrogazione 4. Selezionare il codice delle riviste che hanno pubblicato almeno 1 articolo. SELECT DISTINCT CodR FROM ARTICOLO; Interrogazione 5. 2

3 Selezionare il codice e il nome delle riviste che hanno pubblicato almeno 1 articolo. SELECT DISTINCT CodR, NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR; Interrogazione 6. Selezionare il codice delle riviste che hanno pubblicato almeno 1 articolo di motociclismo (Argomento= motociclismo ). SELECT DISTINCT CodR FROM ARTICOLO WHERE Argomento= Motociclismo ; Interrogazione 7. Selezionare il codice e il nome delle riviste che hanno pubblicato almeno 1 articolo di motociclismo. SELECT DISTINCT RIVISTA.CodR, NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND Argomento= Motociclismo ; Interrogazione 8. Selezionare il codice e il nome delle riviste che hanno pubblicato almeno 1 articolo di motociclismo oppure di automobilismo. SELECT DISTINCT RIVISTA.CodR, NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND (Argomento= Motociclismo OR Argomento= Automobilismo ); Interrogazione 9. GARA(CodG, Luogo, Data, Disciplina) ATLETA(CodA, Nome, Nazione, DataNascita) PARTECIPAZIONE(CodG, CodA,PosizioneArrivo, Tempo) 3

4 Selezionare il codice e il nome degli atleti italiani che sono giunti primi in almeno una gara di lancio del peso. SELECT DISTINCT A.CodA, Nome FROM ATLETA A, PARTECIPAZIONE P, GARA G WHERE P.CodA=A.CodA AND P.CodG=G.CodG AND Disciplina= lancio del peso AND Nazione= Italia AND PosizioneArrivo=1; Interrogazione 10. STABILIMENTO(CodS, Nome, Indirizzo, Stato) LINEA MONTAGGIO(CodS, NumL, DataInstallazioneLinea) TIPO AUTOVETTURA(CodTA, Nome, NumeroPosti) PRODUZIONE(CodS, NumL, CodTA, NumeroAutovetture) Selezionare i codici delle linee di montaggio presso le quali sono state prodotte almeno autovetture punto. SELECT DISTINCT LM.CodS, LM.NumL FROM LINEA_MONTAGGIO LM, PRODUZIONE P, TIPO_AUTOVETTURA TA WHERE P.CodS=LM.CodS AND P.NumL=LM.NumL AND P.CodTA=TA.CodTA AND P.NumeroAutovetture>=10000 AND TA.Nome= punto ; 4

5 2 Interrogazioni nidificate: IN, NOT IN, EXISTS, NOT EXISTS Interrogazione 1. Selezionare il codice e il nome delle riviste che hanno pubblicato almeno 1 articolo di motociclismo. SELECT CodR, NomeR FROM RIVISTA WHERE CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento= Motociclismo ); Oppure SELECT CodR, NomeR FROM RIVISTA R WHERE EXISTS (SELECT * FROM ARTICOLO A WHERE A.CodR=R.CodR AND Argomento= Motociclismo ); Interrogazione 2. Selezionare il nome delle riviste che hanno pubblicato almeno un articolo di motociclismo e almeno un articolo di automobilismo. SELECT NomeR FROM RIVISTA WHERE CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento= motociclismo ) AND CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento= automobilismo ); Oppure SELECT DISTINCT NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND Argomento= motociclismo AND RIVISTA.CodR IN (SELECT CodR FROM ARTICOLO WHERE Argomento= automobilismo ); Oppure 5

6 SELECT NomeR FROM RIVISTA R WHERE EXISTS (SELECT * FROM ARTICOLO A1 WHERE A1.CodR=R.CodR AND Argomento= motociclismo ) AND EXISTS (SELECT * FROM ARTICOLO A2 WHERE A2.CodR=R.CodR AND Argomento= motociclismo ); Interrogazione 3. STABILIMENTO(CodS, Nome, Indirizzo, Stato) LINEA MONTAGGIO(CodS, NumL, DataInstallazioneLinea) TIPO AUTOVETTURA(CodTA, Nome, NumeroPosti) PRODUZIONE(CodS, NumL, CodTA, NumeroAutovetture) Selezionare i codici delle linee di montaggio presso le quali sono state prodotte almeno autovetture punto e almeno cinquecento. SELECT CodS, NumL FROM LINEA_MONTAGGIO LM WHERE EXISTS (SELECT * FROM PRODUZIONE P, TIPO_AUTOVETTURA TA WHERE P.CodTA=TA.CodTA AND P.NumeroAutovetture>=10000 AND TA.Nome= punto AND P.CodS=LM.CodS AND P.NumL=LM.NumL) AND EXISTS (SELECT * FROM PRODUZIONE P, TIPO_AUTOVETTURA TA WHERE P.CodTA=TA.CodTA AND P.NumeroAutovetture>=20000 AND TA.Nome= cinquecento AND P.CodS=LM.CodS AND P.NumL=LM.NumL); Oppure SELECT CodS, NumL FROM LINEA_MONTAGGIO WHERE (CodS, NumL) IN (SELECT CodS, NumL FROM PRODUZIONE P, TIPO_AUTOVETTURA TA WHERE P.CodTA=TA.CodTA AND P.NumeroAutovetture>=10000 AND TA.Nome= punto ) AND (CodS, NumL) IN 6

7 (SELECT CodS, NumL FROM PRODUZIONE P, TIPO_AUTOVETTURA TA WHERE P.CodTA=TA.CodTA AND P.NumeroAutovetture>=20000 AND TA.Nome= cinquecento ); Interrogazione 4. Selezionare il nome delle riviste che non hanno mai pubblicato articoli di motociclismo. SELECT NomeR FROM RIVISTA WHERE CodR NOT IN (SELECT CodR FROM ARTICOLO WHERE Argomento= motociclismo ); Oppure SELECT NomeR FROM RIVISTA R WHERE NOT EXISTS (SELECT * FROM ARTICOLO A WHERE Argomento= motociclismo AND A.CodR=R.CodR); Interrogazione 5. Selezionare gli editori che non hanno mai pubblicato articoli di motociclismo. SELECT Editore FROM RIVISTA WHERE Editore NOT IN (SELECT Editore FROM ARTICOLO A, RIVISTA R WHERE A.CodR=R.CodR AND Argomento= motociclismo ); Interrogazione 6. Selezionare il nome delle riviste che hanno pubblicato solo articoli di motociclismo. 7

8 SELECT DISTINCT NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND RIVISTA.CodR NOT IN (SELECT CodR FROM ARTICOLO WHERE Argomento<> motociclismo ); Interrogazione 7. ORCHESTRA(CodO, NomeO, NomrDirettore, numelementi) CONCERTI(CodC, Data, CodO, CodS, PrezzoBiglietto) SALE(CodS, NomeS, Città, Capienza) Selezionare il codice e il nome delle orchestre con più di 30 elementi che hanno tenuto concerti sia a Torino, sia a Milano e non hanno mai tenuto concerti a Bologna. SELECT CodO, NomeO FROM ORCHESTRA WHERE NumElementi>30 AND CodO IN (SELECT C1.CodO FROM CONCERTI C1, SALE S1 WHERE C1.CodS=S1.CodS AND S1.Citta= Torino ) AND CodO IN (SELECT C2.CodO FROM CONCERTI C2, SALE S2 WHERE C2.CodS=S2.CodS AND S2.Citta= Milano ) AND CodO NOT IN (SELECT C3.CodO FROM CONCERTI C3, SALE S3 WHERE C3.CodS=S3.CodS AND S3.Citta= Bologna ); 8

9 3 Funzioni aggregate e Group by: COUNT(), AVG(), SUM(), MAX() MIN() e GROUP BY Interrogazione 1. Selezionare il numero di articoli di motociclismo presenti nella base di dati. SELECT COUNT(*) FROM ARTICOLO WHERE Argomento= Motociclismo ; Interrogazione 2. Selezionare il numero di articoli pubblicati sulla rivista D100 (CodR= D100 ). SELECT COUNT(*) FROM ARTICOLO WHERE CodR= D100 ; Interrogazione 3. Selezionare il codice e il numero di articoli pubblicati su ogni rivista. SELECT CodR, COUNT(*) FROM ARTICOLO GROUP BY CodR; Interrogazione 4. Selezionare il codice, il nome e il numero di articoli pubblicati su ogni rivista. SELECT RIVISTA.NomeR, COUNT(*) FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR; GROUP BY RIVISTA.CodR, NomeR; Interrogazione 5. 9

10 Selezionare il nome e il numero di articoli pubblicati su ogni rivista. SELECT NomeR, COUNT(*) FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR; GROUP BY RIVISTA.CodR, NomeR; Interrogazione 6. Selezionare il codice delle riviste che hanno pubblicato almeno due articoli di motociclismo. SELECT CodR FROM ARTICOLO WHERE Argomento= motociclismo GROUP BY CodR HAVING COUNT(*)>1 Interrogazione 7. Selezionare il nome delle riviste che hanno pubblicato almeno due articoli di motociclismo. SELECT NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND Argomento= motociclismo GROUP BY RIVISTA.CodR, NomeR HAVING COUNT(*)>1 Interrogazione 8. Selezionare il codice e il nome delle riviste che hanno pubblicato un articolo, ed uno solo, di motociclismo (possono aver scritto quanti articoli desiderano relativamente ad altri argomenti). SELECT RIVISTA.CodR, NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND Argomento= motociclismo GROUP BY RIVISTA.CodR, NomeR HAVING COUNT(*)=1 10

11 Interrogazione 9. CORSO (CodCorso, NomeC, Anno, Semestre) ORARIO LEZIONI (CodCorso, GiornoSettimana, OraInizio, OraFine, Aula) Selezionare codice corso, nome corso e numero totale di ore di lezione settimanali per i corsi del terzo anno per cui il numero complessivo di ore di lezione settimanali è superiore a 10 e le lezioni sono in più di tre giorni diversi della settimana. SELECT C.CodCorso, C.NomeC, SUM(OraFine-OraInizio) FROM CORSO C, ORARIO_LEZIONI OL WHERE C.CodCorso=OL.CodCorso AND C.Anno = 3 GROUP BY C.Corso, C.NomeC HAVING SUM(OraFine-OraInizio)>10 AND COUNT(DISTINCT GiornoSettimana)>3; Interrogazione 10. GARA(CodG, Luogo, Data, Disciplina) ATLETA(CodA, Nome, Nazione, DataNascita) PARTECIPAZIONE(CodG, CodA,PosizioneArrivo, Tempo) Selezionare le nazioni per cui concorrono almeno 5 atleti nati prima del 1980, ciascuno dei quali abbia partecipato ad almeno 10 gare di sci di fondo. SELECT Nazione FROM ATLETA WHERE DataNascita< 1/1/1980 AND CodA IN (SELECT CodA FROM PARTECIPAZIONE P,GARA G WHERE P.CodG=G.CodG AND Disciplina= fondo GROUP BY CodA HAVING COUNT(*)>=10) GROUP BY Nazione HAVING COUNT(*)>=5; Interrogazione 11. APPARTAMENTO(CodA, Superficie, Indirizzo, Città) CONTRATTO AFFITTO(CodA, DataInizio, DataFine, NomePersona, RettaMensile) Selezionare il nome delle persone che hanno stipulato più di due contratti di affitto per lo stesso appartamento. SELECT NomePersona FROM CONTRATTO_AFFITTO GROUP BY NomePersona,CodA HAVING COUNT(*)>2; 11

12 Interrogazione 12. APPARTAMENTO(CodA, Superficie, Indirizzo, Città) CONTRATTO AFFITTO(CodA, DataInizio, DataFine, NomePersona, RettaMensile) Selezionare il nome delle persone che hanno stipulato più di due contratti di affitto nel corso della stessa data. SELECT NomePersona FROM CONTRATTO_AFFITTO GROUP BY NomePersona,DataInizio HAVING COUNT(*)>2; Interrogazione 13. Selezionare il nome delle riviste che hanno pubblicato un numero di articoli di motociclimo compreso tra 10 e 25. SELECT NomeR FROM RIVISTA, ARTICOLO WHERE RIVISTA.CodR=ARTICOLO.CodR AND Argomento= motociclismo GROUP BY RIVISTA.CodR, NomeR HAVING COUNT(*)>=10 AND COUNT(*)<=25; Interrogazione 14. Selezionare il nome delle riviste che hanno pubblicato almeno 10 articoli di automobilismo e almeno 25 articoli di motociclimo. SELECT NomeR FROM RIVISTA WHERE CodR IN (SELECT CodR ARTICOLO WHERE Argomento= automibilismo GROUP BY CodR HAVING COUNT(*)>=10) AND CodR IN (SELECT CodR ARTICOLO WHERE Argomento= motociclismo GROUP BY CodR HAVING COUNT(*)>=25); Interrogazione

13 QUIZ(CodQuiz, Argomento, Punteggio) STUDENTE(Matricola, Nome, Indirizzo, Città) RISULTATO TEST(Matricola, CodQuiz,RispostaCorretta) Selezionare il nome degli studenti di Torino che hanno conseguito il punteggio massimo possibile nei quiz di matematica. SELECT Nome FROM STUDENTE S, RISULTATO_TEST R, QUIZ Q WHERE Citta= Torino AND R.Matricola=S.Matricola AND R.CodQuiz=Q.CodQuiz AND RispostaCorretta= si AND Argomento= matematica GROUP BY S.Matricola, Nome HAVING SUM(Punteggio)=(SELECT SUM(Punteggio) FROM QUIZ WHERE Argomento= matematica ); Interrogazione 16. RIUNIONE(CodR, Descrizione, DataRiunione) DIPENDENTE(CodD, Nome, Cognome, DataNascita, Città) PARTECIPA RIUNIONE(CodD, CodR) Visualizzare il codice dei dipendenti che hanno partecipato a tutte le riunioni che si sono svolte. SELECT CodD FROM PARTECIPA_RIUNIONE PR WHERE PR.CodR=R.CodR GROUP BY CodD HAVING COUNT(*)=(SELECT COUNT(*) FROM RIUNIONE); Interrogazione 17. RIUNIONE(CodR, Descrizione, DataRiunione) DIPENDENTE(CodD, Nome, Cognome, DataNascita, Città) PARTECIPA RIUNIONE(CodDip, CodR) Visualizzare il codice dei dipendenti che hanno partecipato almeno a tutte le riunioni alle quali ha partecipato il dipendente D100 (CodD= D100 ). SELECT CodD FROM PARTECIPA_RIUNIONE AND CodR IN (SELECT CodR FROM PARTECIPA_RIUNIONE WHERE CodD= D100 ) GROUP BY CodD HAVING COUNT(*)=(SELECT COUNT(*) FROM PARTECIPA_RIUNIONE WHERE CodD= D100 ) 13

14 Interrogazione 18. RIUNIONE(CodR, Descrizione, DataRiunione) DIPENDENTE(CodD, Nome, Cognome, DataNascita, Città) PARTECIPA RIUNIONE(CodDip, CodR) Visualizzare il codice dei dipendenti che hanno partecipato solamente alle riunioni alle quali ha partecipato il dipendente D100 (CodD= D100 ). SELECT CodD FROM DIPENDENTE D WHERE CodD NOT IN (SELECT CodD FROM PARTECIPA_RIUNIONE WHERE CodR NOT IN (SELECT CodR FROM PARTECIPA_RIUNIONE WHERE CodD= D100 )); Interrogazione 19. RIUNIONE(CodR, Descrizione, DataRiunione) DIPENDENTE(CodD, Nome, Cognome, DataNascita, Città) PARTECIPA RIUNIONE(CodDip, CodR) Visualizzare il codice dei dipendenti che hanno partecipato a tutte e sole le riunioni alle quali ha partecipato il dipendente D100 (CodD= D100 ). SELECT CodD FROM PARTECIPA_RIUNIONE AND CodR IN (SELECT CodR FROM PARTECIPA_RIUNIONE WHERE CodD= D100 ) AND CodD NOT IN (SELECT CodD FROM PARTECIPA_RIUNIONE WHERE CodR NOT IN (SELECT CodR FROM PARTECIPA_RIUNIONE WHERE CodD= D100 )) GROUP BY CodD HAVING COUNT(*)=(SELECT COUNT(*) FROM PARTECIPA_RIUNIONE WHERE CodD= D100 ) 14

15 4 Uso della correlazione Interrogazione 1. ALLOGGIO(CodA, Indirizzo,Città,Superficie,CostoAffittoMensile) CONTRATTO-AFFITTO(CodC, DataInizio,DataFine,NomePersona,CodA) Selezionare il codice, l indirizzo e la città degli alloggi che hanno una superficie superiore alla superficie media degli alloggi delle città in cui si trovano. SELECT CodA, Indirizzo, Citta FROM ALLOGGIO A1 WHERE Superficie>(SELECT AVG(Superficie) FROM ALLOGGIO A2 WHERE A2.Citta=A1.Citta); Interrogazione 2. SALA RIUNIONI(CodS, NomeSala, NumeroMaxPosti, Proiettore) PRENOTAZIONE SALA(CodS, Data, OraInizio, OraFine, CodDip) DIPENDENTE(CodDip, Nome, Cognome, DataNascita, Città) Visualizzare per ogni sala che è stata prenotata almeno una volta il codice della sala, il nome della sala e il numero di prenotazioni relativamente all ultima data in cui la sala è stata prenotata. SELECT S.CodS, NomeSala, COUNT(*) FROM SALA_RIUNIONI S, PRENOTAZIONE_SALA P WHERE S.CodS=P.CodS AND P.Data=(SELECT MAX(Data) FROM PRENOTAZIONE_SALA P2 WHERE P2.CodS=S.CodS) GROUP BY S.CodS, NomeSala; Interrogazione 3. PERSONE(CodFisc, Nome, Cognome, Indirizzo, Città) MULTE(IdMulta, CodFisc, DataMulta, Somma) Selezionare il nome e il cognome delle persone per cui il numero di multe ricevute nel 2005 è superiore al numero di multe ricevute nel 2004 dalla persona stessa. SELECT Nome, Cognome FROM PERSONE P, MULTE M WHERE P.CodFisc=M.CodFisc AND DataMulta>= 1/1/2005 AND DataMulta<= 31/12/2005 GROUP BY P.CodFisc, Nome, Cognome HAVING COUNT(*)>(SELECT COUNT(*) FROM MULTE M2 WHERE M2.CodFisc=P.CodFisc AND DataMulta>= 1/1/2004 AND DataMulta<= 31/12/2004 ); 15

16 5 Interrogazioni varie Interrogazione 1. CORSO (CodCorso, NomeC, Anno, Semestre) ORARIO-LEZIONI (CodCorso, GiornoSettimana, OraInizio, OraFine, Aula) Selezionare le aule in cui non si tengono mai lezioni di corsi del primo anno. SELECT DISTINCT Aula FROM ORARIO-LEZIONI WHERE Aula NOT IN (SELECT Aula FROM ORARIO_LEZIONI OL, CORSO C WHERE OL.CodCorso=C.CodCorso AND C.Anno=1); Oppure SELECT DISTINCT Aula FROM ORARIO-LEZIONI OL1 WHERE NOT EXISTS (SELECT * FROM ORARIO-LEZIONI OL2, CORSO C WHERE OL2.CodCorso=C.CodCorso AND C.Anno=1 AND OL2.Aula=OL1.Aula); Interrogazione 2. CORSO (CodCorso, NomeC, Anno, Semestre) ORARIO-LEZIONI (CodCorso, GiornoSettimana, OraInizio, OraFine, Aula) Selezionare codice corso, nome corso e numero totale di ore di lezione settimanali per i corsi del terzo anno per cui il numero complessivo di ore di lezione settimanali è superiore a 10 e le lezioni sono in più di tre giorni diversi della settimana. SELECT C.CodCorso, C.NomeC, SUM(OraFine-OraInizio) FROM CORSO C, ORARIO-LEZIONI OL WHERE C.CodCorso=OL.CodCorso AND C.Anno = 3 GROUP BY C.Corso, C.NomeC HAVING SUM(OraFine-OraInizio)>10 AND COUNT(DISTINCT GiornoSettimana)>3; Interrogazione 3. ALLOGGIO (CodA, Indirizzo, Città, Superficie, CostoAffittoMensile) CONTRATTO-AFFITTO (CodC, DataInizio, DataFine, NomePersona, CodA) N.B. Superficie espressa in metri quadri. Per i contratti in corso, DataFine è NULL. 16

17 Selezionare, per le città in cui sono stati stipulati almeno 100 contratti, la città, il costo mensile massimo degli affitti, il costo mensile medio degli affitti, la durata massima dei contratti, la durata media dei contratti e il numero totale di contratti stipulati. SELECT Citta, MAX(CostoAffittoMensile), AVG(CostoAffittoMensile), MAX(DataFine-DataInizio), AVG(DataFine-DataInizio), COUNT(*) FROM ALLOGGIO A, CONTRATTO-AFFITTO C WHERE A.CodA=C.CodA GROUP BY Citta HAVING COUNT(*)>=100; Interrogazione 4. CLIENTE(Cod-Cli,nome) CONTO(Cod-Conto, saldo, agenzia, stato) CONTO-CLIENTE(Cod-Conto, Cod-Cli) Selezionare tutte le agenzie che hanno almeno un cliente titolare da solo (senza cointestatari) di un unico conto corrente (cliente a cui non è intestato nessun altro conto corrente). SELECT DISTINCT C.Agenzia FROM Conto C, CONTO-CLIENTE CL WHERE C.COD-CONTO=CL.COD-CONTO AND CL.COD-CONTO IN (SELECT COD-CONTO FROM CONTO-CLIENTE GROUP BY COD-CONTO HAVING COUNT(*)=1) AND CL.COD-CLI IN (SELECT COD-CLI FROM CONTO-CLIENTE GROUP BY COD-CLI HAVING COUNT(*)=1); Interrogazione 5. APPARTAMENTO(CodA, Superficie, Indirizzo, Città) CONTRATTO-AFFITTO(CodA, DataInizio, DataFine, NomePersona, RettaMensile) Selezionare il codice e l indirizzo degli appartamenti di Torino in cui la retta mensile è sempre stata superiore a 500 euro e per cui sono stati stipulati al più 5 contratti. SELECT A.CodA,Indirizzo FROM APPARTAMENTO A, CONTRATTO-AFFITTO CA WHERE A.CodA=CA.CodA AND Citta= Torino AND A.CodA NOT IN (SELECT CodA FROM CONTRATTO-AFFITTO WHERE RettaMensile<=500) GROUP BY A.CodA, Indirizzo HAVING COUNT(*)<=5; Oppure 17

18 SELECT A.CodA,Indirizzo FROM APPARTAMENTO A, CONTRATTO-AFFITTO CA WHERE A.CodA=CA.CodA AND Citta= Torino GROUP BY A.CodA, Indirizzo HAVING COUNT(*)<=5 AND MIN(RettaMensile)>500; Interrogazione 6. TEAM MOTOCICLISMO(CodTeam,NomeTeam,Classe,CasaProduttriceMoto) PILOTI(CodP,Nome,Nazionalità,CodTeam) TECNICI(CodTec,Nome,Nazionalità,CodTeam) Il campo CasaProduttriceMoto della tabella TEAM MOTOCICLISMO contiene il nome della casa produttrice che fornisce le motociclette ad ogni team. Ogni casa produttrice può fornire le motociclette a più team. Il campo Classe della tabella TEAM MOTOCICLISMO può assumere i valori: MotoGP, 250 e 125. Selezionare le case produttrici di moto (CasaProduttriceMoto) per cui gareggiano nella classe MotoGP almeno due piloti di nazionalità italiana ma nessun pilota di nazionalità francese. SELECT CasaProduttriceMoto FROM TEAM_MOTOCICLISMO TM, PILOTI P WHERE TM.CodTeam=P.CodTeam AND Classe= MotoGP AND Nazionalita= italiana AND CasaProduttriceMoto NOT IN (SELECT CasaProduttriceMoto FROM TEAM_MOTOCICLISMO TM2, PILOTI P2 WHERE TM2.CodTeam=P2.CodTeam AND Nazionalita= francese AND Classe= MotoGP ) GROUP BY CasaProduttriceMoto HAVING COUNT(*)>=2; Interrogazione 7. TEAM MOTOCICLISMO(CodTeam,NomeTeam,Classe,CasaProduttriceMoto) PILOTI(CodP,Nome,Nazionalità,CodTeam) TECNICI(CodTec,Nome,Nazionalità,CodTeam) Il campo CasaProduttriceMoto della tabella TEAM MOTOCICLISMO contiene il nome della casa produttrice che fornisce le motociclette ad ogni team. Ogni casa produttrice può fornire le motociclette a più team. Il campo Classe della tabella TEAM MOTOCICLISMO può assumere i valori: MotoGP, 250 e 125. Selezionare il nome dei team per cui corrono esattamente 2 piloti di nazionalità italiana e per cui lavorano al massimo 5 tecnici inglesi. SELECT NomeTeam FROM TEAM_MOTOCICLISMO TM, PILOTI P WHERE TM.CodTeam=P.CodTeam AND Nazionalita= italiana 18

19 AND TM.CodTeam NOT IN (SELECT CodTeam FROM TECNICI WHERE Nazionalita= inglese GROUP BY CodTeam HAVING COUNT(*)>5) GROUP BY TM.CodTeam, NomeTeam HAVING COUNT(*)=2; Interrogazione 8. GRANPREMIO(NumGP,Anno,Stato,Città) PILOTA(CodP,Nome,Nazionalità) PARTECIPA(NumGP,Anno,CodP) Selezionare gli anni in cui si sono tenuti gran premi in almeno 15 stati diversi e meno di 2 gran premi in Italia. SELECT Anno FROM GRANPREMIO WHERE Anno NOT IN (SELECT Anno FROM GRANPREMIO WHERE Stato= Italia GROUP BY Anno HAVING COUNT(*)>=2) GROUP BY Anno HAVING COUNT(DISTINCT Stato)>=15; Interrogazione 9. VETTURE(Targa,Modello,DataImmatricolazione) REVISIONE(Targa,DataRev,Esito) Il campo Esito della tabella REVISIONE può assume due soli valori: positivo, negativo. Tra tutte le vetture immatricolate dopo il 31/12/2003, selezionare la targa di quelle vetture che sono state revisionate al massimo una volta. SELECT Targa FROM VETTURE WHERE DataImmatricolazione> 31/12/2003 AND Targa NOT IN (SELECT Targa FROM REVISIONE GROUP BY Targa HAVING COUNT(*)>=2); Interrogazione 10. VETTURE(Targa,Modello,DataImmatricolazione) REVISIONE(Targa,DataRev,Esito) 19

20 Il campo Esito della tabella REVISIONE può assume due soli valori: positivo, negativo. Selezionare la targa delle vetture modello Punto (Modello= Punto ) che sono state revisionate almeno 5 volte e hanno sempre superato la revisione con esito positivo. SELECT R.Targa FROM VETTURE V, REVISIONE R WHERE V.Targa=R.Targa AND Modello= Punto AND Targa NOT IN (SELECT Targa FROM REVISIONE WHERE Esito= negativo ) GROUP BY R.TARGA HAVING COUNT(*)>=5; Interrogazione 11. PERSONA(CodF,Cognome,DataNascita) CAMPO(CodCampo,Coperto) PRENOTAZIONI(CodCampo,Data,OraInizio,OraFine,CodFisc) L attributo Coperto della relazione CAMPO può assumere valore si e no. Selezionare il codice fiscale delle persone che hanno effettuato almeno venti prenotazioni per campi non coperti (Coperto= no ) nel corso dell anno 2004 e almeno trenta prenotazioni per campi non coperti (Coperto= no ) nel corso dell anno SELECT CodFisc FROM PRENOTAZIONI P, CAMPO C WHERE P.CodCampo=C.CodCampo AND Coperto= no AND YEAR(Data)=2004 AND CodFisc IN (SELECT CodFisc FROM PRENOTAZIONI P2, CAMPO C2 WHERE P2.CodCampo=C2.CodCampo AND Coperto= no AND YEAR(Data)=2005 GROUP BY CodFisc HAVING COUNT(*)>=30) GROUP BY CodFisc HAVING COUNT(*)>=20; Interrogazione 12. PERSONA(CodF,Cognome,DataNascita) CAMPO(CodCampo,Coperto) PRENOTAZIONI(CodCampo,Data,OraInizio,OraFine,CodFisc) L attributo Coperto della relazione CAMPO può assumere valore si e no. Selezionare il codice fiscale delle persone che hanno effettuato almeno due prenotazioni per campi non coperti (Coperto= no ) e non hanno mai prenotato campi coperti (Coperto= si ). 20

21 SELECT CodFisc FROM PRENOTAZIONI P, CAMPO C WHERE P.CodCampo=C.CodCampo AND Coperto= no AND CodFisc NOT IN (SELECT CodFisc FROM PRENOTAZIONI P2, CAMPO C2 WHERE P2.CodCampo=C2.CodCampo AND Coperto= si ) GROUP BY CodFisc HAVING COUNT(*)>=2; Interrogazione 13. PERSONA(CodF,Cognome,DataNascita) CAMPO(CodCampo,Coperto) PRENOTAZIONI(CodCampo,Data,OraInizio,OraFine,CodFisc) L attributo Coperto della relazione CAMPO può assumere valore si e no. Selezionare il codice del campo e il numero di prenotazioni fatte nell anno 1981 per tutti i campi che sono stati prenotati da almeno 50 persone diverse nel corso dell anno SELECT CodCampo, COUNT(*) FROM PRENOTAZIONI WHERE Data>= 1/1/1981 AND Data<= 31/12/1981 AND CodCampo IN (SELECT CodCampo FROM PRENOTAZIONI WHERE Data>= 1/1/1980 AND Data<= 31/12/1980 GROUP BY CodCampo HAVING COUNT(DISTINCT CodFisc)>=50) GROUP BY CodCampo; Interrogazione 14. DIPENDENTE(Matr, Nome, Mansione, CodD) DIPARTIMENTO(CodD, NomeD) FERIE(Matr, DataInizio, DurataInGiorni) Selezionare matricola e nome per i dipendenti che hanno effettuato un solo periodo singolo di ferie con durata maggiore della durata media dei periodi singoli di ferie dei dipendenti dello stesso dipartimento con la stessa mansione. SELECT D1.Matr, Nome FROM DIPENDENTE D1, FERIE F1 WHERE F1.Matr=D1.Matr AND F1.DurataInGiorni>(SELECT AVG(DurataInGioni) FROM DIPENDENTE D2, FERIE F2 WHERE F2.Matr=D2.Matr AND D2.CodD=D1.CodD AND D2.Mansione=D1.Mansione) GROUP BY D1.Matr, Nome HAVING COUNT(*)=1; 21

22 Interrogazione 15. DIPENDENTE(Matr, Nome, Mansione, CodD) DIPARTIMENTO(CodD, NomeD) FERIE(Matr, DataInizio, DurataInGiorni) Selezionare il codice dei dipartimenti che non hanno nessun dipendente che ha effettuato complessivamente più di 21 giorni di ferie. SELECT CodD FROM DIPARTIMENTO WHERE CodD NOT IN (SELECT CodD FROM FERIE F, DIPENDENTE D WHERE F.Matr=D.Matr GROUP BY D.Matr, CodD HAVING SUM(DurataInGiorni)>21); Interrogazione 16. MEDICO(Matr, Nome) MEDICINALE(CodM, NomeM) PAZIENTE(CodP, NomeP, DataNascita) PRESCRIZIONE(Matr, CodM, CodP, Data) Selezionare matricola e nome dei medici che hanno prescritto più di una volta lo stesso medicinale alla stessa persona e non hanno mai prescritto Aspirina. SELECT DISTINCT ME.Matr, ME.Nome FROM MEDICO ME, PRESCRIZIONE PR1 WHERE PR1.Matr=ME.Matr AND ME.Matr NOT IN (SELECT Matr FROM PRESCRIZIONE PR2, MEDICINALE MD WHERE PR2.CodM=MD.CodM AND MD.NomeM= Aspirina ) GROUP BY ME.Matr, ME.Nome, PR1.CodM, PR1.CodP HAVING COUNT(*)>1; Interrogazione 17. MEDICO(Matr, Nome) MEDICINALE(CodM, NomeM) PAZIENTE(CodP, NomeP, DataNascita) PRESCRIZIONE(Matr, CodM, CodP, Data) Selezionare codice e nome dei pazienti a cui non sono mai stati prescritti medicinali oppure sono stati prescritti medicinali solo dopo il compimento di 40 anni. 22

23 SELECT CodP, NomeP FROM PAZIENTE WHERE CodP NOT IN (SELECT P.CodP FROM PAZIENTE P, PRESCRIZIONE PR WHERE PR.CodP=P.CodP AND YEARS(PR.Data-P.DataNascita)<40); Interrogazione 18. AEROPORTO(CodA, NomeA, Città, Stato) VOLO(Sigla, CodAPartenza, CodAArrivo, OraPartenza, Durata) Selezionare codice dell aeroporto, nome e numero totale di voli in partenza la cui durata è maggiore rispetto alla durata media dei voli in partenza da aeroporti dello stesso stato. SELECT CodAPartenza, NomeA, COUNT(*) FROM VOLO V1, AEROPORTO A1 WHERE V1.CodAPartenza=A1.CodA AND Durata>(SELECT AVG(Durata) FROM VOLO V2, AEROPORTO A2 WHERE V2.CodAPartenza=A2.CodA AND A2.Stato=A1.Stato) GROUP BY CodAPartenza, NomeA; Interrogazione 19. AEROPORTO(CodA, NomeA, Città, Stato) VOLO(Sigla, CodAPartenza, CodAArrivo, OraPartenza, Durata) Selezionare gli stati che non hanno voli interni (che collegano aeroporti dello stesso stato) con durata maggiore di 2 ore. SELECT Stato FROM AEROPORTO WHERE Stato NOT IN (SELECT A1.Stato FROM VOLO V, AEROPORTO A1, AEROPORTO A2 WHERE Durata>2 AND V.CodAPartenza=A1.CodA AND V.CodAArrivo=A2.CodA AND A1.Stato=A2.Stato); Interrogazione 20. DIPENDENTE(Matr, NomeD) LINGUE-CONOSCIUTE(Matr, Lingua) PROGETTO(CodP, NomeP) LAVORA-IN(Matr, CodP, DataInizio, DataFine, Mansione) Selezionare codice e nome dei progetti in cui lavora almeno un dipendente che conosce due o più lingue e non lavora nessun dipendente che conosce l inglese o lo spagnolo. 23

24 SELECT CodP, NomeP WHERE CodP IN (SELECT LI.CodP FROM LINGUE-CONOSCIUTE LC, LAVORA-IN LI WHERE LC.Matr=LI.Matr GROUP BY LI.CodP, LI.Matr HAVING COUNT(DISTINCT Lingua)>1) AND CodP NOT IN (SELECT CodP FROM LINGUE-CONOSCIUTE LC2, LAVORA-IN LI2 WHERE LC2.Matr=LI2.Matr AND (Lingua= Inglese OR Lingua= Spagnolo )); Interrogazione 21. DIPENDENTE(Matr, NomeD) LINGUE-CONOSCIUTE(Matr, Lingua) PROGETTO(CodP, NomeP) LAVORA-IN(Matr, CodP, DataInizio, DataFine, Mansione) Per i dipendenti che hanno lavorato complessivamente per più di 6 mesi nello stesso progetto, selezionare matricola, nome e numero totale di progetti diversi in cui hanno lavorato. SELECT D.Matr, NomeD, COUNT(DISTINCT CodP) FROM DIPENDENTE D, LAVORA-IN LI WHERE LI.Matr=D.Matr AND D.Matr IN (SELECT Matr FROM LAVORA-IN GROUP BY Matr, CodP HAVING MONTHS(SUM(DataFine-DataInizio))>6) GROUP BY D.Matr, NomeD; 24

Esercizi di Basi di dati - SQL

Esercizi di Basi di dati - SQL Esercizi di Basi di dati - SQL August 28, 2008 1 SQL - Soluzioni Sono di seguito riportate un insieme di interrogazioni risolte in SQL. Ogni interrogazione è caratterizzata dalle tabelle sulle quali deve

Dettagli

Esercizi di SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate)

Esercizi di SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate) Esercizi di SQL È riportato di seguito un insieme di interrogazioni risolte in SQL. Ogni interrogazione è caratterizzata dallo schema relazionale sul quale deve essere eseguita, dal testo in linguaggio

Dettagli

Esercizi di SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate)

Esercizi di SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate) Esercizi di SQL È riportato di seguito un insieme di interrogazioni risolte in SQL. Ogni interrogazione è caratterizzata dallo schema relazionale sul quale deve essere eseguita, dal testo in linguaggio

Dettagli

Esercizi di SQL. È riportato di seguito un insieme di esercizi risolti in SQL. Per ogni esercizio una o più soluzioni equivalenti sono presentate.

Esercizi di SQL. È riportato di seguito un insieme di esercizi risolti in SQL. Per ogni esercizio una o più soluzioni equivalenti sono presentate. Esercizi di SQL È riportato di seguito un insieme di esercizi risolti in SQL. Per ogni esercizio una o più soluzioni equivalenti sono presentate. Esercizio 1. PERSONE(CodFisc, Nome, Cognome, Indirizzo,

Dettagli

Basi di Dati Temi d esame svolti (SQL)

Basi di Dati Temi d esame svolti (SQL) Basi di Dati Temi d esame svolti (SQL) Silvia Chiusano e Paolo Garza 9 Ottobre 2003 1 Testo degli esercizi Vengono di seguito riportati i riferimenti ad alcuni esercizi di SQL presi da vecchi temi d esame.

Dettagli

SQL: Esercizi. ORCHESTRA(CodO, NomeO, NomeDirettore, numelementi) CONCERTI(CodC, Data, CodO, CodS, PrezzoBiglietto) SALE(CodS, NomeS, Citta, Capienza)

SQL: Esercizi. ORCHESTRA(CodO, NomeO, NomeDirettore, numelementi) CONCERTI(CodC, Data, CodO, CodS, PrezzoBiglietto) SALE(CodS, NomeS, Citta, Capienza) 1 SQL: Esercizi D B M G SQL: Esercizi Esercizio #1 ORCHESTRA(CodO, NomeO, NomeDirettore, numelementi) CONCERTI(CodC, Data, CodO, CodS, PrezzoBiglietto) SALE(CodS, NomeS, Citta, Capienza) Trovare il codice

Dettagli

Basi di Dati. Esercizi di SQL (2) - Soluzioni

Basi di Dati. Esercizi di SQL (2) - Soluzioni Basi di Dati Esercizi di SQL (2) - Soluzioni 1. 15 febbraio 2001. CORSO (CodCorso, NomeC, Anno, Semestre) ORARIO-LEZIONI (CodCorso, GiornoSettimana, OraInizio, OraFine, Aula) (a) Trovare le aule in cui

Dettagli

Fondamenti di Informatica A.A. 2017/18

Fondamenti di Informatica A.A. 2017/18 Fondamenti di Informatica R i p a s s o A rgo m e nt i B a s i d i D at i P ro f. C h r i st i a n E s p o s i to C o rs o d i L a u re a i n I n g e g n e r i a M e c ca n i ca e G e st i o n a l e (

Dettagli

Esercizi proposti su algebra relazionale. Laura Farinetti - DAUIN Politecnico di Torino

Esercizi proposti su algebra relazionale. Laura Farinetti - DAUIN Politecnico di Torino Esercizi proposti su algebra relazionale Laura Farinetti - DAUIN Politecnico di Torino Esercizio 1 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) RIVISTA

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica S i m u l a z i o n e Te r za P rova Inte rco rs o P ro f. C h r i st i a n E s p o s i to C o rs o d i L a u re a i n I n g e g n e r i a M e c ca n i ca e G e st i o n a l e

Dettagli

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) Esercizi proposti su SQL - SELECT avanzata Laura Farinetti - DAUIN Politecnico di Torino Esercizio 3 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) Trovare

Dettagli

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) Esercizi proposti su SQL SELECT base Laura Farinetti - DAUIN Politecnico di Torino Esercizio 1 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) RIVISTA (CodR,

Dettagli

Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) Esercizio 1 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) CAMPEGGIO (CodC, NomeC, Indirizzo, Comune, Stato) PIAZZOLA (NumeroP, CodC, Posizione, TipoPiazzola)

Dettagli

Esercizi proposti su SQL - SELECT avanzata. Laura Farinetti - DAUIN Politecnico di Torino

Esercizi proposti su SQL - SELECT avanzata. Laura Farinetti - DAUIN Politecnico di Torino Esercizi proposti su SQL - SELECT avanzata Laura Farinetti - DAUIN Politecnico di Torino Esercizio 1 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) FILM

Dettagli

S Q L E S E R C I Z I

S Q L E S E R C I Z I S Q L E S E R C I Z I 1. Sia dato il seguente schema relazionale: GIOCATORE(CodGiocatore, Nome, RuoloIdeale) SQUADRA(CodSquadra, Nome, Citt`a) GIOCA IN(CodGiocatore,CodSquadra, Anno, Ruolo) (a) Visualizzare

Dettagli

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL Basi di Dati DBDMG - Politecnico di Torino Esercizio 1. Dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate): esprimere in SQL le seguenti interrogazioni: RIVISTA

Dettagli

Esercizi proposti su SQL SELECT base. Laura Farinetti - DAUIN Politecnico di Torino

Esercizi proposti su SQL SELECT base. Laura Farinetti - DAUIN Politecnico di Torino Esercizi proposti su SQL SELECT base Laura Farinetti - DAUIN Politecnico di Torino Esercizio 1 Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate) RIVISTA (CodR,

Dettagli

Primo Compitino di Basi di Dati

Primo Compitino di Basi di Dati Primo Compitino di Basi di Dati 19 Aprile 2004 Svolgere gli esercizi direttamente sul foglio del testo Usare fogli aggiuntivi solo in mancanza di spazio. NOME: COGNOME: MATRICOLA: Esercizio Punti previsti

Dettagli

SQL. Esercitazione. Contatti: Dott. Domenico Fabio Savo

SQL. Esercitazione. Contatti: Dott. Domenico Fabio Savo SQL Esercitazione Contatti: Dott. Domenico Fabio Savo domenicofabio.savo@unibg.it Esercizio 1: Treni Esercizio 1: Treni Elenco dei convogli con relativo modello Esercizio 1: Treni Elenco dei convogli con

Dettagli

SQL Esercizi DML Blocco 1

SQL Esercizi DML Blocco 1 SQL Esercizi DML Blocco 1 Si consideri il seguente schema di base di dati che vuole tenere traccia di alcune informazioni riguardanti gli studenti di un'università. Studenti(Matricola, NomeS, CognomeS,

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Sesta parte Interrogazione di una

Dettagli

SQL. Esercitazione 6-7. Contatti: Dott.ssa Silvia Bonfanti

SQL. Esercitazione 6-7. Contatti: Dott.ssa Silvia Bonfanti SQL Esercitazione 6-7 Contatti: Dott.ssa Silvia Bonfanti silvia.bonfanti@unibg.it Esercizio 1: Cinema Sala (numero, num_posti, dim_schermo, num_file, num_posti_per_fila, tipo) Constraints su Sala: tipo=

Dettagli

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Argomenti della lezione SQL Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Maternità Paternità Madre Figlio Olga Filippo Sergio Olga Filippo Persone

Dettagli

Esempi di Query in Algebra Relazionale/8

Esempi di Query in Algebra Relazionale/8 Basi di Dati Prof. Alfredo Cuzzocrea Università degli Studi di Trieste Esempi di Query in Algebra Relazionale/8 Credits to: Dr. L. Farinetti PoliTO Esercizio 1 Sia dato lo schema relazionale costituito

Dettagli

Argomenti della lezione. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Argomenti della lezione. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Argomenti della lezione Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate Maternità Paternità Madre Luisa Luisa Anna Anna Maria Maria Padre Sergio

Dettagli

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple Gestione di basi di dati relazionali con SQL (parte II) Gian Pietro Picco Dipartimento di Elettronica e Informazione Politecnico di Milano, Italy picco@elet.polimi.it http://www.elet.polimi.it/~picco Valutazione

Dettagli

Lezioni di Laboratorio sui Data Base

Lezioni di Laboratorio sui Data Base Lezioni di Laboratorio sui Data Base Informatica per l'impresa Docente Tutor: Dott. Gianluigi Roveda OBIETTIVO: Rivedere come attività di laboratorio le query di tipo select scritte in SQL ma con le variazioni

Dettagli

Operatori aggregati: COUNT

Operatori aggregati: COUNT Operatori aggregati: COUNT Il numero di figli di select count(*) as NumFigliDi where Padre = '' Paternità Padre Sergio Figlio Olga Filippo Andrea Aldo l operatore aggregato (count) viene applicato al risultato

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

Esercizi SQL. Credits Prof. Campi

Esercizi SQL. Credits Prof. Campi Esercizi SQL Credits Prof. Campi 1 Le cose che non vogliamo vedere Target list miste quando non c è la clausola group by Attributi nella select o nella having che non siano anche nella group by (quando

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Query in SQL Anno accademico 2016-2017 Paolo Perlasca Parte di questi lucidi è tratta da una versione precedente di Marco Mesiti, Stefano Valtolina, Daniele Riboni e Sergio

Dettagli

Operatori aggregati: COUNT

Operatori aggregati: COUNT Operatori aggregati: COUNT Il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' l operatore aggregato (count) viene applicato al risultato dell interrogazione:

Dettagli

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a. 2013-2014 Docente: Gigliola Vaglini Docente laboratorio: Francesco Pistolesi Lezione 4 Interrogazioni annidate

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 09/06/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni Domanda 1 Si consideri una base di dati sulle relazioni R 1 (A, B, C) R 2 (D, E, F ) Scrivere interrogazioni in SQL equivalenti alle seguenti

Dettagli

Linguaggio SQL: fondamenti D B M G

Linguaggio SQL: fondamenti D B M G Linguaggio SQL: fondamenti Istruzione SELECT: fondamenti Cenni di algebra relazionale Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2 Algebra relazionale

Dettagli

Basi di Dati e Sistemi Informativi

Basi di Dati e Sistemi Informativi Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Esercizio 1 Scrivere il codice SQL dello schema ARTICOLI Codice

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi

Dettagli

Interrogazioni semplici

Interrogazioni semplici Interrogazioni semplici Lorenzo Sarti 2009 Basi di Dati 1 select Campi considerati Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1967 A80293450 Rossi Andrea 13/04/1968 A80198330 Neri

Dettagli

Structured Query Language

Structured Query Language IL LINGUAGGIO SQL Structured Query Language Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l inserimento, la cancellazione, l aggiornamento dei record di un

Dettagli

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: "outer join"

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: outer join Join esplicito Padre e madre di ogni persona select paternita.figlio,padre, madre, paternita where paternita.figlio = maternita.figlio SELECT con join esplicito, sintassi SELECT FROM Tabella { JOIN Tabella

Dettagli

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007 Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007 La sintassi dei comandi T-SQL non è rigorosa, poiché permette di ottenere lo stesso risultato con diversi combinazioni di argomenti.

Dettagli

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati I Prova di autovalutazione 30 ottobre 2014 Basi di dati I Prova di autovalutazione 3 ottobre 214 La prova verrà discussa in aula, prevedibilmente giovedì 6 novembre. Si consiglia di svolgerlo simulando l esame, sulla carta e senza ausilio di libri

Dettagli

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL Basi di Dati Esercitazione 1: Interrogazioni in SQL DB di riferimento per esempi Consideriamo i seguenti schemi di una base di dati relazionale: PremioProduzione, DataAssunzione) Viene data la seguente

Dettagli

Basi di dati: appello 14/07/06

Basi di dati: appello 14/07/06 Basi di dati: appello 14/07/06 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di un agenzia che affitta appartamenti per vacanze nella città di Varazze. CLIENTE

Dettagli

Vincoli di integrità generici: check

Vincoli di integrità generici: check Lezione 5 Vincoli di integrità e Viste 1 Vincoli di integrità generici: check La clausola check permette di restringere i domini e specificare predicati che devono essere soddisfatti ogni volta che un

Dettagli

QL (Query Language) Alice Pavarani

QL (Query Language) Alice Pavarani QL (Query Language) Alice Pavarani QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione

Dettagli

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

Interrogazioni complesse. SQL avanzato 1

Interrogazioni complesse. SQL avanzato 1 Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio

Dettagli

Compiti d Esame di Basi di Dati e Sistemi Informativi per il CdL in Scienze dei Beni Culturali

Compiti d Esame di Basi di Dati e Sistemi Informativi per il CdL in Scienze dei Beni Culturali Compiti d Esame di Basi di Dati e Sistemi Informativi per il CdL in Scienze dei Beni Culturali Vengono presentate alcune prove scritte relative ad appelli passati. Ogni prova scritta è costituita da due

Dettagli

SQL: le funzioni di aggregazione

SQL: le funzioni di aggregazione SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il

Dettagli

Esempi SQL con Access. Orazio Battaglia

Esempi SQL con Access. Orazio Battaglia con Access Orazio Battaglia Consideriamo la base di dati in figura. 2 Interrogazione 1: Selezioniamo tutti gli impiegati, vogliamo Cognome, Nome e Posizione SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2015/2016 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2015-16.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4 Operazioni sui dati Interrogazioni con operatori aggregati Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico select nome, reddito from persone where eta

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

Basi di dati I Esercizi proposti il 24 ottobre 2016

Basi di dati I Esercizi proposti il 24 ottobre 2016 Basi di dati I Esercizi proposti il 24 ottobre 2016 Domanda 1 Si supponga di voler rappresentare in una base di dati relazionale le informazioni relative al calendario d esami di un dipartimento universitario,

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 5 Raffaella Gentilini 1 / 22 Sommario 1 Gruppi 2 / 22 Raggruppamenti Gruppi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a

Dettagli

Operazioni su insiemi: unione, intersezione e differenza

Operazioni su insiemi: unione, intersezione e differenza Operazioni su insiemi: unione, intersezione e differenza Unione La select da sola non permette di fare unioni; serve un costrutto esplicito: select union [all] select... i duplicati vengono eliminati (a

Dettagli

Select From Where...

Select From Where... Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle

Dettagli

Basi di dati: appello 07/02/06

Basi di dati: appello 07/02/06 Basi di dati: appello 07/02/06 Si consideri il seguente schema di base di dati di una casa editrice: restauro (id_quadro, data, tipo intervento, c.f._restauratore, ora_inizio, ora _fine.) quadro (id, titolo,

Dettagli

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dall esame di tutte le tuple

Dettagli

SQL /10/2016 Basi di dati - SQL 1

SQL /10/2016 Basi di dati - SQL 1 SQL 24-27/10/2016 Basi di dati - SQL 1 Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove parziali

Dettagli

Basi di Dati. Esercitazione SQL. 17 novembre 2011

Basi di Dati. Esercitazione SQL. 17 novembre 2011 Basi di Dati Esercitazione SQL 17 novembre 2011 Esercitazione 2 Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello)

Dettagli

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare informazioni relative ai viaggi di lavoro

Dettagli

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa BASE DI DATI Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste Informatica Umanistica Università di Pisa Corsi T Esami T codice CHAR(3) titolo VARCHAR(20) PK Numeri T corso CHAR(3)

Dettagli

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti Basi di Dati e Sistemi Informativi A 1 COGNOME NOME MATRICOLA PC T AR SQL-DML SQL-DDL DIAG ER Teoria (2 punti Descrivere le modalità di uso integrato tra Trigger e Stored Procedure Spiegare le proprietà

Dettagli

Basi di Dati. S Q L Lezione 4

Basi di Dati. S Q L Lezione 4 Basi di Dati S Q L Lezione 4 Antonio Virdis a.virdis@iet.unipi.it Sommario Espressioni condizionali Query nella SELECT Raggruppamento di tuple Condizioni sui gruppi 2 Esercizio 6 (lezione 3) Indicare nome

Dettagli

Business Intelligence

Business Intelligence Business Intelligence Esercitazione di Laboratorio N. 1 L esercitazione ha come obiettivo l interrogazione di una base di dati relazionale mediante query SQL su un DBMS Oracle XE. Schema logico della basi

Dettagli

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO Patrizio Dazzi a.a. 2017-2018 COMUNICAZIONI Prove in itinere Primo compitino il 6 novembre Secondo compitino il 19 dicembre Homeworks Poche consegne del II

Dettagli

Alessandra Raffaetà. Esercizio: Cinema

Alessandra Raffaetà. Esercizio: Cinema Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema

Dettagli

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema

Dettagli

A.A. 2018/2019. Funzioni di Aggregazione e Raggruppamenti in SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. Funzioni di Aggregazione e Raggruppamenti in SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 Funzioni di Aggregazione e Raggruppamenti in SQL Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Le Funzioni di Aggregazione 1/10 Le funzioni di aggregazione

Dettagli

Linguaggio SQL: fondamenti D B M G

Linguaggio SQL: fondamenti D B M G Linguaggio SQL: fondamenti Istruzione SELECT: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2 Istruzione SELECT: esempio Trovare il codice

Dettagli

D B M G Vincoli d integrità referenziale

D B M G Vincoli d integrità referenziale D B M G Vincoli d integrità referenziale Integrità referenziale: relazione Effettuato da NTes Nome Cognome Indirizzo CodE Descrizione Descrizione della dieta Effettuato da LuogoN Paziente Esame Data Fine

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/ Modelli di Base Dati 8 L aggregazione e il raggruppamento in SQL a.a. 2001/2002 8.1 SQL: le funzioni di aggregazione 8.2 funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della

Dettagli

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi. Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (20%) Lo schema concettuale seguente rappresenta un

Dettagli

Monday, January 24, 2011 SQL

Monday, January 24, 2011 SQL SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

ESERCIZIO 1. B. Estrarre nome, cognome e codice degli utenti che non hanno mai preso in prestito libri di informatica.

ESERCIZIO 1. B. Estrarre nome, cognome e codice degli utenti che non hanno mai preso in prestito libri di informatica. Soluzione esercizi interrogazioni SQL ESERCIZIO 1 UTENTE ( Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO ( Collocazione, CodUtente, DataPrestito, DataRest) COPIA ( Collocazione, ISBN, DataAcq) DATILIBRO

Dettagli

SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali

SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali SQL: Structured Query Language 1 SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali Standard: SQL-84, SQL-89, SQL-92 (o SQL2), SQL:1999 (o SQL3) (ANSI/ISO) SQL-92:

Dettagli

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti. Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti. Cognome: Nome: Matricola: Domanda 1 (20%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo LB (SQL) 5 - Aggregazione e raggruppamento Prerequisiti Conteggio e somma degli elementi di un insieme numerico Massimo, minimo e media di un insieme numerico Ordinamento

Dettagli

Tabelle esempio: Impiegato/Dipartimento

Tabelle esempio: Impiegato/Dipartimento Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (3) Insiemistiche e Nidificate Prof. Alberto Postiglione

Dettagli

Basi di Dati 1 Esercitazione 5 08/01/2013. Matteo Picozzi

Basi di Dati 1 Esercitazione 5 08/01/2013. Matteo Picozzi Basi di Dati 1 Esercitazione 5 08/01/2013 Matteo Picozzi http://home.dei.polimi.it/picozzi {picozzi@elet.polimi.it} proprietà logiche prevalenti su efficienza tenere sulla stessa entità informazioni che

Dettagli

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11 SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2010/11 Operatori aggregati Costituiscono una estensione delle normali interrogazioni SQL (non hanno corrispondenza in

Dettagli

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base Linguaggio SQL: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2007 Politecnico di Torino 1 Istruzione SELECT: esempio Trovare il codice

Dettagli

SQL - Funzioni di gruppo

SQL - Funzioni di gruppo una funzione di gruppo permette di estrarre informazioni da gruppi di tuple di una relazione le funzioni di gruppo si basano su due concetti: partizionamento delle tuple di una relazione in base al valore

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Raggruppamento. Raggruppamento

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Raggruppamento. Raggruppamento INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : SQL (4) GROUPING Atzeni, cap. 4.3.4 DBMS: SQL (4) GROUPING 26 nov 2010 Dia 2 Gli operatori

Dettagli

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005 Basi di Dati Esercitazione SQL 19 maggio 2005 Paolo Papotti Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello) Catalogo

Dettagli

Esercizio 2 (15 punti). Si consideri una base di dati che contiene le informazioni relative a uno zoo, descritte dal seguente schema relazionale:

Esercizio 2 (15 punti). Si consideri una base di dati che contiene le informazioni relative a uno zoo, descritte dal seguente schema relazionale: Esercizio 1 (8 punti). Si vuole realizzare una base di dati per la comunità scientifica di ricerca paleontologica. Si devono memorizzare i dati riguardanti i reperti fossili di vertebrati custoditi in

Dettagli

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S Esercitazione di SQL Corso di Basi di Dati 1. Visualizzare i clienti in ordine alfabetico select * order by nomesocietà 2. Visualizzare i clienti che non hanno il fax where fax is null 3. Selezionare i

Dettagli

PROGETTAZIONE DI DATABASE Linguaggio SQL

PROGETTAZIONE DI DATABASE Linguaggio SQL PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti

Dettagli

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL Testi degli esercizi Si consideri il seguente schema di base di dati. STUDENTE(Matricola, Nome, Cognome, Indirizzo, Città) INSEGNANTE(Matricola, Nome,

Dettagli

Operatori aggregati. Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella

Operatori aggregati. Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella Operatori aggregati Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella e ha come risultato un valore atomico. Count Questo operatore serve per contare le tuple di

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi T Versione elettronica: 04.3.SQL.gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono

Dettagli

Consideriamo lo schema relazionale

Consideriamo lo schema relazionale Andrea Gasparetto Consideriamo lo schema relazionale Sulle stringhe WHERE Expr LIKE pattern Il pattern può contenere caratteri e i simboli speciali % sequenza di 0 o più caratteri qualsiasi _ un carattere

Dettagli