Elaborazione Automatica dei Dati. SQL come Query Language. Enrico Cavalli. Anno Accademico Il linguaggio SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Elaborazione Automatica dei Dati. SQL come Query Language. Enrico Cavalli. Anno Accademico 2012-2013. Il linguaggio SQL"

Transcript

1 Elaborazione Automatica dei Dati SQL come Query Language Enrico Cavalli Anno Accademico Il linguaggio SQL SQL = Structured Query Language Diverse versioni del linguaggio gli standard ANSI: SQL, SQL2, SQL3 le versioni proposte dai produttori di DBMS SQL è un linguaggio che permette di: definire uno schema relazionale - DDL modificare la base di dati - DML costruire interrogazioni - QL Le interrogazioni che si costruiscono con SQL sono un estensione di quelle dell algebra relazionale Esaminiamo SQL come linguaggio per interrogare il database Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 2

2 Le interrogazioni dell algebra relazionale con SQL Interrogazioni in SQL (1) Considerando la base di dati definita dallo schema: Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) Costruiamo le interrogazioni per ottenere: Titolo ed Anno dei film della Fox lunghi almeno 100 minuti SELECT Titolo, Anno FROM Film WHERE NomeStudio = Fox AND Lunghezza >= 100; Tutti gli attributi dei film della Fox lunghi più di 100 minuti SELECT * FROM Film WHERE NomeStudio = Fox AND Lunghezza > 100; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 4

3 Interrogazioni in SQL (2) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) L elenco degli attori del film: Moulin Rouge del 2002 SELECT NomeAttore FROM Attori WHERE Titolo = Moulin Rouge AND Anno = 2002; L elenco degli studi che hanno prodotto i film con Nicole Kidman SELECT NomeStudio FROM Film, Attori WHERE Film.Titolo = Attori.Titolo AND Film.Anno = Attori.Anno AND NomeAttore = Nicole Kidman ; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 5 Interrogazioni in SQL (3) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) I protagonisti dei film che durano almeno 100 minuti SELECT NomeAttore FROM Film, Attori WHERE Film.Titolo = Attori.Titolo AND Film.Anno = Attori.Anno AND Lunghezza >= 100; I protagonisti e la durata in ore dei film che durano più di 100 minuti SELECT NomeAttore, Lunghezza/ AS Durata FROM Film AS F, Attori AS A WHERE F.Titolo = A.Titolo AND F.Anno = A.Anno AND Lunghezza > 100; Estensioni rispetto all algebra relazionale Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 6

4 Condizioni di ricerca (1) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) I film di durata compresa tra 90 e 120 minuti SELECT Titolo, Anno FROM Film WHERE Lunghezza Between 90 AND 120; Equivale all interrogazione: SELECT Titolo, Anno FROM Film WHERE Lunghezza>=90 AND Lunghezza<=120; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 7 Condizioni di ricerca (2) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) I film dove recitano gli attori X o Y o Z SELECT Titolo, Anno FROM Attori WHERE NomeAttore IN ( X, Y, Z ); Equivale all interrogazione: SELECT Titotlo, Anno FROM Attori WHERE NomeAttore = X OR NomeAttore = Y OR NomeAttore = Z ; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 8

5 Confronto di Stringhe (1) Matricola Matricola Nome Nome Età Età 101 M.Rossi M.Rossi M.Bianchi M.Bianchi L.Neri L.Neri N.Bini N.Bini M.Celli M.Celli S.Bisi S.Bisi N.Bini N.Bini S.Rossi S.Rossi M.Rossi M.Rossi Elenco degli impiegati il cui cognome inizia per B o per C SELECT * FROM Impiegati WHERE Nome LIKE _.B%' OR Nome LIKE _.C%' ; Matricola Matricola Nome Nome Età Età M.Bianchi M.Bianchi N.Bini N.Bini M.Celli M.Celli S.Bisi S.Bisi N.Bini N.Bini Si è fatto uso dei caratteri Jolly % ( 0 o più caratteri arbitrari ) _ ( 1 carattere arbitrario ) In molti SQL sono accettati? e * al posto di _ e % Estensione rispetto all algebra relazionale Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 9 Confronto di Stringhe (2) L operatore LIKE fa uso di due caratteri speciali: _ (? ) al posto di un carattere arbitrario % ( * ) al posto di n caratteri arbitrari ( n >= 0 ) Il carattere (apice) in una stringa è indicato con (due apici) Una stringa può spesso essere delimitata con (doppio apice) I caratteri speciali: _ % in una stringa sono indicati con le sequenze di escape, precisando il carattere di escape con ESCAPE Nome LIKE %&_% ESCAPE & Nome deve contenere _ Valore LIKE % % ESCAPE Valore deve terminare con % Titolo LIKE % s% Titolo deve contenere un genitivo sassone Valore LIKE _% % ESCAPE Valore deve terminare con % preceduto da almeno un carattere Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 10

6 Ordinamenti Elenco degli impiegati il cui cognome inizia per B o per C, ordinato per valori decrescenti di Età: SELECT * FROM Impiegati WHERE Nome LIKE _.B%' OR Nome LIKE _.C% ORDER BY Età DESC; Matricola Matricola Nome Nome Età Età S.Bisi S.Bisi M.Celli M.Celli N.Bini N.Bini N.Bini N.Bini M.Bianchi M.Bianchi ORDER BY Colonna [ ASC DESC ] Estensione rispetto all algebra relazionale Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 11 Comprendere l SQL (1) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) SELECT Titolo, Anno, NomeStudio FROM Film; Elenco di tutti i film con titolo anno e nome dello studio SELECT Titolo FROM Film WHERE Anno > 1970 AND NOT acolori; I film in bianco e nero girati dopo il 1970 SELECT Titolo FROM Film WHERE ( Anno > 1970 AND Lunghezza < 90 ) AND NomeStudio = MGM ; I film della MGM girati dopo il 1970 di durata minore di 90 minuti Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 12

7 Comprendere l SQL (2) Film ( Titolo, Anno, Lunghezza, acolori, NomeStudio ) Attori ( Titolo, Anno, NomeAttore ) SELECT Titolo, NomeStudio, Lunghezza FROM Film WHERE Anno > 1970 AND Titolo LIKE %love% ORDER BY NomeStudio, Lunghezza DESC; Elenco dei film girati dopo il 1970 e che contengono love nel titolo ordinato per valori crescenti di NomeStudio e, a parità di nome studio, per valori decrescenti di durata SELECT Titolo FROM Film AS F, Attori AS A WHERE A.Titolo = F.Titolo AND A.Anno = F.Anno AND NomeAttore LIKE %cruis% ; I film recitati da attori nel cui nome compare la sequenza cruis Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 13 Il comando Select (1) SELECT Quali colonne mostrare, ridenominazioni e calcoli FROM Da quali tabelle si prelevano i dati WHERE ORDER BY Le condizioni che devono essere soddisfatte da una riga per essere scelta con il comando SELECT Ordinamenti Le clausole obbligatorie Sono: SELECT e FROM Deve essere rispettato l ordine: SELECT FROM WHERE ORDER BY Il comando SELECT termina con ; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 14

8 Il comando Select (2) SELECT Proiezioni Ridenominazioni Calcoli FROM WHERE Prodotti Cartesiani Join Selezioni Condizioni di Join Il Join di tabelle è ottenuto con il Theta Join: si costruisce il prodotto cartesiano delle tabelle elencandole nella clausola FROM e si specifica nella clausola WHERE quali righe scegliere Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 15 Interrogazioni in SQL(1) Date le tabelle: Impiegati ( Matricola, Nome, Età, ) Supervisione ( Capo, Impiegato ) Matricola Nome Età Matricola Nome Età 101 M.Rossi M.Rossi M.Bianchi M.Bianchi L.Neri L.Neri N.Bini N.Bini M.Celli 49 M.Celli S.Bisi S.Bisi N.Bini N.Bini S.Rossi S.Rossi M.Rossi M.Rossi Capo Impiegato Capo Impiegato Nome, Matricola, Età dei dipendenti con stipendio > Matricola dei capi degli impiegati che hanno > Nome e dei capi degli impiegati che hanno > L elenco degli impiegati che guadagnano più del proprio capo, mostrando Matricola, Nome e di ogni impiegato e del capo Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 16

9 Interrogazioni in SQL(2) Impiegati ( Matricola, Nome, Età, ) Supervisione ( Capo, Impiegato ) Nome, Matricola, Età degli impiegati con stipendio > 40 SELECT Nome, Matricola, Età FROM Impiegati WHERE > 40; Matricola dei capi degli impiegati con stipendio > 40 SELECT Supervisione.Capo FROM Impiegati, Supervisione WHERE Impiegati. > 40 AND Impiegati.Matricola=Supervisione.Impiegato; Come si è arrivati a questa Select? Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 17 Interrogazioni in SQL(3) Costruendo la query per passi: SELECT S.*, I.* FROM Supervisione AS S, Impiegati AS I WHERE S.Impiegato = I.Matricola; SELECT S.*, I.* FROM Supervisione AS S, Impiegati AS I WHERE S.Impiegato = I.Matricola AND I. > 40; Capo Capo Impiegato Impiegato Matricola Matricola Nome Nome Età Età M.Rossi 101 M.Rossi M.Bianchi 103 M.Bianchi L.Neri 104 L.Neri N.Bini 105 N.Bini M.Celli M.Celli S.Bisi 231 S.Bisi N.Bini 252 N.Bini Capo Capo Impiegato Impiegato Matricola Matricola Nome Nome Età Età L.Neri 104 L.Neri M.Celli M.Celli S.Bisi 231 S.Bisi N.Bini 252 N.Bini Basta ora visualizzare la matricola del capo Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 18

10 Interrogazioni in SQL(4) Nome e stipendio dei capi degli impiegati che hanno stipendio > 40 Estendere la tabella con i dati di Capo Capo Capo Impiegato Impiegato Estendere la tabella con i dati di Impiegato C.Matricola C.Matricola C.Nome C.Nome C.Età C. Capo Impiegato I.Matricola C.Età C. Capo Impiegato I.Matricola I.Nome I.Nome I.Età I.Età I. I. M.Celli M.Celli M.Rossi 101 M.Rossi M.Celli M.Bianchi M.Celli M.Bianchi M.Celli L.Neri M.Celli L.Neri S.Bisi 231 S.Bisi N.Bini 105 N.Bini S.Rossi 301 S.Rossi M.Celli M.Celli S.Rossi S.Bisi S.Rossi S.Bisi M.Rossi N.Bini M.Rossi N.Bini SELECT * FROM Impiegati AS C, Supervisione AS S, Impiegati AS I WHERE C.Matricola=S.Capo AND S.Impiegato=I.Matricola; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 19 Interrogazioni in SQL(5) SELECT C.Nome, C. FROM Impiegati AS C, Supervisione AS S, Impiegati AS I WHERE C.Matricola = S.Capo AND S.Impiegato = I.Matricola AND I. > 40; I DBMS commerciali, per ragioni di efficienza, non controllano se ci sono righe duplicate,.. Nome M.Celli S.Rossi 70 S.Rossi 70 M.Rossi 65 SELECT DISTINCT C.Nome, C. FROM Impiegati AS C, Supervisione AS S, Impiegati AS I WHERE C.Matricola = S.Capo AND S.Impiegato = I.Matricola AND I. > 40; Nome M.Celli S.Rossi 70 M.Rossi 65 Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 20

11 Interrogazioni in SQL(6) Impiegati che guadagnano più del proprio capo... SELECT C.Matricola,C.Nome,C.,I.Matricola,I.Nome, I. FROM Impiegati AS C, Supervisione AS S, Impiegati AS I WHERE C.Matricola = S.Capo AND S.Impiegato = I.Matricola AND I. > C.; C.Matricola C.Matricola C.Nome C.Nome C. C. I.Matricola I.Matricola I.Nome I.Nome I. I. M.Celli M.Celli 104 L.Neri 104 L.Neri M.Rossi 375 M.Rossi N.Bini 252 N.Bini Volendo esprimere gli stipendi in euro invece che in milioni di lire.. SELECT.. INT(C.*1000/ ) AS StipCapo.. INT(I.*1000/ ) FROM... C.Matricola C.Matricola C.Nome C.Nome StipCapo StipCapo I.Matricola I.Matricola I.Nome I.Nome Expr1005 Expr1005 M.Celli M.Celli L.Neri L.Neri M.Rossi M.Rossi N.Bini N.Bini Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 21 Prodotto Cartesiano, Join Interni, Join Esterni, Operazioni insiemistiche

12 Prodotto Cartesiano Paternità Padre Adamo Adamo Abramo Abramo Figlio Caino Abele Isacco Ismaele Maternità Madre Eva Eva Sara Agar Figlio Caino Set Isacco Ismaele Le tabelle che compaiono nella clausola FROM vengono composte come PRODOTTO CARTESIANO, combinando tutte le righe della prima tabella con tutte le righe della seconda SELECT * FROM Paternità, Maternità; Padre Padre Paternità.Figlio Paternità.Figlio Madre Madre Maternità.Figlio Maternità.Figlio Adamo Adamo Caino Caino Eva Eva Caino Caino Adamo Adamo Abele Abele Eva Eva Caino Caino Abramo Abramo Isacco Isacco Eva Eva Caino Caino Abramo Abramo Ismaele Ismaele Eva Eva Caino Caino Adamo Adamo Caino Caino Eva Eva Set Set Adamo Adamo Abele Abele Eva Eva Set Set Abramo Abramo Isacco Isacco Eva Eva Set Set Abramo Abramo Ismaele Ismaele Eva Eva Set Set Adamo Adamo Caino Caino Sara Sara Isacco Isacco Adamo Adamo Abele Abele Sara Sara Isacco Isacco Abramo Abramo Isacco Isacco Sara Sara Isacco Isacco Abramo Abramo Ismaele Ismaele Sara Sara Isacco Isacco Adamo Adamo Caino Caino Agar Agar Ismaele Ismaele Adamo Adamo Abele Abele Agar Agar Ismaele Ismaele Abramo Abramo Isacco Isacco Agar Agar Ismaele Ismaele Abramo Abramo Ismaele Ismaele Agar Agar Ismaele Ismaele Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 23 Theta Join Paternità Padre Figlio Adamo Caino Adamo Abele Abramo Isacco Abramo Ismaele Maternità Madre Figlio Eva Caino Eva Set Sara Isacco Agar Ismaele SELECT Padre, P.Figlio, Madre FROM Paternità P, Maternità M WHERE P.Figlio = M.Figlio; Il THETA JOIN si ottiene dal Prodotto Cartesiano scrivendo la condizione di Join nella clausola WHERE L esempio mostra un EQUI JOIN E necessaria una proiezione per eliminare la colonna duplicata e ottenere un JOIN NATURALE Nel Join si perde l associazione tra Adamo e Abele e tra Eva e Set Padre P.Figlio Madre Adamo Caino Eva Abramo Isacco Sara Abramo Ismaele Agar Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 24

