Elaborazione Automatica dei Dati. SQL come Query Language. Enrico Cavalli. Anno Accademico Il linguaggio SQL
|
|
- Gianluigi Valenti
- 8 anni fa
- Visualizzazioni
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 Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono
DettagliIl 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
DettagliInformatica. 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
DettagliOperazioni 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
DettagliESEMPI 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
DettagliEsercitazione 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
DettagliUso 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
DettagliIstruzioni DML di SQL
Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,
DettagliSQL - 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
DettagliIl 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
DettagliQuery. 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è
DettagliUtilizzando 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
DettagliCONCETTO 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
DettagliLe 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
DettagliMODULO 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
DettagliAlgebra 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
DettagliINFORMATICA 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
DettagliLinguaggi 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
Dettagli4 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
DettagliCapitolo 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
DettagliBasi 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,
DettagliInterrogazioni 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
DettagliDBMS (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
DettagliBasi 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
DettagliIl 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
DettagliAbilità 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.
DettagliIl 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
DettagliDispensa 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
DettagliIntroduzione 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
DettagliData 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
DettagliData 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
DettagliSQL/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,
DettagliElementi 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
DettagliOSSIF 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
DettagliSQL 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.
DettagliMAX, 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
DettagliGli 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:
DettagliCorso 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
DettagliLe 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
DettagliSQL: 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,
DettagliPer 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
DettagliIntroduzione 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
DettagliData 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,
DettagliProgettazione 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
DettagliIl 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
DettagliSQL (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
DettagliBasi 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
DettagliPROGRAMMA 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
DettagliIntroduzione 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
DettagliSQL 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,
DettagliINFORMATICA. 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
DettagliSQL 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
DettagliBasi 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
DettagliMODELLO 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)
DettagliStructured 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
Dettaglia.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
DettagliLezione 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)
DettagliDATABASE 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.
DettagliIl 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
DettagliInformatica 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à
DettagliInterrogazioni 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
DettagliSistemi 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
DettagliInformatica 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
DettagliBasi 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
DettagliModello 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)
DettagliBasi 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,
DettagliALGEBRA 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.
DettagliI 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
DettagliDatabase. 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
DettagliModello 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
DettagliDDL, 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
DettagliMicrosoft 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
DettagliIstruzioni 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
DettagliBasi 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,
DettagliIntroduzione. 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
DettagliMODULO 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
DettagliTEORIA 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
DettagliDefinizione 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
DettagliARCHIVI 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).
DettagliCultura 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
DettagliSQL. 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
DettagliEsercitazione 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
DettagliFa 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
DettagliUser 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
DettagliArchivi 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
DettagliGERARCHIE 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
DettagliPer 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
DettagliVolumi 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
DettagliUso 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
DettagliDocumentazione 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
DettagliDatabase 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
DettagliStoria. 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:
DettagliProva 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
DettagliTipi 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
DettagliEsercitazione 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,
DettagliIl 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)
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
DettagliITI 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
DettagliUso 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
DettagliOrganizzazione 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