La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:

Presentazioni simili


Presentazione sul tema: "Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:"— Transcript della presentazione:

1 Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:

2 Esercizio 1 Scrivere il codice SQL dello schema CodiceAutoreConferenzaAnnoFormatoPagine ARTICOLI Autore deve essere sempre definito. Conferenza e una stringa di lunghezza max 8. Formato e una stringa di lunghezza 3. Il numero di pagine deve essere sempre maggiore di 0, nel caso di omissione si assume pari ad 1.

3 Esercizio 1 CREATE TABLE ARTICOLI ( CODICE SMALLINT PRIMARY KEY, AUTORE VARCHAR(20) NOT NULL, CONFERENZA CHAR(8), FORMATO CHAR(3), ANNO DATE, PAGINE SMALLINT DEFAULT 1 CHECK (PAGINE>0) );

4 Esercizio 1 Scrivere il codice SQL dello schema NomeDataOrganizzatoreNumPartecipanti CONFERENZE Vincolo di integrita: ARTICOLO.{Conferenza, Data} CONFERENZA.{Nome, Data} Rimuovendo una conferenza da CONFERENZE, vengono rimossi anche gli articoli corrispondenti

5 Esercizio 1 CREATE TABLE CONFERENZE ( NOME VARCHAR(8), DATA DATE, ORGANIZZATORE VARCHAR(20), NUMPARTECIPANTI INTEGER CHECK (NUMPARTECIPANTI>0), PRIMARY KEY(NOME,DATA) );

6 Esercizio 1 CREATE TABLE ARTICOLI ( CODICE SMALLINT PRIMARY KEY, AUTORE VARCHAR(20) NOT NULL, CONFERENZA CHAR(8), FORMATO CHAR(3), DATA DATE, PAGINE SMALLINT DEFAULT 1 CHECK (PAGINE>1) FOREIGN KEY (CONFERENZA,DATA) REFERENCES CONFERENZE(NOME, DATA) ON DELETE CASCADE );

7 Esercizio 1 Scrivere il codice SQL dello schema NomeConfDataConfNomeCognomeRuolo PARTECIPANTE Vincolo di integrita: PARTECIPANTE.{NomeConf, DataConf} CONFERENZA.{Nome, Data} Ogni aggiornamento di {Nome, Data} nella relazione CONFERENZA viene propagato anche alla relazione PARTECIPANTE.

8 Esercizio 1 CREATE TABLE PARTECIPANTE ( NOMECONF CHAR(8), DATACONF DATE, NOME VARCHAR(20), COGNOME VARCHAR(30), RUOLO CHARACTER(3), PRIMARY KEY (NOMECONF,DATACONF, NOME, COGNOME) FOREIGN KEY (NOMECONF,DATACONF) REFERENCES CONFERENZE(NOME, DATA) ON UPDATE CASCADE );

9 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 0.Nomi e cognomi di Atleti della societa Borgorosso.

10 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: SELECT NOME, COGNOME FROM ATLETA WHERE (SOCIETA=Borgorosso)

11 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 1. Le righe della tabella ATLETA che si riferiscono ad atleti il cui nome inizia per M oppure non e specificato.

12 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 1. Le righe della tabella ATLETA che si riferiscono ad atleti il cui nome inizia per M oppure non e specificato.

13 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT * FROM ATLETA WHERE ((Nome LIKE M%) OR (Nome IS NULL))

14 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 2. Tutti i codici delle gare di Atletica cui partecipano atleti della societa Borgorosso.

15 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE ((PARTECIPAZIONE.CODICEATLETA= ATLETA.CODICE) AND (SOCIETA = BORGOROSSO))

16 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 3. Tutti i codici delle gare di Atletica cui partecipano atleti della societa Borgorosso, svolte in data 7/10/2013.

17 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA, GARA WHERE ((CODICEATLETA=CODICE) AND (GARA.CODICEGARA=PARTECIPAZIONE. CODICEGARA) AND (SOCIETA = BORGOROSSO) AND (DATA=07/10/2013))

18 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 4. I nomi delle societa i cui atleti hanno vinto una gara di LancioDelDisco. Filtrare i duplicati.

19 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT DISTINCT(SOCIETA) FROM ATLETA, GARA WHERE ((CODICEVINCITORE=CODICE) AND (DISCIPLINA=LANCIODELDISCO))

20 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 5. Il numero di gare svolte in data 7/10/2013.

21 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT COUNT(*) FROM GARA WHERE (DATA=7/10/2013)

22 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 6. Per ogni societa, il numero di atleti che ne fanno parte.

23 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT SOCIETA, COUNT(*) AS NUMERO FROM ATLETA GROUPBY SOCIETA

24 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 7. Le societa che hanno almeno 3 atleti tesserati.

25 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT SOCIETA FROM ATLETA GROUPBY SOCIETA HAVING COUNT(*) >=3

26 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 7. Gli atleti che hanno partecipato ad almeno 5 gare.

27 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICE FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE,CODICEATLETA HAVING (COUNT(*)>=5)

28 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) Scrivere la query SQL che determina: 8. Gli atleti che NON hanno mai partecipato ad una gara.

29 Esercizio 2 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa) Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) SELECT CODICE FROM ATLETA EXCEPT SELECT DISTINCT(CODICEATLETA) FROM PARTECIPAZIONE

30 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 1. Determinare la cardinalita (#righe) della query seguente: SELECT CODICE FROM ATLETA

31 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 1. Determinare la cardinalita (#righe) della query seguente: SELECT CODICE FROM ATLETA Cardinalita del risultato: 50

32 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 2. Determinare la cardinalita (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA

33 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 2. Determinare la cardinalita (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA Cardinalita del risultato: 1<=x<=50

34 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 3. Determinare la cardinalita (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA WHERE (SOCIETA =Borgorosso)

35 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore) Partecipazione(CodiceGara, CodiceAtleta) 3. Determinare la cardinalita (#righe) della query seguente: SELECT DISTINCT(NOME) FROM ATLETA WHERE (SOCIETA =Borgorosso) Cardinalita del risultato: 1<=x<=50

36 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 4. Determinare la cardinalita (#righe) della query seguente: SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE (CODICE=CODICEATLETA)

37 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Societa), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 4. Determinare la cardinalita (#righe) della query seguente: SELECT CODICEGARA FROM PARTECIPAZIONE, ATLETA WHERE (CODICE=CODICEATLETA) Cardinalita del risultato: 100

38 Esercizio 3 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 5. Determinare la cardinalita (#righe) della query seguente: SELECT * FROM GARA, ATLETA WHERE (DISCIPLINA=SPECIALITA) Cardinalita del risultato: 0<=x<=50*20

39 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 1. Determinare se la query seguente e corretta o meno. SELECT COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

40 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 1. Determinare se la query seguente e corretta o meno. SELECT COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

41 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 2. Determinare se la query seguente e corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

42 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 2. Determinare se la query seguente e corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE)

43 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 3. Determinare se la query seguente e corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

44 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 3. Determinare se la query seguente e corretta o meno. SELECT CODICE, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

45 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 4. Determinare se la query seguente e corretta o meno. SELECT NOME, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

46 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 4. Determinare se la query seguente e corretta o meno. SELECT NOME, COUNT(*) FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE

47 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 5. Determinare se la query seguente e corretta o meno. SELECT NOME FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE HAVING (SPECIALITA ==ATLETICA)

48 Esercizio 4 Dato il seguente schema: Atleta(Codice, Nome, Cognome, Specialita), 50 elementi Gara(CodiceGara, Disciplina, Data, CodiceVincitore), 20 el Partecipazione(CodiceGara, CodiceAtleta), 100 elementi 5. Determinare se la query seguente e corretta o meno. SELECT NOME FROM ATLETA, PARTECIPAZIONE WHERE (CODICEATLETA=CODICE) GROUPBY CODICE HAVING (SPECIALITA ==ATLETICA)

49 Esercizio 5 Dato il seguente schema: Atleta(Codice, Nome, Cognome, DataNascita, Societa) Allenatore(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: 1. Inserisce nella tabella sportivi lutente Michele Rossi.

50 Esercizio 5 Dato il seguente schema: Atleta(Codice, Nome, Cognome, DataNascita, Societa) Allenatore(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) INSERT INTO SPORTIVI(NOME,COGNOME) VALUES (Michele, Rossi)

51 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: 2. Popola la tabella Sportivi(Nome, Cognome, Societa) come insieme di tutti gli atleti ed allenatori presenti nello schema.

52 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: INSERT INTO SPORTIVI(NOME,COGNOME, SOCIETA) (SELECT NOME,COGNOME,SOCIETA FROM ATLETI UNION SELECT NOME,COGNOME,SOCIETA FROM ALLENATORI)

53 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: 3. Rimuove tutti gli allenatori la cui societa di appartenenza non e specificata.

54 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: DELETE FROM ALLENATORI WHERE (SOCIETA IS NULL)

55 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: 4. Aggiorna i dati degli Atleti nati in data 10/11/2012, settando il nuovo valore della societa a Polisportiva Rossi

56 Esercizio 5 Dato il seguente schema: Atleti(Codice, Nome, Cognome, DataNascita, Societa) Allenatori(Codice, Nome, Cognome, Profilo, Societa) Sportivi(Nome, Cognome, Societa) Scrivere la query SQL che: UPDATE ATLETI SET SOCIETA=POLISPORTIVA ROSSI WHERE DATANASCITA=10/11/2012

57 Esercizio 6 Dato il seguente schema: AEROPORTO(Citta, Nazione, NumPiste) VOLO(IdVolo, Data, CittaPart, CittaArr, TipoAereo) AEREO(ModelloAereo, NumPasseggeri) Vincoli di integrita: VOLO.CittaPart AEROPORTO.Citta VOLO.CittaArr AEROPORTO.Citta VOLO.TipoAereo AEREO.ModelloAereo Scrivere la query SQL che determina: 1. Per ogni nazione, il numero di voli in partenza.

58 Esercizio 6 Dato il seguente schema: AEROPORTO(Citta, Nazione, NumPiste) VOLO(IdVolo, Data, CittaPart, CittaArr, TipoAereo) AEREO(ModelloAereo, NumPasseggeri) Vincoli di integrita: VOLO.CittaPart AEROPORTO.Citta VOLO.CittaArr AEROPORTO.Citta VOLO.TipoAereo AEREO.ModelloAereo Scrivere la query SQL che determina: 2. Le citta francesi da cui partono piu di venti voli alla settimana diretti per lItalia

59 Esercizio 6 Dato il seguente schema: AEROPORTO(Citta, Nazione, NumPiste) VOLO(IdVolo, Data, CittaPart, CittaArr, TipoAereo) AEREO(ModelloAereo, NumPasseggeri) Vincoli di integrita: VOLO.CittaPart AEROPORTO.Citta VOLO.CittaArr AEROPORTO.Citta VOLO.TipoAereo AEREO.ModelloAereo Scrivere la query SQL che determina: 3. Il massimo numero di passeggeri che possono arrivare dalla Francia in Italia (con un solo volo).

60 Esercizio 6 Dato il seguente schema: AEROPORTO(Citta, Nazione, NumPiste) VOLO(IdVolo, Data, CittaPart, CittaArr, TipoAereo) AEREO(ModelloAereo, NumPasseggeri) Vincoli di integrita: VOLO.CittaPart AEROPORTO.Citta VOLO.CittaArr AEROPORTO.Citta VOLO.TipoAereo AEREO.ModelloAereo Scrivere la query SQL che determina: 4. Il massimo numero di passeggeri che possono arrivare dalla Francia in Italia (sommando tutti i voli).

61 Esercizio 6 Dato il seguente schema: AEROPORTO(Citta, Nazione, NumPiste) VOLO(IdVolo, Data, CittaPart, CittaArr, TipoAereo) AEREO(ModelloAereo, NumPasseggeri) Vincoli di integrita: VOLO.CittaPart AEROPORTO.Citta VOLO.CittaArr AEROPORTO.Citta VOLO.TipoAereo AEREO.ModelloAereo Scrivere la query SQL che determina: 5. Le citta servite dallaereo con numero minimo di passeggeri.

62 Esercizio 7 Dato il seguente schema: IMPIEGATO(Matricola, Nome, Cognome, Stipendio, Direttore) DIPARTIMENTO(Codice, Direttore) SELECT SUM(STIPENDIO) FROM IMPIEGATO I FROM IMPIEGATO I, DIPARTIMENTO D WHERE I.DIRETTORE IN WHERE (I.DIRETTORE = SELECT DIRETTORE D.DIRETTORE) FROM DIPARTIMENTO Definire se le due query sono equivalenti.

63 Esercizio 8.a Dato il seguente schema: IMPIEGATO(Matricola, Nome, Cognome, Stipendio) QUERY : Selezionare le matricole di impiegati che guadagnano piu di un qualche loro collega. SELECT MATRICOLA FROM IMPIEGATO WHERE (STIPENDIO SELECT STIPENDIO FROM IMPIEGATO) Indicare una condizione valida!

64 Esercizio 8.b Dato il seguente schema: IMPIEGATO(Matricola, Nome, Cognome, Stipendio) QUERY : Selezionare le matricole di impiegati che guadagnano piu di tutti i loro colleghi. SELECT MATRICOLA FROM IMPIEGATO WHERE (STIPENDIO SELECT STIPENDIO FROM IMPIEGATO) Indicare una condizione valida!

65 Esercizio 8.c Dato il seguente schema: IMPIEGATO(Matricola, Nome, Cognome, Stipendio) QUERY : Selezionare le matricole di impiegati che guadagnano tra i 20K ed i 30K. SELECT MATRICOLA FROM IMPIEGATO WHERE (MATRICOLA SELECT MATRICOLA FROM IMPIEGATO WHERE (STIPENDIO IN (20000,30000)) Indicare una condizione valida!

66 Esercizio 9 Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente) Scrivere la query SQL che determina: 1. Nome dei clienti (senza duplicati) che hanno noleggiato macchine in data 15/01/2013 ( VINCOLO : usare query annidate ).

67 Esercizio 9 SELECT DISTINCT(NOME) FROM CLIENTI WHERE NRPATENTE = ANY (SELECT PATENTECLIENTE FROM NOLEGGIO WHERE (Data = 15/01/2013) ) ) Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente)

68 Esercizio 9 Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente) Scrivere la query SQL che determina: 2. Nome dei clienti (senza duplicati) che NON hanno mai noleggiato una macchina ( VINCOLO : usare query annidate ).

69 Esercizio 9 Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente) SELECT DISTINCT(Nome) FROM CLIENTI C WHERE NOT EXIST ( SELECT * FROM NOLEGGIO N WHER (C.NRPATENTE=N.PATENTECLIENTE))

70 Esercizio 9 Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente) SELECT DISTINCT(Nome) FROM CLIENTI C WHERE NRPATENTE NOT IN SELECT PATENTECLIENTE FROM NOLEGGIO N

71 Esercizio 9 Dato il seguente schema: VEICOLO(Targa, Modello, AnnoImmatricolazione) CLIENTI(NrPatente, Nome, Cognome, DataNascita) NOLEGGIO(TargaVeicolo, Data, PatenteCliente) Scrivere la query SQL che determina: 3. Nome e cognome dei clienti che hanno noleggiato piu macchine rispetto alla media (degli altri clienti).

72 Esercizio 9 CREATE VIEW TOTNOLEGGI(P, NUM) AS ( SELECT PATENTECLIENTE AS P, COUNT (*) AS NUM FROM NOLEGGIO GROUPBY PATENTECLIENTE ) SELECT NOME, COGNOME FROM TOTNOLEGGI, CLIENTI WHERE ((NUM > SELECT AVG(NUM) FROM TOTNOLEGGI) AND (P=NRPATENTE))

73 Esercizio 10 Dato il seguente schema: PROFESSORE(Codice, Nome, Cognome, Dipartimento, Qualifica, Stipendio) Definire il seguente vincolo sullo schema: 1. Ogni dipartimento deve avere almeno 30 professori, e lo stipendio medio in ogni dipartimento deve essere inferiore a euro.

74 Esercizio 10 Dato il seguente schema: PROFESSORE(Codice, Nome, Cognome, Dipartimento, Qualifica, Stipendio) CREATE ASSERTION VINCOLO1 CHECK (30 <= ALL (SELECT COUNT(*) FROM PROFESSORE GROUPBY DIPARTIMENTO))

75 Esercizio 10 Dato il seguente schema: PROFESSORE(Codice, Nome, Cognome, Dipartimento, Qualifica, Stipendio) CREATE ASSERTION VINCOLO2 CHECK (25000 <= ALL (SELECT AVG(STIPENDIO) FROM PROFESSORE GROUPBY DIPARTIMENTO))

76 Esercizio 11 Dato il seguente schema: ATLETA(Nome, Nazione, Eta) PARTECIPAZIONE(NomeAtleta, NomeGara, Piazzamento) GARA(Nome, Nazione) Scrivere la query SQL che determina: 1. Il nome degli atleti che hanno gareggiato solo nella propria nazione.

77 Esercizio 11 Dato il seguente schema: ATLETA(Nome, Nazione, Eta) PARTECIPAZIONE(NomeAtleta, NomeGara, Piazzamento) GARA(Nome, Nazione) Scrivere la query SQL che determina: 2. Il nome degli atleti che provengono da una nazione in cui non si svolge alcuna gara.

78 Esercizio 11 Dato il seguente schema: ATLETA(Nome, Nazione, Eta) PARTECIPAZIONE(NomeAtleta, NomeGara, Piazzamento) GARA(Nome, Nazione) Scrivere la query SQL che determina: 3. Il nome degli atleti che hanno preso parte a tutte le gare svolte in Francia.


Scaricare ppt "Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:"

Presentazioni simili


Annunci Google