Basi di Dati. Esercitazione SQL. 17 novembre 2011

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

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Basi di Dati. Esercitazione SQL. 18 maggio 2007

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

ed SQL 10 Novembre 2009

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Esercitazione Algebra Relazionale

Business Intelligence

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

Utilizzando per la connessione al database un driver di Tipo 1:

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

Basi di Dati. Esercitazione JDBC 28/05/2007

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

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

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

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

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

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Sia dato il seguente schema di base di dati:

Basi di Dati. Esercitazione JDBC. Ing. Paolo Cappellari

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

Basi di Dati Esercitazione JDBC

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 - Structured Query Language

Basi di dati Corso di Laurea in Informatica Umanistica

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Esercitazione 2 SQL.

Basi di dati: appello 14/07/06

Fondamenti di Informatica

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

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

Basi di Dati Corso di Laura in Informatica Umanistica

Primo compitino di Basi di Dati - 3/4/2019 testo 1

Esercitazione 6 SQL 3

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Esercitazione 1 Algebra relazionale

Basi di dati: appello 04/07/06

Prova Scritta di Basi di Dati

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

IL LINGUAGGIO SQL LE BASI

SQL. Esercitazione. Contatti: Dott. Domenico Fabio Savo

QL (Query Language) Alice Pavarani

Corso di Informatica Medica

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Prova Scritta di Basi di Dati

Laboratorio di Basi di Dati

Structured Query Language

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

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di dati I 11 luglio 2014 Tempo a disposizione: un ora e quarantacinque minuti.

Basi di Dati: Corso di laboratorio

Basi di dati I 22 settembre 2014 Tempo a disposizione: un ora e trenta minuti.

(Lezione SQL 3) Barbara Di Camillo Dipartimento di Ingegneria dell Informazione. Università degli Studi di Padova

Basi di Dati. Concetti Avanzati

Basi di dati I 6 settembre 2018 Tempo a disposizione: un ora e 45 minuti.

Basi di dati - Laboratorio

Basi di dati: appello 11/07/07

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

Corso sul linguaggio SQL

Basi di Dati. SOLUZIONE della Prova Scritta del 12 Gennaio 2007

Basi di Dati: Corso di laboratorio

Interrogazioni complesse. SQL avanzato 1

Esercitazione 7 Correzione della prova di autovalutazione

Esercitazione 3 SQL.

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

Il linguaggio SQL - Interrogazioni -

Sistemi di Elaborazione delle Informazioni

BASE DI DATI. Esercitazione: Campionato italiano 2015/2016 Raggruppamenti Nidificazione. Informatica Umanistica Università di Pisa

Esercitazione 3 SQL.

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

Laboratorio di Basi di dati/web/mm e Basi di dati per Bioinformatica

Seconda esercitazione su SQL (con soluzioni) Basi di dati A.A. 2017/18 Maurizio Lenzerini

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

Basi di Dati: Corso di laboratorio

Estensioni del linguaggio SQL per interrogazioni OLAP

Primo Compitino di Basi di Dati

Interrogazioni semplici

Basi di dati: appello 07/02/06

Laboratorio di Basi di dati

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio

σ data 15/12/2013 data 20/12/2014

Esercitazione 1. ogni tupla contribuisce al risultato: Impiegato Reparto Rossi. Bruni. Bianchi

SQL /10/2016 Basi di dati - SQL 1

BASE DI DATI. Esercitazione: Campionato italiano 2015/2016 Raggruppamenti Nidificazione. Informatica Umanistica Università di Pisa

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

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

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

Select Anagrafiche, Movimenti From Descrizione? Where Anagrafiche.Codice=Codice And Cognome=' Bianchi ';

Operatori aggregati: COUNT

Tipi di sottoquery SQL

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Esercizi su SQL. Basi di Dati A.A. 2009/2010 Docente: Prof. Ing. Giorgio Giacinto. Ing. Roberto Tronci.

ESERCIZI INTERROGAZIONI SQL

Transcript:

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) Catalogo (CodiceFornitore, CodiceProdotto, Costo) Formulare in Algebra Relazionale e in SQL le seguenti interrogazioni: 1. Trovare nomi ed indirizzi dei Fornitori che si trovano a Roma. 2. Trovare Nome, Marca e Modello dei prodotti acquistabili con meno di 2000. 3. Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM è la marca di un prodotto). Esercitazione Basi di Dati 2 Algebra Relazionale ed SQL

Le Relazioni Nome CodiceFornitore Indirizzo Città Ladroni 001 Via Ostense Roma Risparmietti 002 Viale Marconi Roma Teloporto 010 Via Roma Milano CodiceFornitore CodiceProdotto Costo 001 0002 3.200 001 0003 2.200 002 0001 1.900 002 0002 2.500 002 0003 1.800 010 0001 2.200 010 0003 2.000 CodiceProdotto Nome Marca Modello 0001 Notebook IBM 390 x 0002 Desktop IBM 510 0003 Desktop ACER 730 Fornitori Catalogo Prodotti Esercitazione Basi di Dati 3 Algebra Relazionale

Soluzione Esercizio 1.1 1. Trovare nomi ed indirizzi dei Fornitori che si trovano a Roma. Algebra: π Nome,Indirizzo (σ Città = Roma (Fornitori)) SELECT Nome, Indirizzo FROM Fornitori WHERE Città = Roma Esercitazione Basi di Dati 4 Algebra Relazionale

Soluzione Esercizio 1.2 2. Trovare Nome, Marca e Modello dei prodotti acquistabili con meno di 2000. Algebra: π Nome, Marca, Modello (σ Costo < 2000 (Prodotti Catalogo)) SELECT Nome, Marca, Modello FROM Prodotti inner join Catalogo on Prodotti.CodiceProdotto = Catalogo.CodiceProdotto WHERE Costo < 2000 Esercitazione Basi di Dati 5 Algebra Relazionale

Soluzione Esercizio 1.3 3. Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM è la marca di un prodotto). Algebra: π Nome (σ Marca = IBM ((Fornitori Catalogo) (π CodiceProdotto,Marca (Prodotti))) SELECT Nome FROM Fornitori, Catalogo WHERE Fornitori.CodiceFornitore = Catalogo.CodiceFornitore AND CodiceProdotto IN ( SELECT CodiceProdotto FROM Prodotti WHERE Marca = IBM ) Esercitazione Basi di Dati 6 Algebra Relazionale

Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello) Catalogo (CodiceFornitore, CodiceProdotto, Costo) Esercitazione 3 formulare in SQL una interrogazione per ciascuno dei seguenti punti: 1. Trovare il numero dei fornitori che lavorano a Roma. 2. Costruire l elenco dei prodotti venduti, visualizzando Codice e Costo del prodotto e Nome del fornitore presso cui è venduto, e ordinarlo come ascendente rispetto al codice e al costo del prodotto (prima rispetto al codice poi al costo). 3. Trovare il costo del prodotto più caro venduto a Milano. 4. Trovare il costo medio dei prodotti forniti in ciascuna città (visualizzare costo e città). 7

Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello) Catalogo (CodiceFornitore, CodiceProdotto, Costo) Esercitazione 3 formulare in SQL una interrogazione per ciascuno dei seguenti punti: 5. Trovare il numero dei prodotti a catalogo per ogni città. 6. Trovare il codice del prodotto più costoso tra quelli distribuiti dai fornitori presenti a Roma. 7. Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo. 8. Trovare presso quale fornitori conviene comprare i singoli prodotti (chi vende a meno un determinato prodotto?); mostrare: Nome del fornitore, Codice e Costo del prodotto. 8

1. Trovare il numero dei fornitori che lavorano a Roma. Esercizio 1 9

Soluzione Esercizio 1 1. Trovare il numero dei fornitori che lavorano a Roma. SELECT count(*) FROM Fornitori WHERE Citta = 'Roma'; 10

2. Costruire l elenco dei prodotti venduti, visualizzando Codice e Costo del prodotto e Nome del fornitore presso cui è venduto, e ordinarlo come ascendente rispetto al codice e al costo del prodotto (prima rispetto al codice poi al costo). Esercizio 2 11

2. Costruire l elenco dei prodotti venduti, visualizzando Codice e Costo del prodotto e Nome del fornitore presso cui è venduto, e ordinarlo come ascendente rispetto al codice e al costo del prodotto (prima rispetto al codice poi al costo). Soluzione Esercizio 2 SELECT C.CodiceProdotto, C.Costo, F.Nome FROM Catalogo AS C, Fornitori AS F WHERE C.CodiceFornitore = F.CodiceFornitore ORDER BY C.CodiceProdotto ASC, C.Costo ASC 12

Esercizio 3 3. Trovare il costo del prodotto più caro venduto a Milano. 13

Soluzione Esercizio 3 3. Trovare il costo del prodotto più caro venduto a Milano. SELECT max(costo) FROM Catalogo C JOIN Fornitori F ON F.CodiceFornitore=C.CodiceFornitore WHERE Citta = 'Milano'; 14

Esercizio 4 4. Trovare il costo medio dei prodotti forniti in ciascuna città (visualizzare costo e città). 15

Soluzione Esercizio 4 Notiamo che l interrogazione: SELECT Costo, F.Citta FROM Catalogo AS C, Fornitori AS F WHERE C.CodiceFornitore=F.CodiceFornitore restituisce: media: 2.320 media: 2.100 Costo Città 2.200 Roma 3.200 Roma 1.900 Roma 2.500 Roma 1.800 Roma 2.200 Milano 2.000 Milano 16

Soluzione Esercizio 4 4. Trovare il costo medio dei prodotti forniti in ciascuna città (visualizzare costo e città). SELECT avg(costo) AS CostoMedio, F.Citta FROM Catalogo AS C, Fornitori AS F WHERE C.CodiceFornitore=F.CodiceFornitore GROUP BY F.Citta 17

5. Trovare il numero dei prodotti a catalogo in ogni città Esercizio 5 18

Soluzione Esercizio 5 5. Trovare il numero dei prodotti a catalogo in ogni città. SELECT F.Citta, count(distinct CodiceProdotto) FROM Catalogo C JOIN Fornitori F ON F.CodiceFornitore=C.CodiceFornitore GROUP BY F.Citta; 19

Esercizio 6 6. Trovare il codice del prodotto più costoso tra quelli distribuiti dai fornitori presenti a Roma. 20

Soluzione Esercizio 6 6. Trovare il codice del prodotto più costoso tra quelli distribuiti dai fornitori presenti a Roma. SELECT DISTINCT C.CodiceProdotto FROM Fornitori AS F, Catalogo AS C WHERE F.CodiceFornitore = C.CodiceFornitore AND F.Citta = 'Roma' AND C.Costo = (SELECT MAX(costo) FROM Fornitori F1, Catalogo C1 WHERE F1.CodiceFornitore = C1.CodiceFornitore AND F1.Citta = 'Roma') 21

Soluzione Esercizio 6 dove: MaxCosto 3.200 SELECT MAX(costo) FROM Fornitori F1, Catalogo C1 WHERE F1.CodiceFornitore = C1.CodiceFornitore AND F1.Citta = 'Roma' N.B. Gli op. aggregati non fanno selezione, restituiscono valori su insieme. Non è quindi un query valida: SELECT C.CodiceProdotto, MAX(costo) [ ] 22

Esercizio 7 7. Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo. Osservazioni: Il quesito può essere riformulato nella seguente maniera: trovare i nomi dei fornitori per i quali non esiste un prodotto in catalogo che non distribuiscono. 23

Soluzione Esercizio 7 7. Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo. Algebra Relazionale: π Nome ((π CF (Fornitori)- R ) Fornitori ) dove: R:= π CF ( ( (π CF (Fornitori) π CP (Catalogo)) π CF,CP (Catalogo) ) ) R corrisponde ai CF dei Fornitori ai quali manca almeno un prodotto di quelli in catalogo. 24

Soluzione Esercizio 7 7. Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo. Nome Risparmietti SELECT DISTINCT F1.Nome FROM Fornitori F1 WHERE F1.CodiceFornitore NOT IN ( SELECT DISTINCT F.CodiceFornitore FROM Prodotti P, Catalogo C 2 WHERE (C.CodiceFornitore, P.CodiceProdotto) NOT IN ( SELECT DISTINCT E.CodiceFornitore, E.CodiceProdotto FROM Catalogo E)) 1 3 25

8. Trovare presso quale fornitori conviene comprare i singoli prodotti (chi vende a meno un determinato prodotto?); mostrare: Nome del fornitore, Codice e Costo del prodotto. Esercizio 8 26

8. Trovare presso quali fornitori conviene comprare i singoli prodotti (chi vende a meno un determinato prodotto?); mostrare: Nome del fornitore, Codice e Costo del prodotto. Soluzione Esercizio 8 SELECT F1.Nome, C1.CodiceProdotto, C1.Costo FROM CATALOGO AS C1, FORNITORI AS F1 WHERE C1.CODICEFORNITORE = F1.CODICEFORNITORE AND C1.Costo = ( SELECT min(c.costo) FROM Catalogo AS C WHERE C1.CodiceProdotto = C.CodiceProdotto ) 27

NOT EXISTS Professori (prof_id, cognome) Corsi (corso_id, titolo, anno, professore) Con un vincolo fra prof_id e professore Query: restituisci tutte le informazioni sui professori che non hanno corsi. SELECT * FROM Professori WHERE NOT EXISTS (SELECT * FROM Corsi WHERE Professori.prof_id = Corsi.professori); Restituisce tutti i record per la tabella professori dove non ci sono tuple nella tabella corsi per l id dato. 28

Soluzione Alternativa Esercizio 7 7. Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo (trovare i nomi dei fornitori per i quali non esiste un prodotto in catalogo che non distribuiscono) SELECT DISTINCT F.Nome FROM Fornitori AS F WHERE NOT EXISTS ( SELECT P.CodiceProdotto FROM Prodotti P WHERE NOT EXISTS ( SELECT C.CodiceProdotto 1 FROM Catalogo C WHERE C.CodiceFornitore = F.CodiceFornitore AND C.CodiceProdotto = P.CodiceProdotto)); Nome Risparmietti 29 2 3