13 Join Interni: SQL-2 (1) THETA JOIN SELECT ElencoColonne FROM R [INNER] JOIN S ON CondizioniDiJoin WHERE CondizioniDiSelezione; I figli di Adamo e di Eva SELECT Padre, P.Figlio AS Figli, Madre FROM Paternità P INNER JOIN Maternità M ON P.Figlio = M.Figlio WHERE Madre = Eva AND Padre = Adamo ; Padre Figli Madre Adamo Caino Eva Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 25 Join Interni: SQL-2 (2) EQUI JOIN SELECT ElencoColonne FROM R [INNER] JOIN S USING(Col1, Col2,..) WHERE CondizioniDiSelezione; Elenco, con i genitori, dei figli dei quali sono noti entrambi i genitori SELECT Padre, P.Figlio, Madre FROM Paternità P JOIN Maternità M USING (Figlio); Padre P.Figlio Madre Adamo Caino Eva Abramo Isacco Sara Abramo Ismaele Agar Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 26

14 Join Interni: SQL-2 (3) NATURAL JOIN SELECT ElencoColonne FROM R NATURAL JOIN S WHERE CondizioniDiSelezione; Elenco, con i genitori, dei figli dei quali sono noti entrambi i genitori SELECT * FROM Paternità NATURAL JOIN Maternità; Padre Figlio Madre Adamo Caino Eva Abramo Isacco Sara Abramo Ismaele Agar Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 27 Join Esterni (1) SELECT ElencoColonne LEFT FROM R FULL [OUTER] JOIN S ON CondizioniDiJoin RIGHT WHERE CondizioniDiSelezione; FULL JOIN: nel Join devono comparire tutte le righe di R e di S; le righe senza corrispondenti sono completate con valori nulli LEFT JOIN nel Join compaiono tutte le righe di R... RIGHT JOIN nel Join compaiono tutte le righe di S... I Join esterni permettono di estrarre informazioni che i Join interni non riescono a catturare In molti SQL mancano il FULL JOIN e il RIGHT JOIN Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 28

15 Join Esterni (2) Elenco, con i genitori, dei figli di Adamo (anche se non si conosce la madre): SELECT Padre, P.Figlio, Madre FROM Paternità P LEFT JOIN Maternità M ON P.Figlio = M.Figlio WHERE Padre = Adamo ; Padre P.Figlio Madre Adamo Caino Eva Adamo Abele Elenco, con i genitori, dei figli di Eva (anche se non si conosce il padre): SELECT Padre, M.Figlio, Madre FROM Paternità P RIGHT JOIN Maternità M ON P.Figlio = M.Figlio WHERE Madre = Eva ; Padre M.Figlio Madre Adamo Caino Eva Set Eva Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 29 Join Esterni (3) Tutti i figli di Adamo / Eva ( anche se non è noto l altro genitore ): SELECT * FROM Paternità P FULL JOIN Maternità M ON P.Figlio = M.Figlio WHERE P.Padre = Adamo OR M.Madre = Eva ; In MySQL, e altri DBMS, il FULL JOIN si costruisce con l unione di tabelle: ( SELECT Padre, P.Figlio AS Figli, Madre FROM Paternità P LEFT JOIN Maternità M ON P.Figlio = M.Figlio WHERE Padre = 'Adamo') UNION Adamo Abele ( SELECT Padre, M.Figlio AS Figli, MadreSet FROM Paternità P RIGHT JOIN Maternità M ON P.Figlio = M.Figlio WHERE Madre = 'Eva'); Padre Figli Madre Adamo Caino Eva Eva Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 30

16 Valori Nulli (1) I Join Esterni sono sorgenti di valori nulli... Anagrafica ( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti ( Dipart, Indirizzo, Città ) Nome Nome Cognome Cognome Dipart Dipart Ufficio Ufficio Città Città Carlo Carlo Bianchi Bianchi Produzione Produzione Torino Torino Carlo Carlo Rossi Rossi Direzione Direzione Milano Milano Franco Franco Neri Neri Distribuzione Distribuzione Napoli Napoli Giuseppe Giuseppe Verdi Verdi Marketing Marketing Roma Roma Lorenzo Lorenzo Lanzi Lanzi Direzione Direzione Genova Dipart Genova Marco Marco Franco Franco Produzione Dipart Indirizzo Produzione Roma Indirizzo Città Città Roma Mario Mario Rossi Rossi Amministrazione Amministrazione Amministrazione Amministrazione 10 Via 10 Via 45Tito 45 Milano Tito Livio, Milano Livio, Milano Milano Paola Paola Borroni Borroni Amministrazione Direzione Amministrazione Direzione 75 Via 75 Via 40Tito 40 Venezia Tito Livio, Venezia Livio, Milano Milano Distribuzione Distribuzione Via Via Segre, Segre, 9 9 Roma Roma Produzione Produzione Piazza Piazza Lavater, Lavater, 3 3 Torino Torino Ricerca Ricerca Via Via Morone, Morone, 6 6 Milano Milano Chi sono i dipendenti che lavorano in dipartimenti inesistenti? Quali dipartimenti non hanno dipendenti? Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 31 Valori nulli (2) I valori nulli si controllano con il predicato: IS NULL Dipendenti in dipartimenti inesistenti SELECT Nome, Cognome, A.Dipart FROM Anagrafica A LEFT JOIN Dipartimenti D Using (Dipart) WHERE D.Dipart IS NULL; Dipartimenti senza dipendenti SELECT D.Dipart FROM Anagrafica A RIGHT JOIN Dipartimenti D Using (Dipart) WHERE Cognome IS NULL; -- WHERE Cognome = NULL ERRORE Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 32

17 Valori nulli (3) L assenza di valore nulli si controlla con il predicato: IS NOT NULL Dipendenti per i quali è noto l ufficio dove lavorano SELECT Nome, Cognome, Dipart, Ufficio FROM Anagrafica WHERE Ufficio IS NOT NULL; Dipendenti per i quali è noto l ufficio dove lavorano SELECT Nome, Cognome, Dipart, Ufficio FROM Anagrafica WHERE Ufficio <> NULL; Errore Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 33 Valori nulli (4) Esercizi Elencare i figli di Adamo dei quali non si conosce la madre partendo dall elenco visualizzato nella diapositiva dal titolo: Join Esterni (2) e sfruttando i predicati IS NULL oppure IS NOT NULL Elencare i figli di Eva dei quali non si conosce il padre partendo dall elenco visualizzato nella diapositiva dal titolo: Join Esterni (2) e sfruttando i predicati IS NULL oppure IS NOT NULL Elencare i dipendenti in Anagrafica (vedi schema nella diapositiva Valori nulli (1)) dei quali si conosce lo stipendio Elencare i dipartimenti (vedi schema nella diapositiva Valori nulli (1)) che mancano dell indirizzo Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 34

18 Operazioni Insiemistiche (1) Una strategia per elencare i figli di Eva dei quali non è noto il padre porta a considerare in un primo tempo tutti i figli di Eva SELECT Figlio FROM Maternità WHERE Madre='Eva'; Figlio Caino Set Quindi i figli di Eva dei quali è noto il padre Padre Figlio Madre Adamo Caino Eva SELECT Padre, Figlio, Madre FROM Paternità NATURAL JOIN Maternità WHERE Madre='Eva'; Unione Intersezione Differenza? Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 35 Operazioni Insiemistiche (2) EXCEPT costruisce la differenza tra tabelle ( SELECT Figlio FROM Maternità Figlio WHERE Madre = Eva ) Set EXCEPT ( SELECT Figlio FROM Paternità NATURAL JOIN Maternità WHERE Madre ='Eva ); UNION INTERSECT Spesso Assente - EXCEPT Spesso Assente Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 36

19 Esercizi Riassuntivi (1) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) 1. Individuare lo stipendio degli impiegati di cognome Rossi 2. Estrarre tutte le informazioni sugli impiegati di cognome Rossi 3. Restituire lo stipendio mensile ( espresso in euro e non in milioni di lire ) degli impiegati di cognome Bianchi 4. Per tutti gli impiegati estrarre Nome, Cognome e Città dove lavorano 5. Estrarre Nome e Cognome degli impiegati che lavorano nell ufficio 20 del dipartimento Amministrazione 6. Estrarre i nomi propri degli impiegati di Cognome Rossi che lavorano nel dipartimento Amministrazione o nel dipartimento Produzione 7. Estrarre tutte le informazioni sugli impiegati di cognome con una o in seconda posizione e terminano per i Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 37 Esercizi Riassuntivi (2) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) 8. Estrarre Nome, Cognome e nome del dipartimento degli impiegati che lavorano in città diverse da quelle di residenza 9. Elencare tutti i dati dei dipendenti che lavorano in dipartimenti che hanno sede a Roma 10.Elencare i dipartimenti dove lavorano i dipendenti che risiedono a MiIano 11.Estrarre Nome, Cognome e Retribuzione degli impiegati che lavorano a Milano 12.Elencare i dipartimenti che hanno sede in città dove non risiede alcun dipendente 13.Elencare i dipendenti dell amministrazione dei quali non è noto lo stipendio 14.Elencare i dipendenti che lavorano a Torino dei quali non è nota la città di residenza Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 38

20 Esercizi Riassuntivi (3) Dipendenti( Codice, Cognome,, Manager ) La tabella Dipendenti contiene, per ogni dipendente, il codice che lo identifica, il cognome, lo stipendio e il codice del dirigente da cui dipendono 15.Con un comando SELECT realizzare una tabella con tre colonne: nella prima compare il codice del dipendente, nella seconda il suo cognome e nell ultima il cognome del manager da cui dipendono 16.Elencare i dipendenti che non dipendono da alcun manager 17.Elencare i dipendenti che hanno come manager Leoni 18.Elencare i dipendenti che hanno retribuzione maggiore od uguale a quella del rispettivo manager 19.Elencare i dipendenti con Cognome, e differenza tra il proprio stipendio e quello del manager da cui dipendono Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 39 Funzioni di Aggregazione e Raggruppamenti

21 Funzioni di Aggregazione (1) Costituiscono un estensione dell algebra relazionale Sintetizzano i valori di un intera colonna in un solo valore Possono comparire nelle sole clausole SELECT o HAVING Aggregazione: producono un solo valore dall elenco di valori che appaiono in una colonna: SUM: la somma dei valori in colonna AVG: la media dei valori in colonna MIN: il minimo dei valori in colonna MAX: il massimo dei valori in colonna COUNT: il numero di valori che compaiono in colonna Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 41 Funzioni di Aggregazione (2) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) Somma degli stipendi dei dipendenti che lavorano a Milano SELECT SUM() AS SommaStipendi FROM Anagrafica JOIN Dipartimenti USING (Dipart) WHERE Dipartimenti.Città = 'Milano'; Viene eseguita come se: SommaStipendi SELECT FROM Anagrafica JOIN Dipartimenti USING (Dipart) WHERE Dipartimenti.Città = 'Milano'; Alla colonna viene applicato SUM SommaStipendi 278 Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 42

22 Funzioni di Aggregazione (3) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) Da quante città provengono i dipendenti SELECT COUNT(Città) AS NumeroCittà FROM Anagrafica; NumeroCittà 8 SELECT COUNT(DISTINCT Città) AS NumeroCittà FROM Anagrafica; NumeroCittà 6 COUNT (Colonna) Ignora i valori nulli nella colonna Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 43 Funzioni di Aggregazione (4) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo,Città ) massimo e numero di dipendenti della sede di Roma SELECT MAX() AS Max, COUNT() AS Dipendenti FROM Anagrafica JOIN Dipartimenti USING (Dipart) WHERE Dipartimenti.Città = 'Roma'; Max Dipendenti 45 1 Esercizi Estrarre stipendio massimo, minimo e medio fra quelli di tutti gli impiegati Estrarre lo stipendio massimo fra i dipendenti che lavorano in amministrazione Quanti dipendenti lavorano a Torino? Quanti dipendenti lavorano in una città differente da quella di residenza? Chi è il dipendente della direzione con lo stipendio massimo? (Attenzione!!) Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 44

23 Raggruppamenti (1) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo,Città ) Si presenta, spesso, il problema di aggregare i dati non sull intera colonna ma su particolari sottoinsiemi di una colonna Media degli stipendi nei dipartimenti SELECT Dipart AS Dipartimento, AVG() AS MediaStipendi FROM Anagrafica GROUP BY Dipart; Dipartimento MediaStipendi Amministrazione 41, Direzione 76,5 Distribuzione 45 Produzione 41 Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 45 Raggruppamenti (2) -- 1 SELECT Dipart, FROM Anagrafica Dipartimento Produzione 36 Direzione 80 Distribuzione 45 Amministrazione 40 Direzione 73 Produzione 46 Amministrazione 45 Amministrazione SELECT Dipart, FROM Anagrafica GROUP BY Dipart Dopo il raggruppamento la -- funzione di aggregazione -- viene applicata separata- -- mente ai diversi insiemi Dipartimento Amministrazione 40 Amministrazione 40 Amministrazione 45 Direzione 73 Direzione 80 Distribuzione 45 Produzione 46 Produzione 36 Dipartimento MediaStipendi Amministrazione 41, Direzione 76,5 Distribuzione 45 Produzione 41 Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 46

24 Raggruppamenti (3) L applicazione della funzione di aggregazione ai -- singoli raggruppamenti, passo 3, avviene come se la -- sua valutazione avvenisse nel seguente modo SELECT A.Dipart,( SELECT, AVG() FROM Anagrafica B WHERE A.Dipart=B.Dipart ) FROM Anagrafica A GROUP BY Dipart; Dipartimento Amministrazione 40 Amministrazione 40 Amministrazione 45 Direzione 73 Direzione 80 Distribuzione 45 Produzione 46 Produzione 36 Dipartimento MediaStipendi Amministrazione 41, Direzione 76,5 Distribuzione 45 Produzione 41 Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 47 Raggruppamenti (4) Film ( Titolo,Anno,Lunghezza,aColori,NomeStudio,Produttore ) Produttori ( CodProd, NomeProduttore, Indirizzo ) Elencare i produttori con il numero di film prodotti da ciascuno di essi SELECT * FROM Film, Produttori WHERE Produttore = CodProd; SELECT NomeProduttore FROM Film, Produttori WHERE Produttore = CodProd GROUP BY NomeProduttore; SELECT NomeProduttore, COUNT(*) FROM Film, Produttori WHERE Produttore = CodProd GROUP BY NomeProduttore; Nella clausola SELECT possono comparire solo campi che compaiono anche nella clausola GROUP BY e funzioni di aggregazione Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 48

25 Predicati sui gruppi: Having (1) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo,Città ) I dipartimenti che spendono più di 100 in stipendi SELECT Dipart, SUM() AS SommaStipendi FROM Anagrafica GROUP BY Dipart HAVING SUM() > 100; Dipartimento Dipartimento Amministrazione Amministrazione Amministrazione Amministrazione Amministrazione Amministrazione Direzione Direzione Direzione Direzione Distribuzione Distribuzione Produzione Produzione Produzione Produzione Dopo il raggruppamento viene valutato il predicato della clausola HAVING Dipart Dipart SommaStipendi SommaStipendi Amministrazione Amministrazione Direzione Direzione Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 49 Predicati sui gruppi: HAVING (2) Film ( Titolo,Anno,Lunghezza,aColori,NomeStudio,Produttore ) Produttori ( CodProd, NomeProduttore, Indirizzo ) Numero di film prodotti dai produttori che hanno cominciato a produrre film prima del 19 SELECT NomeProduttore, COUNT(*) FROM Film, Produttori WHERE Produttore = CodProd GROUP BY NomeProduttore; SELECT NomeProduttore, COUNT(*) FROM Film, Produttori WHERE Produttore = CodProd GROUP BY NomeProduttore HAVING Min(anno) < 19; HAVING stabilisce condizioni sui raggruppamenti generati dalla clausola GROUP BY Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 50

26 Ordine delle clausole Le clausole di un comando SELECT sono: SELECT FROM WHERE GROUP BY HAVING ORDER BY SELECT, FROM sono le uniche clausole obbligatorie Le diverse clausole, se presenti, devono rispettare l ordine dell elenco Il motore SQL le elabora nel seguente ordine: FROM WHERE GROUP BY HAVING SELECT ORDER BY Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 51 Esercizi (1) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo,Città ) Estrarre i dipartimenti dove non lavorano impiegati di cognome Rossi Determinare lo stipendio massimo del dipartimento Amministrazione massimo, minimo e medio dei dipendenti che lavorano a Roma Dipartimento dell impiegato che guadagna lo stipendio massimo? (Usare ORDER BY) Nome e Cognome dell impiegato che guadagna lo stipendio minimo (Usare ORDER BY) Elenco dei dipartimenti con il numero di dipendenti che vi lavorano Da quante città differenti provengono i dipendenti del dipartimento Amministrazione In quanti dipartimenti lavorano i dipendenti che risiedono a Roma Lo stipendio massimo medio e minimo dei dipendenti del dipartimento Marketing Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 52

27 Esercizi (2) PC( Produttore, Modello ) Caratteristiche( Modello, Velocità, Ram, CD, HD, Prezzo ) Trovare la velocità media dei PC Trovare la velocità media dei PC che costano più di 1500 Euro Trovare il prezzo medio dei PC prodotti da HP Trovare il produttore che fornisce almeno tre modelli di PC Trovare per ogni produttore il prezzo del PC più costoso Trovare la velocità massima dei PC di prezzo inferiore a 1000 Euro Elencare i PC di velocità massima di prezzo inferiore a 1000 euro Elencare i produttori che hanno PC con HD di almeno 80 GB e prezzo medio compreso tra 500 e 900 euro Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 53 Esercizi (3) Studenti ( Matricola, Nome, Cognome, Indirizzo ) Corsi ( CodiceCorso, NomeCorso, CodiceDocente ) Docenti ( CodiceDocente, Nome, Cognome ) Esami ( CodiceCorso, Matricola, Data, Voto ) Elenco degli esami registrati nel corso del 2005 con: Nome, Cognome, Matricola dello studente, nome del corso, Nome e Cognome del docente. L elenco deve essere suddiviso per docente. Quanti esami sono stati registrati dal docente: Enrico Cavalli nel corso del 2004? Estrarre il numero degli esami sostenuti dallo studente con matricola Estrarre la media dei voti dello studente con matricola Elenco dei corsi per i quali non sono stati superati esami Elenco dei docenti che non hanno registrato esami nel corso del 2003 Elenco degli studenti che hanno sostenuto più di 3 esami nel corso del 2005 Elenco dei laureandi (studenti con almeno 28 esami superati) Numero dei corsi insegnati dal docente Enrico Cavalli Docenti che sono titolari di almeno 2 corsi Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 54

28 Interrogazioni Nidificate Interrogazioni Nidificate (1) Impiegati( Matricola, Nome, Età, ) Supervisione( Capo, Impiegato ) Il nome del capo di M.Celli SELECT Nome FROM Impiegati Si può usare un WHERE Matricola = comando SELECT al posto ( SELECT Capo di una costante in una FROM Supervisione clausola WHERE WHERE Impiegato = ( SELECT Matricola FROM Impiegati WHERE Nome = M.Celli ) ); Matricola Matricola Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 56

29 Interrogazioni Nidificate (2) Impiegati( Matricola, Nome, Età, ) Supervisione( Capo, Impiegato ) Il nome del capo di M.Celli SELECT Nome FROM Impiegati WHERE Matricola = ( SELECT Capo FROM Supervisione WHERE Impiegato = ); Capo 310 SELECT Nome FROM Impiegati WHERE Matricola = 310; S.Rossi Nome La matricola di Celli, estratta da Impiegati, è stata usata in Supervisione per trovare la matricola del capo di Celli. Noto questo valore è possibile recuperare il nome del capo di Celli dalla tabella Impiegati Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 57 Interrogazioni Nidificate (3) Impiegati( Matricola, Nome, Età, ) Supervisione( Capo, Impiegato ) Il nome del capo di M.Celli: approccio tradizionale SELECT C.Nome FROM Impiegati AS C, Supervisione AS S, Impiegati AS I WHERE C.Matricola = S.Capo AND S.Impiegato = I.Matricola AND I.Nome = M.Celli ; Le interrogazioni nidificate sono un modo concettualmente diverso di costruire le interrogazioni Forniscono un metodo alternativo a quello dell algebra relazionale Possono essere utilizzate per semplificare dal punto di vista concettuale la progettazione di interrogazioni complesse In molti casi sono insostituibili... Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 58

30 Interrogazioni Nidificate (4) Nome Cognome Dipart Ufficio Città Carlo Bianchi Produzione Torino Carlo Rossi Direzione 80 Milano Franco Neri Distribuzione 45 Napoli Giuseppe Verdi Marketing Roma Lorenzo Lanzi Direzione 7 73 Genova Marco Franco Produzione Roma Mario Rossi Amministrazione Milano Paola Borroni Amministrazione Venezia Chi è l impiegato con lo stipendio più elevato? SELECT MAX() FROM Dipendenti; Max() 80 SELECT Nome, Cognome FROM Dipendenti WHERE = 80; Nome Cognome Carlo Rossi SELECT Nome, Cognome FROM Dipendenti WHERE = ( SELECT MAX() FROM Dipendenti ); Nome Cognome Carlo Rossi Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 59 Interrogazioni Nidificate (5) Chi sono gli impiegati con lo stipendio superiore alla media? SELECT Nome, Cognome FROM Dipendenti WHERE > ( SELECT AVG() FROM Dipendenti ); Gli impiegati con lo stipendio superiore alla media e di quanto la superano SELECT Nome,Cognome, - ( SELECT AVG() FROM Dipendenti ) FROM Dipendenti WHERE > ( SELECT AVG() FROM Dipendenti ); Si osservi che le risposte alle precedenti richieste possono essere ottenute con una serie di interrogazioni o con una sola query nidificata. Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo

31 Interrogazioni Nidificate (6) Impiegati( Matricola, Nome, Età, ) Supervisione( Capo, Impiegato ) Elencare i capi con tutti i dati SELECT DISTINCT Capo FROM Supervisione; Capo SELECT * FROM Impiegati WHERE Matricola IN (,231,301,375); SELECT * FROM Impiegati WHERE Matricola IN ( SELECT DISTINCT Capo FROM Supervisione ); Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 61 Interrogazioni Nidificate (7) Impiegati( Matricola, Nome, Età, ) Supervisione( Capo, Impiegato ) Elencare i dipendenti che non sono capi SELECT * FROM Impiegati WHERE Matricola NOT IN ( SELECT DISTINCT Capo FROM Supervisione ); Un elenco di valori prodotto da un comando SELECT può essere inserito in una clausola WHERE per essere esaminato con opportuni operatori: IN, ALL, ANY,.. Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 62

32 Operatori con le sottointerrogazioni (1) Operatori per esaminare un elenco prodotto da una SELECT: s IN Elenco x Elenco x = s s NOT IN Elenco x Elenco x s s > ALL Elenco x Elenco s > x (<, <=, <>,.. ) NOT s > ALL Elenco ( x Elenco s > x ) s > ANY Elenco x Elenco s > x (<, <=, <>,.. ) NOT s > ANY R ( x Elenco s > x ) EXIST R R NOT EXIST R R = Nella maggior parte dei casi s indica uno scalare, in alcuni casi s può essere una tupla, mentre R rappresenta una tabella, ANY sinonimo di SOME Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 63 Operatori con le sottointerrogazioni (2) Gli operatori introdotti non sono indipendenti s IN Elenco permette di costruire l intersezione di tabelle s NOT IN Elenco permette di costruire la differenza di tabelle I figli di Adamo ed Eva SELECT Figlio FROM Maternità WHERE Madre = Eva AND Figlio IN ( SELECT Figlio FROM Paternità WHERE Padre = Adamo ); I figli di Adamo ma non di Eva SELECT Figlio FROM Paternità WHERE Padre = Adamo AND Figlio NOT IN ( SELECT Figlio FROM Maternità WHERE Madre = Eva ); Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 64

33 Operatori con le sottointerrogazioni (3) Anagrafica( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo,Città ) Elenco dei dipartimenti che hanno impiegati SELECT Dipart, Indirizzo, Città FROM Dipartimenti D WHERE EXIST ( SELECT * FROM Anagrafica A WHERE A.Dipart = D.Dipart ); Dipendenti della Ricerca con stipendio maggiore -- di quello di tutti i dipendenti del Marketing SELECT Nome, Cognome FROM Anagrafica WHERE Dipart = Ricerca AND > ALL ( SELECT FROM Anagrafica WHERE Dipart = Marketing ); Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 65 Esempi (1) Database sulle navi. Le navi sono costruite in serie: le navi della stessa serie sono tutte uguali e costituiscono una classe. Il campo Tipo di una certa classe è un carattere ( I, C, P, S, ecc ), che indica il tipo di nave ( Incrociatore, Corazzata, Portaerei, Sommergibile,.. ) Classi (Classe, Tipo, Paese, Stazza) Navi (Nome, Classe, DataVaro) 1. Elencare le nazioni che posseggono sia sommergibili che portaerei Risolto come intersezione Approccio tradizionale: congiungendo tabelle 2. Elencare le classi con una sola nave come membro della classe Senza usare GROUP BY Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 66

34 Esempi (2) Classi( Classe, Tipo, Paese, Stazza ) Navi( Nome, Classe, DataVaro ) Nazioni che hanno sia sommergibili che portaerei -- Intersezione realizzata con IN SELECT DISTINCT Paese FROM Classi JOIN Navi USING (Classe) WHERE Tipo = S AND Paese IN ( SELECT DISTINCT Paese FROM Classi JOIN Navi USING (Classe) WHERE Tipo = P ); Ipotesi: se c è una classe c è almeno una nave SELECT DISTINCT C1.Paese FROM Classi C1 JOIN Classi C2 USING (Paese) WHERE C1.Tipo = S AND C2.Tipo = P ; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 67 Esempi (3) Classi( Classe, Tipo, Paese, Stazza ) Navi( Nome, Classe, DataVaro ) Le classi con almeno una nave Esercizi SELECT DISTINCT N1.Classe concettualmente FROM Navi N1 JOIN Navi N2 USING (Classe) difficili WHERE N1.Nome = N2.Nome; Le classi con più di una nave SELECT DISTINCT N1.Classe FROM Navi N1 JOIN Navi N2 USING (Classe) WHERE N1.Nome <> N2.Nome; Le classi con una sola nave: differenza delle -- precedenti tabelle usando NOT IN Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 68

35 Sottointerrogazioni Complesse (1) Nome Cognome Dipart Ufficio Città Nome Cognome Dipart Ufficio Città Carlo Bianchi Produzione Torino Carlo Bianchi Produzione Torino Carlo Rossi Direzione 80 Milano Carlo Rossi Direzione 80 Milano Franco Neri Distribuzione 45 Napoli Franco Neri Distribuzione 45 Napoli Giuseppe Verdi Marketing Roma Giuseppe Verdi Marketing Roma Lorenzo Lanzi Direzione 7 73 Genova Lorenzo Lanzi Direzione 7 73 Genova Marco Franco Produzione Roma Marco Franco Produzione Roma Mario Rossi Amministrazione Milano Mario Rossi Amministrazione Milano Paola Borroni Amministrazione Venezia Paola Borroni Amministrazione Venezia Dipendenti con lo stesso nome di addetti alla Produzione SELECT * FROM Dipendenti WHERE Nome = ANY ( SELECT DISTINCT Nome Nome FROM Dipendenti Carlo WHERE Dipart = 'Produzione'); Marco Nome Cognome Dipart Ufficio Città Carlo Bianchi Produzione Torino Carlo Rossi Direzione 80 Milano Marco Franco Produzione Roma Così non va bene! Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 69 Sottointerrogazioni Complesse (2) Soluzione: i nomi prodotti dalla query interna non devono comprendere quelli (uguali) ma che provengono dalla medesima riga della query esterna Query Esterna SELECT * FROM Dipendenti AS A WHERE Nome = ANY ( Query interna SELECT Nome FROM Dipendenti AS B WHERE Dipart = 'Produzione AND A.Cognome <> B.Cognome ); Nome Nome Cognome Cognome Dipart Dipart Ufficio Ufficio Città Città Carlo Carlo Rossi Rossi Direzione Direzione Milano Milano Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 70

36 Sottointerrogazioni Complesse (3) In generale: Per ogni riga della query esterna viene valutata la query interna e, successivamente, il predicato della query esterna. L operazione è ripetuta per tutte le righe della query esterna. Si osservi che si ottiene lo stesso risultato con l interrogazione: SELECT A.* FROM Dipendenti A, Dipendenti B WHERE A.Nome = B.Nome AND A.Cognome <> B.Cognome AND B.Dipart = 'Produzione ; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 71 Esercizi (1) Classi( Classe, Tipo, Paese, Stazza ) Navi( Nome, Classe, DataVaro ) 1. Il trattato di Washington del 1921 proibì di costruire navi di stazza superiore alle tonnellate. Si elenchino le navi che violarono il trattato 2. Elencare gli incrociatori italiani varati dopo il Elencare le corazzate di stazza superiore a quella di almeno una portaerei 4. Elencare le portaerei di stazza superiore a quella di qualsiasi corazzata 5. Elencare le nazioni che posseggono sommergibili ma non hanno né portaerei nè corazzate 6. Elencare le classi con almeno due navi come membro della classe 7. Elencare le navi con il medesimo nome 8. Elencare la nave (o le navi) italiane di stazza massima 9. Elencare le navi di stazza maggiore della nave italiana più grande Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 72

37 Esercizi (2) Studenti( Matricola, Nome, Cognome, Indirizzo ) Corsi( Corso, Docente, Descrizione ) Esami( Matricola, Corso, Data, Voto ) 10. Chi si è beccato, anche immeritatamente, il voto più alto nel corso di codice X 11. Elencare gli studenti che hanno sostenuto due volte l esame di Y 12. Elencare gli studenti che hanno superato esami con Moriggia o Cavalli 13. Elencare gli esami che non hanno voti superiori a Elencare gli studenti che hanno il voto minimo nel corso Z 15. Elencare i corsi per i quali nessuno studente ha sostenuto esami 16. Elencare i corsi (con Docente e Descrizione) nei quali ci sono studenti che hanno superato il relativo esame con votazione pari a Chi sono gli studenti che hanno sostento esami nell ultimo giorno fra quelli registrati 18. Il corso che ha il numero massimo di esami registrati (Suggerimento: creare una tabella di servizio con corso e numero esami registrati e interrogare quella) Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 73 Viste Logiche

38 Viste Logiche (1) Le VISTE LOGICHE sono tabelle virtuali create dinamicamente con interrogazioni su tabelle reali o altre viste logiche. Le viste logiche sono interrogabili e, sotto opportune condizioni, modificabili: le modifiche apportate alle viste logiche si riflettono sui dati delle tabelle da cui le viste sono derivate Impiegati( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) Ammontare degli stipendi per ogni dipartimento CREATE VIEW TotStipendi(Dipartimento,Stipendi) AS SELECT Dipart, SUM() FROM Impiegati GROUP BY Dipart; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 75 Viste Logiche (2) Impiegati( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) Altri Formati: nome colonne per ridenominazione Preferito CREATE VIEW TotStipendi AS SELECT Dipart AS Dipartimento, SUM() AS Stipendi FROM Impiegati GROUP BY Dipart; Le colonne prendono il nome da quelle selezionate CREATE VIEW TotStipendi AS SELECT Dipart, SUM() FROM Impiegati GROUP BY Dipart; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 76

39 Viste Logiche (3) Le viste logiche sono tabelle virtuali Le viste logiche sono tabelle virtuali generate da una query Le viste logiche sono filtri sui dati delle tabelle reali Una vista logica esiste nel DB solo come definizione Le viste logiche materializzate sono viste logiche sulle quali è stato costruito un indice unico clusterizzato, dette anche viste indicizzate (SQL Server) Le viste logiche possono essere interrogate come ogni tabella reale Le viste logiche permettono di inserire, modificare e cancellare dati, a condizione che non ci siano aggregazioni, calcoli, ecc. Le viste logiche possono essere alla base di altre viste logiche Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 77 Viste Logiche (4) Le viste logiche sono utilizzate per: Mostrare all utente i soli dati di cui ha bisogno Impedire la visione di dati riservati Personalizzare i dati secondo le esigenze dell utente Controllare l immissione dei dati ( vedi: WITH CHECK OPTION ) Semplificare concettualmente la progettazione delle interrogazioni Realizzare interrogazioni impossibili da costruire diversamente Mantenere la compatibilità con le vecchie tabelle dopo che ne è stato modificato lo schema Per importare ed esportare dati verso altre applicazioni Per combinare dati distribuiti su diversi server Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 78

40 Viste Logiche (5) Le VISTE LOGICHE sono utili per: Risolvere problemi impossibili da risolvere diversamente Semplificare concettualmente la progettazione delle interrogazioni Il dipartimento che spende di più in stipendi SELECT Dipartimento FROM TotStipendi WHERE Stipendi = ( SELECT Max(Stipendi) FROM TotStipendi ); Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 79 Viste Logiche (6) Impiegati( Nome, Cognome, Dipart, Ufficio,, Città ) Dipartimenti( Dipart, Indirizzo, Città ) Numero medio di uffici per dipartimento CREATE VIEW Uffici AS SELECT Dipart AS Dipartimento, COUNT(DISTINCT Ufficio) AS NumUffici FROM Impiegati GROUP BY Dipart; -- Interrogazione della vista logica SELECT AVG(NumUffici) FROM Uffici; Elenco dei dipartimenti con il nome dell impiegato -- che ha lo stipendio più elevato nel dipartimento CREATE VIEW MaxStipendi AS SELECT Dipart AS Dipartimento, MAX() AS Max FROM Impiegati GROUP BY Dipart; Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 80

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26 Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

SQL - Funzioni di gruppo

SQL - Funzioni di gruppo una funzione di gruppo permette di estrarre informazioni da gruppi di tuple di una relazione le funzioni di gruppo si basano su due concetti: partizionamento delle tuple di una relazione in base al valore

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Query (Interrogazioni) Ultima modifica: 5/4/2012 SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il Turismo classe L-15! È necessario un modo per interrogare le basi di dati, cioè

Dettagli

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi Vogliamo creare una struttura per permettere di memorizzari i voti della classe in tutte le materie Per fare questo untilizziamo tre tabelle Alunni,materie,voti Alunni Materie Voti Creo un record per ogni

Dettagli

CONCETTO DI ANNIDAMENTO

CONCETTO DI ANNIDAMENTO LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

Dettagli

MODULO 5 ACCESS Basi di dati. Lezione 4

MODULO 5 ACCESS Basi di dati. Lezione 4 MODULO 5 ACCESS Basi di dati Lezione 4 ARGOMENTI Lezione 4 Filtrare i dati Esempio 1 Query Cos è Creare Query in visualizza struttura Criteri di ricerca Esempio 2 Esempio 3 Esempio 4 Creare Query in creazione

Dettagli

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

Algebra Relazionale e Calcolo Relazionale. L. Vigliano Algebra Relazionale e Calcolo Relazionale Operazioni associate al modello relazionale Notazione algebrica Algebra relazionale Linguaggio procedurale interrogazioni espresse applicando operatori alle relazioni

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione

Dettagli

Linguaggi per basi di dati

Linguaggi per basi di dati ALGEBRA RELAZIONALE Linguaggi per basi di dati operazioni sullo schema DDL: data definition language operazioni sui dati DML: data manipulation language interrogazione ("query") aggiornamento 2 Linguaggi

Dettagli

4 SQL : Interrogazioni nidificate

4 SQL : Interrogazioni nidificate Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

Interrogazioni complesse. SQL avanzato 1

Interrogazioni complesse. SQL avanzato 1 Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente

Dettagli

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Introduzione all Algebra Relazionale

Introduzione all Algebra Relazionale Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente

Dettagli

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa

Dettagli

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

SQL/OLAP. Estensioni OLAP in SQL

SQL/OLAP. Estensioni OLAP in SQL SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,

Dettagli

Elementi di Algebra Relazionale

Elementi di Algebra Relazionale Note dalle lezioni di INFORMATICA (per gli allievi della classe quinta - indirizzo MERCURIO) Elementi di Algebra Relazionale prof. Stefano D.L.Campanozzi I.T.C. Giulio Cesare Bari - a.s. 2008-2009 1 Introduzione

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

SQL prima 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 2011/12

SQL prima 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 2011/12 SQL prima 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 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

MAX, SUM, AVG, COUNT)

MAX, SUM, AVG, COUNT) INTRODUZIONE A SQL Definizione di tabelle e domini Alcuni vincoli di integrità Struttura base SELECT FROM WHERE Funzioni di aggregazione (MIN, MAX, SUM, AVG, COUNT) Query da più tabelle (FROM R1, Rk) Join

Dettagli

Gli operatori relazionali

Gli operatori relazionali Gli operatori relazionali Agiscono su una o più relazioni per ottenere una nuova relazione (servono a realizzare le interrogazioni sul database) Ci sono tre operazioni fondamentali per i database relazionali:

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

Dettagli

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Le query. Lezione 6 a cura di Maria Novella Mosciatti Lezione 6 a cura di Maria Novella Mosciatti Le query Le query sono oggetti del DB che consentono di visualizzare, modificare e analizzare i dati in modi diversi. Si possono utilizzare query come origine

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere; Maschere e Query Le Maschere (1/2) Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere; Le maschere sono simili a moduli cartacei: ad ogni campo corrisponde un etichetta

Dettagli

Introduzione ai database relazionali

Introduzione ai database relazionali Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita

Dettagli

Data management a.a. 2009-2010. Il linguaggio SQL

Data management a.a. 2009-2010. Il linguaggio SQL Data management a.a. 2009-2010 Il linguaggio SQL 1 Modello di database E' un database generico con anagrafica e movimenti di uso molto frequente: per esempio, clienti e fatture, studenti ed esami sostenuti,

Dettagli

Progettazione di un Database

Progettazione di un Database Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di

Dettagli

Il linguaggio SQL. ing. Alfredo Cozzi 1

Il linguaggio SQL. ing. Alfredo Cozzi 1 Il linguaggio SQL ing. Alfredo Cozzi 1 Il linguaggio SQL Il linguaggio SQL (Structured Query Language) è nato con l intento di soddisfare alle seguenti richieste nei db relazionali: - definire e creare

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Basi di dati 9 febbraio 2010 Compito A

