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

Slides:



Advertisements
Presentazioni simili
1 Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. SUM AVG Implementazione in Analysis Services 1. Si definisce.
Advertisements

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
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,
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
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.
Approfondimenti SQL.
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 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
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
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 et al., Basi di dati, Mc-Graw Hill
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
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
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
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
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
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
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.6 Operatori Aggregati

adattato da Atzeni-etal., Basi di dati, McGrawHill Operatori aggregati 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Operatori aggregati Nell’algebra relazionale, le condizioni sono valutate su ciascuna tupla Gli operatori aggregati dell’SQL, che non esistono nell’algebra relazionale, vengono valutati su insiemi di tuple Es. Contare quante sono le tuple  COUNT Semantica degli operatori aggregati: vengono valutati solo dopo aver eseguito la interrogazione base, sull’insieme di n-ple prodotte dalla interrogazione base 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Semantica degli operatori aggregati Dapprima viene eseguita la operazione base, Dopodiche’ sulle n-ple (righe) della tabella risultante si applicano gli operatori aggregati. ATTENZIONE! Percio’ gli operatori aggregati non sono un meccanismo di selezione, come accade per gli attributi che compaiono nelle condizioni (es. ETA’ > 40) ma descrivono piuttosto funzioni, che restituiscono un valore 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Operatori aggregati Compaiono nelle espressioni della target list: COUNT, conteggio MIN, minimo MAX, massimo AVG, media Sintassi base: Funzione ( [ DISTINCT ] * ) Funzione ( [ DISTINCT ] Attributo ) dove Funzione e’ COUNT, MIN, MAX, AVG 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Esempio utilizzato nel seguito Ancora lo schema: Persona (Nome, Eta’, Reddito) Maternita’ (Madre, Figlio) Paternita’ (Padre, Figlio) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome Età Persone Reddito Madre Maternità Figlio Luisa Anna Maria Olga Filippo Andrea Aldo Luigi Andrea 27 Maria 55 Anna 50 Filippo 26 Luigi Franco 60 Olga 30 Sergio 85 Luisa 75 Aldo 25 21 42 35 40 20 41 87 15 Legami logici Padre Paternità Figlio Luigi Franco Sergio Olga Filippo Andrea Aldo 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati: COUNT E’, come gli altri operatori, eseguito sull’intera tabella, e conta il numero di tuple Es: Trova il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' Viene applicato al risultato dell’interrogazione: select * where Padre = 'Franco’ 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Padre Paternità Figlio Luigi Sergio Olga Filippo Franco Andrea Aldo select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' Franco Andrea Aldo 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Padre Paternità Figlio Luigi Sergio Olga Filippo Franco Andrea Aldo select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' Franco Andrea Aldo 1 NumFigliDiFranco 2 2 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill COUNT e valori nulli: i valori nulli non contano Domanda 7.6.1: Esegui le tre interrogazioni select count(*) from persone select count(reddito) from persone select count(distinct reddito) from persone  4  3  2 Nome Età Persone Reddito Andrea 27 Maria 55 Anna 50 Aldo 25 21 35 NULL 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Altri operatori aggregati SUM (somma) , AVG (media), MAX (massimo), MIN (minimo) Ammettono come argomento un attributo o una espressione. Anche in questo caso, viene prima eseguita la interrogazione base e poi si calcola l’operatore aggregato. Es. Media dei redditi dei figli di Franco Domanda 7.6.2: Troviamo prima i redditi dei figli di Franco select reddito from persone join paternita on nome=figlio where padre='Franco' 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Altri operatori aggregati SUM (somma) , AVG (media), MAX (massimo), MIN (minimo) Ammettono come argomento un attributo o una espressione. Anche in questo caso, viene prima eseguita la interrogazione base e poi si calcola l’operatore aggregato. Es. Media dei redditi dei figli di Franco Domanda 7.6.2: Troviamone poi la media select avg(reddito) from persone join paternita on nome=figlio where padre='Franco' 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Operatori aggregati e valori nulli: i valori nulli non contano Domanda 7.6.3: quale valore restituisce questa interrogazione? select avg(reddito) as redditomedio from persone  34 Nome Età Persone Reddito Andrea 27 Maria 55 Anna 50 Aldo 25 30 36 NULL 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati e target list Attenzione! La seguente interrogazione: select nome, max(reddito) from persone Non e’ sintatticamente corretta! Ricordare il significato: gli operatori aggregati non hanno la semantica degli attributi, permettono di calcolare una funzione sulla tabella, e percio’ non possono comparire, per ora, insieme ad attributi. La target list deve essere omogenea e rappresentare o valori atomici o valori aggregati. Piu’ avanti con la clausola GROUP BY, rivedremo questa regola 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Interrogazione corretta select max(reddito) as redditomax from persone select nome, reddito where reddito = redditomax 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Altro esempio sintatticamente corretto L’interrogazione select min(eta), avg(reddito) from persone e’ corretta e seleziona …… l’eta’ minima e il reddito medio delle persone 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Operatore aggregato Operatore COUNT Operatore MIN Operatore MAX Operatore AVG 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill