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

Slides:



Advertisements
Presentazioni simili
Istruzione SELECT (versione base)
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 - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Basi di dati Esercizi su ALGEBRA RELAZIONALE 17/10/2013 Paolo Atzeni 1.
Esercizi su ALGEBRA RELAZIONALE
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.
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.
SQL Linguaggio per l’interrogazione di una base dati.
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
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
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
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
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
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
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Nomi degli studenti che quest’anno hanno preso un voto
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.4 Select - 4

Gestione duplicati in SQL: la clausola DISTINCT In SQL, al contrario dell’algebra relzionale, la tabella finale mantiene eventuali tuple distinte duplicate. Quindi, per eliminarle, occorre utilizzare la clausola DISTINCT 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Consideriamo lo schema di relazione Impiegati (Matricola, Cognome, Filiale, Stipendio) Vogliamo trovare cognome e filiale di tutti gli impiegati In algebra relazionale abbiamo PROJ Cognome, Filiale (Impiegati) 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Cognome e filiale di tutti gli impiegati Esecuzione in algebra relazionale Cognome Filiale Stipendio Matricola Neri Milano 64 5998 Napoli 55 7309 Rossi Roma 5698 44 9553 PROJ Cognome, Filiale (Impiegati) 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Semantica in SQL della clausola DISTINCT Select cognome, filiale from impiegati Select distinct cognome, filiale from impiegati Cognome Filiale Neri Milano Napoli Rossi Roma Cognome Filiale Neri Milano Napoli Rossi Roma 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Selezione, proiezione e join insieme Torniamo all’esempio principale 04/2007 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 Padre Paternità Figlio Luigi Franco Sergio Olga Filippo Andrea Aldo 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Selezione, proiezione e join nell‘algebra relazionale I padri di persone che guadagnano più di venti mila € PROJPadre(Paternita JOIN Figlio =Nome SELReddito>20 (Persone)) Quali relazioni Vanno utilizzate? Nome Età Persone Reddito 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 Madre Maternità Figlio Padre Paternità N.B. Qui abbiamo fatto prima la SEL E poi il Join 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Selezione, proiezione e join in SQL I padri di persone che guadagnano più di venti mila € Select distinct padre from persone, paternita where Figlio = Nome and Reddito > 20 Nome Età Persone Reddito 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 Madre Maternità Figlio Padre Paternità Risultato Luigi Franco N.B. qui non abbiamo necessita’ di ridenominazioni 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Join naturale Padre e madre di ogni persona Algebra: Paternita JOIN Maternita SQL select Paternita.figlio, padre, madre from Maternita, Paternita where Paternita.figlio = Maternita.figlio Nome Età Persone Reddito Madre Maternità Figlio Luisa Anna Maria Olga Filippo Andrea Aldo Luigi N.B. Trova Prima le relazioni 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 Padre Paternità Figlio Luigi Franco Sergio Olga Filippo Andrea Aldo 04/2007 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 PROJNome, Reddito, RP (SELReddito>RP (RENNP,EP,RP  Nome,Eta,Reddito(Persone) JOINNP=Padre (paternita JOIN Figlio =Nome persone))) Nome Età Persone Reddito 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 Madre Maternità Figlio Paternità Padre 04/2007 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 Nome Età Persone Reddito 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 Madre Maternità Figlio Paternità Padre d d 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Domanda 7.4.1 Trovare le persone che guadagnano meno delle rispettive madri; mostrare nome, reddito e reddito della madre. La precedente interrogazione era: 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 Risposta: la nuova e‘ from persone m, maternita‘, persone f where m.nome = madre and f.reddito < m.reddito 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.4.1 Trovare le persone che guadagnano meno sia dei rispettivi padri che delle rispettive madri. Mostrare nome, reddito, reddito del padre, reddito della madre. 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Esaminiamo con maggiore precisione l’operatore di ridenominazione 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Utilita’ delle ridenominazioni Schema R1(A1,A2), R2 (A3,A4) REN B1,B2A1,A4 ( PROJ A1,A4 (SEL A2 = A3 AND A4 = C1( R1 JOIN R2 JOIN REN C1,C2  A1,A2 (R1)))) Si puo’ tradurre in select X.A1 AS B1, Y.A4 AS B2 from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 AND Y.A4 = Z.A1 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

Ridenominazioni e variabili Una ridenominazione svolge in SQL il ruolo che le variabili svolgono nei linguaggi programmativi. Es. .... From Impiegato I1, Impiegato I2 ..... (puo’ essere utile nei Join, vedi piu’ avanti) E’ come se fossero create due versioni diverse della stessa tabella Impiegato Per questa ragione useremo nel seguito per le ridenominazioni anche il termine variabili 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

SELECT, con ridenominazione del risultato select figlio, f.reddito as reddito, p.reddito as redditoPadre from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Clausola DISTINCT Join naturale in SQL Utilita’ delle ridenominazioni 04/2007 adattato da Atzeni-etal., Basi di dati, McGrawHill