Basi di dati 9 febbraio 2010 Compito A Basi di dati 9 febbraio 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli

Dettagli

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Introduzione al corso

Introduzione al corso Introduzione al corso Sistemi Informativi L-B Home Page del corso: http://www-db.deis.unibo.it/courses/sil-b/ Versione elettronica: introduzione.pdf Sistemi Informativi L-B Docente Prof. Paolo Ciaccia

Dettagli

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL SQL come linguaggio di interrogazione Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse,

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999

Dettagli

Basi di Dati e Sistemi Informativi. Algebra Relazionale

Basi di Dati e Sistemi Informativi. Algebra Relazionale Basi di Dati e Sistemi Informativi Algebra Relazionale Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Introduzione L algebra relazionale è un linguaggio procedurale: le operazioni vengono

Dettagli

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. Introduzione MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli

Structured Query Language parte 1

Structured Query Language parte 1 Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Structured Query Language parte 1 Come interrogare una base di dati relazionale ed avere la risposta esatta Docente: Gennaro Pepe

Dettagli

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati: Gestione dei dati e della conoscenza, a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati: Si vuole modellare

Dettagli

Lezione V. Aula Multimediale - sabato 29/03/2008

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

Dettagli

DATABASE RELAZIONALI

DATABASE RELAZIONALI 1 di 54 UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II DIPARTIMENTO DI DISCIPLINE STORICHE ETTORE LEPORE DATABASE RELAZIONALI Dott. Simone Sammartino Istituto per l Ambiente l Marino Costiero I.A.M.C. C.N.R.

Dettagli

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981

Dettagli

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità

Dettagli

Interrogazioni nidificate, commenti

Interrogazioni nidificate, commenti Interrogazioni nidificate, commenti La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni

Dettagli

Sistemi per la gestione di database: MySQL ( )

Sistemi per la gestione di database: MySQL ( ) Sistemi per la gestione di database: MySQL ( ) Relational Database e Relational Database Management System Un database è una raccolta di dati organizzata in modo da consentire l accesso, il reperimento

Dettagli

Informatica per le discipline umanistiche 2 lezione 10

Informatica per le discipline umanistiche 2 lezione 10 Informatica per le discipline umanistiche 2 lezione 10 Parte III: il computer come strumento per l interazione e la comunicazione Si è parlato di identità Parte III: il computer come strumento per l interazione

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi Modello Relazionale Modello Relazionale Proposto agli inizi degli anni 70 da Codd Finalizzato alla realizzazione dell indipendenza dei dati Unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1 Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1 Si consideri il seguente schema di base di dati che vuole tenere traccia delle attività di un autofficina. MECCANICO (CodiceFiscale,

Dettagli

ALGEBRA RELAZIONALE RIEPILOGO

ALGEBRA RELAZIONALE RIEPILOGO ALGEBRA RELAZIONALE RIEPILOGO PROIEZIONE: (notazione ) Operatore unario per estrarre colonne da una relazione: lista_attributi (R) Lo schema del risultato contiene i soli attributi contenuti in lista_attributi.

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni Modello Relazionale Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni Cronologia dei modelli per la rappresentazione dei dati Modello gerarchico (anni 60) Modello reticolare

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

Microsoft Access Maschere

Microsoft Access Maschere Microsoft Access Maschere Anno formativo: 2007-2008 Formatore: Ferretto Massimo Mail: Skype to: ferretto.massimo65 Profile msn: massimoferretto@hotmail.com "Un giorno le macchine riusciranno a risolvere

Dettagli

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5 Istruzioni SQL Istruzioni SQL 1 Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5 Query di inserimento 5 INSERT INTO 5 Query di

Dettagli

Basi Di Dati, 09/12/2003

Basi Di Dati, 09/12/2003 Basi Di Dati, 09/12/2003 Una concessionaria di auto nuove ed usate vuole automatizzare alcune delle sue attività. L attività che la concessionaria vuole automatizzare riguarda la gestione delle auto nuove,

Dettagli

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei Introduzione Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei. ESEMPI DI INSIEMI DI DATI DA ORGANIZZARE ED USARE IN MANIERA EFFICIENTE Introduzione Più utenti con

Dettagli

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB MODULO 5 DATA BASE MODULO 5 - DATA BASE 1 PROGRAMMA Introduzione: concetti generali di teoria Progettazione rapida introduzione alla progettazione di DB Utilizzo di Access pratica sulla creazione e l utilizzo

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

ARCHIVI E DATABASE (prof. Ivaldi Giuliano) ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).

Dettagli

Cultura Tecnologica di Progetto

Cultura Tecnologica di Progetto Cultura Tecnologica di Progetto Politecnico di Milano Facoltà di Disegno Industriale - DATABASE - A.A. 2003-2004 2004 DataBase DB e DataBase Management System DBMS - I database sono archivi che costituiscono

Dettagli

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: SQL Linguaggio di interrogazione per basi di dati relazionali Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL: Creazione delle tabelle Interrogazione della base di dati

Dettagli

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf Esercitazione 1 SQL: DDL e DML di base Sistemi Informativi T Versione elettronica: L01.2.DDLDMLbase.pdf Prime cose da fare Fare login sul PC usando lo username di Facoltà Procedura descritta qui: http://ccib.ing.unibo.it/content/account

Dettagli

Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine

Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine Calcolo relazionale Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine calcolo Specifica (èla base relazionale su tuple le di proprietà molti con

Dettagli

User Tools: DataBase Manager

User Tools: DataBase Manager Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview

Dettagli

Archivi e Basi di Dati

Archivi e Basi di Dati Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati

Dettagli

GERARCHIE RICORSIVE - SQL SERVER 2008

GERARCHIE RICORSIVE - SQL SERVER 2008 GERARCHIE RICORSIVE - SQL SERVER 2008 DISPENSE http://dbgroup.unimo.it/sia/gerarchiericorsive/ L obiettivo è quello di realizzare la tabella di navigazione tramite una query ricorsiva utilizzando SQL SERVER

Dettagli

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere; Maschere e Query Le Maschere (1/2) Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere; Le maschere sono simili a moduli cartacei: ad ogni campo corrisponde un etichetta

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori

Dettagli

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Sommario - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Introduzione - Un database è un archivio strutturato di dati che può essere manipolato con dei comandi nel linguaggio

Dettagli

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia: Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:

Dettagli

Prova Scritta di Basi di Dati

Prova Scritta di Basi di Dati Prova Scritta di Basi di Dati 25 Luglio 2006 COGNOME: NOME: MATRICOLA: Si prega di risolvere gli esercizi direttamente sui fogli del testo, negli spazi indicati. Usare il foglio protocollo solo per la

Dettagli

Tipi MULTISET: accesso

Tipi MULTISET: accesso Tipi MULTISET: accesso Poiche non e previsto un ordine tra gli elementi un accesso diretto come quello visto per gli array non e possibile E necessario utilizzare funzioni ad hoc Tali funzioni possono

Dettagli

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Istituto di Istruzione Superiore Alessandrini - Marino 1 Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Descrizione Un azienda commerciale che vende prodotti IT (computers,

Dettagli

Il linguaggio SQL: le basi

Il linguaggio SQL: le basi Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

ITI Galilei Salerno Corso Database ed SQL

ITI Galilei Salerno Corso Database ed SQL ITI Galilei Salerno Corso Database ed SQL prof Carmine Napoli Introduzione Database: Si definisce Database un insieme di dati, di solito di notevoli dimensioni, raccolti, memorizzati ed organizzai in modo

Dettagli

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database Uso delle basi di dati CORSO ECDL DataBase Il modulo richiede che il candidato comprenda il concetto di base dati (database) e dimostri di possedere competenza nel suo utilizzo. Cosa è un database, come

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli