Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C

Slides:



Advertisements
Presentazioni simili
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Advertisements

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (III) SQL (Slide tratte in parte da da Atzeni, Ceri,
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 24/09/2002.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Il modello relazionale
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL, Definizione e interrogazione di basi di dati
Interrogazioni Nidificate
SQL per la modifica di basi di dati
Il modello relazionale
Operatori aggregati e raggruppamenti
Quantificazione Esistenziale ed Universale
Selezione e Proiezione
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C. Batini 7. SQL DML 7.8 Clausola Having

adattato da Atzeni-etal., Basi di dati, McGrawHill Condizioni sui gruppi Tramite la Group by le righe di una tabella sono raggruppate in sottoinsiemi Pero’, fino ad ora non e’ possible esprimere condizioni su sottoinsiemi Vedi esempio  15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Condizioni sui gruppi: esempio I padri i cui figli hanno un reddito medio maggiore di 25 Non possiamo, fino ad ora, esprimere condizioni sui gruppi, ma solo operatori aggregati Padre Figlio Reddito Luigi Sergio Olga 30 Filippo 30 Franco Andrea 40 Aldo 40 Franco 50 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Condizioni sui gruppi: clausola HAVING La clausola HAVING permette di esprimere condizioni sui gruppi, applicate a ogni insieme di n-ple risultato della applicazione del GROUP BY. Sintassi: SELECT target list FROM … WHERE … GROUP BY insieme attributi HAVING condizione 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Condizioni sui gruppi: clausola HAVING - esempio I padri i cui figli hanno un reddito medio maggiore di 25 select Padre, avg (Reddito) from Persone Join Paternita on Figlio = Nome group by Padre having avg(Reddito)>25 Mette insieme Padri e figli Seleziona i gruppi dei figli che hanno reddito medio > 25 Raggruppa i figli per ogni padre 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Quando applicare la WHERE e quando la HAVING? Dato lo schema PATERNITA’ (Padre, Figlio, Eta’ figlio, Reddito) I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 25 Domanda 7.8.1: Scrivi la interrogazione in SQL 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Quando applicare la WHERE e quando la HAVING? I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 25 select padre, avg(reddito) from persone join paternita on figlio = nome where eta < 30 group by padre having avg(reddito) > 25 Due condizioni Nella clausola WHERE predicato su operatore elementare Nella clausola HAVING predicato su operatore aggregato 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Sintassi della select, riassumiamo SelectSQL ::= select ListaAttributi o Espressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ] 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.8.1 Dato lo schema Cliente (CodFiscaleCliente, CognomeCliente, Mese, TipoProdotto, Spesa) che riporta per ogni cliente di una azienda, le spese effettuate ogni mese di un anno per i vari tipi di prodotti acquistati (es. CD, penne, ecc.) Scrivere una interrogazione che riporti i clienti per prodotto acquistato con la spesa totale, per il solo mese di Giugno, per i soli prodotti per cui la spesa totale sia stata superiore a 1.000 € 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Interrogazioni di tipo insiemistico 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Unione, intersezione e differenza La select da sola non permette di fare unioni, intersezioni, differenze; serve un costrutto esplicito: select … Union /  Unione Intersect /  Intersezione Except  Differenza [all] select ... 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Semantica degli operatori E’ differente rispetto agli altri operatori: a. Negli operatori insiemistici i duplicati vengono eliminati (a meno che si usi all, vedi in seguito) anche dalle proiezioni! Questo perche’: Sono operatori insiemistici, e devono percio’ restituire insiemi L’implementazione e’ efficiente 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Semantica degli operatori Al contrario di quanto accade in algebra relazionale, gli schemi su cui vengono effettuate le operazioni possono anche essere diversi: l’unica condizione e’ che gli attributi devono essere in pari numero e devono avere domini compatibili Per l’ordine, vale la posizione degli attributi 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Schema di riferimento Maternita’ (Madre, Figlio) Paternita’ (Padre, Figlio) Persone (Nome, Eta’, Reddito) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Notazione posizionale - 1 select padre from paternita union select madre from maternita Maternita’ (Madre, Figlio) Paternita’ (Padre,Figlio) Persone (Nome, Eta’, Reddito) quali nomi per gli attributi del risultato? quelli del primo operando  Padre 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Notazione posizionale, 2 select padre, figlio from paternita union select figlio, madre from maternita select padre, figlio from paternita union select madre, figlio from maternita Accoppia padri-figli Con figli-madri, scorretta Corretta 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Notazione posizionale, 3 Anche con le ridenominazioni non cambia niente: select padre as genitore, figlio from paternita union select figlio, madre as genitore from maternita Corretta: select padre as genitore, figlio from paternita union select madre as genitore, figlio from maternita 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Differenza select Nome from Impiegato except select Cognome as Nome from Impiegato Trova i nomi di impiegati che non sono anche cognomi di qualche impiegato Vedremo che si può anche esprimere con select nidificate 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Intersezione select Nome from Impiegato intersect select Cognome as Nome from Impiegato Trova i nomi degli impegati che sono anche cognomi Equivale a: select I.Nome from Impiegato I, Impiegato J where I.Nome = J.Cognome 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Approfondimento Se alcuni aspetti dell’argomento degli operatori insiemistici non ti fossero chiari, studia la sezione 4.3.5 del testo di riferimento. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.8.2 Prova ad eseguire per conto tuo le interrogazioni proposte nella sezione 4.3.5 del testo di riferimento e confronta poi la tua soluzione con quella de llibro 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Interrogazioni complesse (o nidificate) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Nelle interrogazioni semplici … Le condizioni atomiche permettono sempre e soltanto di confrontare valori elementari (al massimo, di aggregati di gruppi di valori) Es. WHERE Eta’ > 30 Es. WHERE Eta’ > 25 HAVING Avg(Reddito) >= 30 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Estensione alle interrogazioni semplici E’ utile estendere i confronti a sintassi del tipo WHERE Attributi o ListadiAttributi OperatoreDiConfronto SELECT .. In cui, come vedremo, possiamo confrontare valori elementari con il risultato di istruzioni SELECT. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.8.1 Esegui l’esercizio 4.7 del libro di riferimento, domanda 9. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Clausola HAVING Operatore insiemistico Operatore UNION Operatore INTERSECT Operatore EXCEPT Interrogazione nidificata (motivazioni) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill