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

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.
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
Progettazione 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
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
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
Le operazioni relazionali (continua)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione 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
COME SI CREA UNA TABELLA CON UNA CHIAVE ESTERNA
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
Interrogazione di una base di dati relazionale
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
Un’università vuole raccogliere ed organizzare in un database
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
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
Dino Pedreschi Dipartimento di Informatica a.a. 2011– 2012
SQL per la modifica di basi di dati
Modello Relazionale Proposto agli inizi degli anni ‘70 da Codd
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Il modello relazionale
Operatori aggregati e raggruppamenti
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.5 Join

adattato da Atzeni-etal., Basi di dati, McGrawHill Nota bene Anche qui e nel seguito il simbolo Indica che la trasparenza dovra’ essere approfondita a cura dello studente. Se lo studente trova difficolta’ puo’ chiedere spiegazioni 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

Legami logici nello schema esempio Maternita’ (Madre, Figlio) Persone (Nome, Citta’, Reddito) Paternita’ (Padre, Figlio) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Join Esplicito 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Join implicito Interrogazione: Ogni persona, con madre e padre Espressione della interrogazione con Join implicito select paternita.figlio, madre, padre, from maternita, paternita where paternita.figlio = maternita.figlio L‘esecuzione della operazione costruisce una relazione in cui, per ogni figlio, padre e madre vengono collegati. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Join esplicito Interrogazione: Ogni persona, con madre e padre Espressione della interrogazione con Join esplicito select paternita.figlio, madre, padre, from maternita JOIN paternita on paternita.figlio = maternita.figlio Con questa espressione il JOIN e‘ esplicitamente dichiarato nella interrogazione, insieme agli attributi coinvolti, e la condizione applicata. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

SELECT con join esplicito, sintassi FROM Tabella { … JOIN Tabella ON CondizioneDiJoin }, … [ WHERE AltraCondizione ] Quindi la condizione di join non compare nella clausola WHERE ed e’ spostata nella FROM. Nella WHERE restano le (eventuali) altre condizioni Si ottiene una espressione della interrogazione piu’ simile a quella dell’algebra relazionale, e piu’ comprensibile. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito select f.nome, f.reddito, p.reddito from persone p join paternita on p.nome = padre join persone f on figlio = f.nome where f.reddito > p.reddito 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Ulteriore estensione: join naturale (meno diffuso) Algebra – Equijoin PROJFiglio,Padre,Madre( paternita JOIN Figlio = Nome REN Nome Figlio(maternita)) Algebra – Join naturale paternita JOIN maternita SQL – Join esplicito select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio SQL – Join naturale Select madre, paternita.figlio, padre from maternita natural join paternita 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Join interni ed esterni Come nell’algebra: Join interno (default) – non vengono considerate le righe che non si accoppiano E’ il theta join dell’algebra Join esterno tre modalita’: 1. Right outer/ 2. Left outer Join interno esteso con le tuple della tabella destra/ sinistra 3. Full outer Join interno esteso con tutte le tuple 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Ricordiamo nell’algebra un esempio di Join esterno sinistro Impiegato Reparto Rossi A Neri B Bianchi Impiegati Reparto Capo B Mori C Bruni Reparti A Rossi C Impiegati JOINLEFT Reparti Neri B Mori Impiegato Reparto Capo Bianchi Rossi A NULL 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Join esterno: "outer join" Ogni persona con padre (e, se nota, madre) select paternita.figlio, padre, madre from paternita left outer join maternita on paternita.figlio = maternita.figlio 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Outer join Persona, padre, (e se nota, madre) select paternita.figlio, padre, madre from maternita left outer join paternita on maternita.figlio = paternita.figlio from maternita right outer join paternita from maternita full outer join paternita Persona, madre, (e se noto, padre) Persona, madre, padre 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico di nome select nome, reddito from persone where eta < 30 order by nome 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill select nome, reddito from persone where eta < 30 order by nome select nome, reddito from persone where eta < 30 Persone Nome Reddito Andrea 21 Aldo 15 Filippo 30 Persone Nome Reddito Andrea 21 Aldo 15 Filippo 30 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Ordinamento su piu’ attributi: sintassi e semantica Va riportato l’elenco degli attributi A1, A2, .. An (Es. Cognome, Nome, Citta’) Viene fatto sul primo, poi sul secondo, poi su An Per default l’ordinamento e’ ascendente. se lo si vuole discendente occorre usare il qualificatore desc 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.5.1 Si consideri nuovamente lo schema di base dati: STUDENTI (Matricola, Cognome, Nome, DataNascita) ESAMI (Studente, Voto, Corso) CORSI (Codice, Titolo, Docente) Scrivere in SQL le seguenti interrogazioni: Trova tutti gli studenti con gli esame superati e i voti. Trova gli studenti che hanno sostenuto esami di corsi con docente “Rossi” e con voto maggiore di 27 Trova gli studenti che hanno sostenuto l’esame del corso di Analisi 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.5.2 Eseguire l’esercizio 4.7 del testo di riferimento, domande 1-6 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Limiti dei precedenti operatori Con i precedenti operatori non possiamo esprimere interrogazioni del tipo: Trova lo stipendio medio Trova l’eta’ massima che calcolano operatori di aggregazione su un insieme di tuple. Nella prossima lezione tratteremo gli operatori aggregati. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Join esplicito Join naturale Join esterno sinistro Join esterno destro Full outer join 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill