Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto Studenti data matricola nomeesame voto 12/09/2005 78 Analisi 30 23/12/2004 8 Statistica 18 23/06/2004 8 Ragioneria 28 2/03/2005 45 Statistica 27 23/07/2004 8 Diritto 23 08/03/2005 45 Matematica 25 Voti matricola Nome Cognome 78 Paolino Spiedo 45 Roberto Rossi 8 Bice Verdi mostrare il risultato della seguente istruzione SQL: SELECT nomeesame, voto FROM Voti, Studenti WHERE Voti.matricola = Studenti.matricola AND Cognome= Verdi ;
Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto Studenti data matricola nomeesame voto 12/09/2005 78 Analisi 30 23/12/2004 8 Statistica 18 23/06/2004 8 Ragioneria 28 2/03/2005 45 Statistica 27 23/07/2004 8 Diritto 23 08/03/2005 45 Matematica 25 Voti matricola Nome Cognome 78 Paolino Spiedo 45 Roberto Rossi 8 Bice Verdi mostrare il risultato della seguente istruzione SQL: SELECT nomeesame, voto FROM Voti, Studenti WHERE Voti.matricola = Studenti.matricola AND Cognome= Verdi ; nomeesame voto Diritto 23 Ragioneria 28 Statistica 18
Date le due tabelle scrivere la query SQL che stampa la media dei voti degli studenti con cognome che inizia con la lettera R. Studenti data matricola nomeesame voto 12/09/2005 78 Analisi 30 23/12/2004 8 Statistica 18 23/06/2004 8 Ragioneria 28 2/03/2005 45 Statistica 27 23/07/2004 8 Diritto 23 08/03/2005 45 Matematica 25 Voti matricola Nome Cognome 78 Paolino Spiedo 45 Roberto Rossi 8 Bice Verdi
Date le due tabelle scrivere la query SQL che stampa la media dei voti degli studenti con cognome che inizia con la lettera R. Studenti data matricola nomeesame voto 12/09/2005 78 Analisi 30 23/12/2004 8 Statistica 18 23/06/2004 8 Ragioneria 28 2/03/2005 45 Statistica 27 23/07/2004 8 Diritto 23 08/03/2005 45 Matematica 25 Voti matricola Nome Cognome 78 Paolino Spiedo 45 Roberto Rossi 8 Bice Verdi SELECT AVG(voto) AS Media FROM Studenti,Voti WHERE Voti.matricola = Studenti.matricola and Cognome LIKE R%
Dato il seguente schema di una base di dati prodotti Codice Nome Produttore A1 Laptop Dell A2 Palmtop HP A3 Desktop IBM prezzi codice data prezzo A1 12/03/2004 1200.00 A2 20/04/2004 400.00 A2 28/09/2004 500.00 A2 30/09/2004 300.00 A3 15/07/2004 1000.00 A3 29/09/2004 950.0 Mostrare il risultato della seguente istruzione SQL SELECT Nome FROM prodotti, prezzi WHERE prezzo < 400
Dato il seguente schema di una base di dati prodotti Codice Nome Produttore A1 Laptop Dell A2 Palmtop HP A3 Desktop IBM prezzi codice data prezzo A1 12/03/2004 1200.00 A2 20/04/2004 400.00 A2 28/09/2004 500.00 A2 30/09/2004 300.00 A3 15/07/2004 1000.00 A3 29/09/2004 950.0 Mostrare il risultato della seguente istruzione SQL SELECT Nome FROM prodotti, prezzi WHERE prezzo < 400 Laptop Palmtop Desktop
Dato lo schema di base di dati prodotti(codice, Nome, Produttore, prezzo) formulare un interrogazione SQL che conta quante tuple hanno un prezzo superiore a 200.
Dato lo schema di base di dati prodotti(codice, Nome, Produttore, prezzo) formulare un interrogazione SQL che conta quante tuple hanno un prezzo superiore a 200. SELECT count(*) FROM prodotti WHERE prezzo > 200;
Dato il seguente schema di una base di dati movimenti nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Visualizzare nomearticolo, quantità e quantità incrementata del 5%
Dato il seguente schema di una base di dati movimenti nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Visualizzare nomearticolo, quantità e quantità incrementata del 5% SELECT nomearticolo, quantita, quantita*1,05 AS riordino FROM movimenti
Dato il seguente schema di una base di dati movimenti nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Mostrare il risultato della seguente istruzione SQL DELETE FROM movimenti WHERE quantita = (SELECT MAX(quantità) FROM movimenti)
Dato il seguente schema di una base di dati nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Mostrare il risultato della seguente istruzione SQL DELETE FROM movimenti WHERE quantita = (SELECT MAX(quantità) FROM movimenti)
Dato il seguente schema di una base di dati nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Mostrare il risultato della seguente istruzione SQL DELETE FROM movimenti WHERE quantita = (SELECT MAX(quantità) FROM movimenti) cancella la tupla dove nomearticolo= dolce
Dato il seguente schema di una base di dati nomearticolo data quantita pasta 12/05/2004 200 formaggio 16/12/2004-500 frutta 17/03/2004 70 dolce 31/12/2004 3000 carne 24/12/2004-400 Mostrare il risultato della seguente istruzione SQL DELETE FROM movimenti WHERE quantita = (SELECT MAX(quantità) FROM movimenti) cancella la tupla dove nomearticolo= dolce
Dato lo schema di relazione Veicolo(Targa, data, percorrenza) formulare un interrogazione SQL per visualizzare il totale percorrenza nell anno 2010
Dato lo schema di relazione Veicolo(Targa, data, percorrenza) formulare un interrogazione SQL per visualizzare il totale percorrenza nell anno 2010 SELECT SUM(percorrenza) FROM Veicolo WHERE data BETWEEN #01/01/2010# AND #31/12/2010#
Dato il seguente schema di una base di dati Veicolo Targa Produttore Modello annoimmatricolazione TU786GH Honda Accord 2002 XZ543CV Toyota Corolla 2002 AS345GH Fiat Palio 1999 TR213SA Alfa Romeo 147 2004 Mostrare il risultato della seguente istruzione SQL SELECT Targa FROM Veicolo WHERE Modello LIKE %a
Dato il seguente schema di una base di dati Veicolo Targa Produttore Modello annoimmatricolazione TU786GH Honda Accord 2002 XZ543CV Toyota Corolla 2002 AS345GH Fiat Palio 1999 TR213SA Alfa Romeo 147 2004 Mostrare il risultato della seguente istruzione SQL SELECT Targa FROM Veicolo WHERE Modello LIKE %a XZ543CV
Dato il seguente schema di una base di dati movimenti codicearticolo Descrizione prezzo 1 Pane 2 2 Pelati 0.50 3 Scarpe 70 4 Vino 4 5 Farina 0.60 6 Uova 3 Mostrare il risultato della seguente istruzione SQL UPDATE movimenti SET prezzo = prezzo + 1 WHERE codicearticolo BETWEEN 2 AND 4
Dato il seguente schema di una base di dati Articoli codicearticolo Descrizione prezzo 1 Pane 2 2 Pelati 0.50 3 Scarpe 70 4 Vino 4 5 Farina 0.60 6 Uova 3 Mostrare il risultato della seguente istruzione SQL UPDATE movimenti SET prezzo = prezzo + 1 WHERE codicearticolo BETWEEN 2 AND 4 Si incrementano di 1 i prezzi di pelati,scarpe,vino
Dato lo schema di relazione articoli(codicearticolo, descrizione, prezzo) formulare un interrogazione SQL per visualizzare le tuple della relazione articoli il cui campo prezzo contiene il valore massimo.
Dato lo schema di relazione articoli(codicearticolo, descrizione, prezzo) formulare un interrogazione SQL per visualizzare le tuple della relazione articoli il cui campo prezzo contiene il valore massimo. SELECT * FROM articoli WHERE prezzo = ( SELECT max(prezzo) FROM articoli)
Dati i seguenti schemi di relazione articoli(codice, descrizione, prezzo) fornitori(codice, descrizione, indirizzo) spiegare perché la seguente interrogazione contiene degli errori. SELECT codice, prezzo FROM articoli, fornitori WHERE descrizione = pasta
Dati i seguenti schemi di relazione articoli(codice, descrizione, prezzo) fornitori(codice, descrizione, indirizzo) spiegare perché la seguente interrogazione contiene degli errori. SELECT codice, prezzo FROM articoli, fornitori WHERE descrizione = pasta Perché codice e descrizione sono nomi attributi che compaiono in entrambe le relazioni nella clausola FROM.
Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto Nomi Codice Nome Cognome Eta 1 Maria Rossi 80 2 Franco Mar 25 3 Giuseppe Conti 40 mostrare il risultato della seguente istruzione SQL Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90 SELECT Nome, Cognome FROM Nomi, Versamenti WHERE Nomi.codice = Versamenti.codice AND Importo between 90 AND 100
Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto Nomi Codice Nome Cognome Eta 1 Maria Rossi 80 2 Franco Mar 25 3 Giuseppe Conti 40 mostrare il risultato della seguente istruzione SQL Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90 SELECT Nome, Cognome FROM Nomi, Versamenti WHERE Nomi.codice = Versamenti.codice AND Importo between 90 AND 100 Maria Nome Giuseppe Cognome Rossi Conti
Date le due tabelle precedenti scrivere la query SQL che per valore di Nome Cognome stampa il totale dei versamenti effettuati fra il 2000 ed il 2005 Nomi Codice Nome Cognome Eta 1 Maria Rossi 80 2 Franco Mar 25 3 Giuseppe Conti 40 Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90 mostrare il risultato della seguente istruzione SQL SELECT Nome, Cognome FROM Nomi, Versamenti WHERE Nomi.codice = Versamenti.codice AND Data between 1/01/2003 AND 31/12/2004
Date le due tabelle precedenti scrivere la query SQL che per valore di Nome Cognome stampa il totale dei versamenti effettuati fra il 2000 ed il 2005 Nomi Codice Nome Cognome Eta 1 Maria Rossi 80 2 Franco Mar 25 3 Giuseppe Conti 40 Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90 mostrare il risultato della seguente istruzione SQL SELECT Nome, Cognome Nome Cognome FROM Nomi, Versamenti Maria Rossi WHERE Nomi.codice = Versamenti.codice Franco Mar AND Data between 1/01/2003 AND 31/12/2004
Scrivere la query che permette di inserire la seguente tupla in Versamenti: (3, 12/04/2005, 100) Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90
Scrivere la query che permette di inserire la seguente tupla in Versamenti: (3, 12/04/2005, 100) INSERT INTO Versamenti VALUES (3,'2005/04/12',100) Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90
Scrivere la query che aumenta del 10% tutti i versamenti. Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90
Scrivere la query che aumenta del 10% tutti i versamenti. Versamenti Codice Data Importo 1 12/08/1980 100 1 24/09/2004 200 2 12/9/2000 10 2 12/6/2003 30 2 12/5/1999 80 3 14/6/2005 90 UPDATE Versamenti SET Importo = Importo *1.1
Sia data la seguente istanza di base di dati composta da due relazioni: Anagrafica Cognome Nome DataNascita id Rossi Paolo 13/12/1985 1 Verdi Francesca 01/01/1960 2 Gialli Annamaria 16/04/1970 3 Tebaldi Pancrazio 16/04/1950 4 indicare il risultato prodotto dalle seguente interrogazione: SELECT Cognome, Nome FROM Anagrafica,Impieghi WHERE datalicenziamento= 20/08/1999 AND datanascita <= 01/01/1960 Impieghi idut dataassunzione datalicenziamento 1 14/04/2003 17/12/2005 2 16/05/1980 20/08/1999 2 20/04/2000 17/12/2005 3 12/05/1990 26/11/2005 4 15/04/1968 15/06/1980 4 20/06/1980 14/09/2000 4 20/09/2000 17/12/2005 2 10/10/1974 14/04/1980
Sia data la seguente istanza di base di dati composta da due relazioni: Anagrafica Cognome Nome DataNascita id Rossi Paolo 13/12/1985 1 Verdi Francesca 01/01/1960 2 Gialli Annamaria 16/04/1970 3 Tebaldi Pancrazio 16/04/1950 4 indicare il risultato prodotto dalle seguente interrogazione: SELECT Cognome, Nome FROM Anagrafica,Impieghi WHERE datalicenziamento= 20/08/1999 AND datanascita <= 01/01/1960 Impieghi idut dataassunzione datalicenziamento 1 14/04/2003 17/12/2005 2 16/05/1980 20/08/1999 2 20/04/2000 17/12/2005 3 12/05/1990 26/11/2005 4 15/04/1968 15/06/1980 4 20/06/1980 14/09/2000 4 20/09/2000 17/12/2005 2 10/10/1974 14/04/1980 Tebaldi Pancrazio Verdi Francesca
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che guadagnano più della media;
ESEMPI DI SOLUZIONI CON UTILIZZO DI SUBQUERIES
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che guadagnano più della media; A:SELECT AVG(salario) FROM clienti; B:SELECT * FROM clienti WHERE salario > A; SELECT * FROM clienti WHERE salario > (SELECT AVG(salario)FROM clienti);
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi cognome nome e salario dei clienti che abitano in città che contengono almeno 2 clienti;
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi cognome nome e salario dei clienti che abitano in città che contengono almeno 2 clienti; A:SELECT citta FROM clienti GROUP BY citta HAVING COUNT(*) >= 2; B:SELECT cognome, nome FROM clienti WHERE citta IN A; SELECT cognome, nome FROM clienti WHERE citta IN (SELECT citta FROM clienti GROUP BY citta HAVING COUNT(*) >= 2);
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che abitano nelle città in cui l età media è inferiore all età media di tutta la tabella;
Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che abitano nelle città in cui l età media è inferiore all età media di tutta la tabella; A: SELECT AVG(eta) FROM clienti; B: SELECT citta FROM clienti GROUP BY citta HAVING AVG(eta) <A; C: SELECT * FROM clienti WHERE citta IN B; SELECT * FROM clienti WHERE citta IN (SELECT citta FROM clienti GROUP BY citta HAVING AVG(eta) <(SELECT AVG(eta) FROM clienti));
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che hanno versato un acconto superiore alla media.
Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che hanno versato un acconto superiore alla media. A:SELECT AVG (acconto) FROM prenot; B:SELECT cod_cli FROM prenot WHERE acconto > A; C:SELECT * FROM clienti WHERE codice IN B; SELECT * FROM clienti WHERE cod_cli IN (SELECT cod_cli FROM prenot WHERE acconto > (SELECT AVG(acconto)FROM prenot));
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che hanno almeno 30 anni e che hanno una prenotazione per la camera 25 o per la camera 18;
Dato il seguente schema di database Clienti (Cod_cli,Cognome, Nome, Citta, Salario, Eta) Prenot (Cod_cli, Cod_alb, Camera, Giorni, Acconto) Alberghi (Cod_alb, Nome, Citta) Scrivere una query SQL che visualizzi tutti i dati dei clienti che hanno almeno 30 anni e che hanno una prenotazione per la camera 25 o per la camera 18; A:SELECT cod_cli FROM prenot WHERE camera= 25 OR camera= 18 ; B:SELECT * FROM clienti WHERE codice IN A AND eta>=30; SELECT * FROM clienti WHERE eta >= 30 AND cod_cli IN (SELECT cod_cli FROM prenot WHERE camera="25" OR camera="18");
QUERY DI RAGGRUPPAMENTO (GROUP BY)
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) Selezionare il nome delle riviste che hanno pubblicato almeno due articoli di motociclismo.
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) 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 (perché è necessario sia incluso?) HAVING COUNT(*)>1
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) 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).
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) 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
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) Selezionare il nome delle riviste che hanno pubblicato un numero di articoli di motociclimo compreso tra 10 e 25.
RIVISTA (CodR, NomeR, Editore) ARTICOLO (CodA, Titolo, Argomento, CodR) 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;