Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte."

Transcript

1 Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte 11/03/2005 Maternità Legami logici Paternità Madre Luisa Luisa Anna Anna Padre Sergio Filippo Filippo Persone Nome Età Reddito Anna Filippo Sergio Luisa Legami logici Maternita (Madre, ) Persone (Nome, Citta, Reddito) Paternita (Padre, ) Join esplicito Padre e madre di ogni persona select paternita.figlio, padre, madre from maternita, paternita where paternita.figlio = maternita.figlio select madre, paternita.figlio, padre from maternita JOIN paternita on paternita.figlio = maternita.figlio 3 4 SELECT con join esplicito, sintassi SELECT FROM Tabella { JOIN Tabella ON CondizioneDiJoin }, [ WHERE AltraCondizione ] Quindi la condizione di join non compare nella clausola WHERE ed e spostata nella FROM. Nella WHERE restano le (eventuali) altre condizioni Si ottiene una espressione della interrogazione piu simile a quella dell algebra relazionale. Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre select f.nome, f.reddito, p.reddito from persone p, paternita, persone f wherep.nome= padreand figlio = f.nome and f.reddito > p.reddito select f.nome, f.reddito, p.reddito from persone p join paternita on p.nome = padre join persone f on figlio = f.nome where f.reddito > p.reddito 5 6 1

2 Ulteriore estensione: join naturale (meno diffuso) Algebra Equijoin PROJ,Padre,Madre ( paternita JOIN = Nome REN Nome (maternita)) Algebra Join naturale paternita JOIN maternita SQL Join esplicito select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio SQL Join naturale Select madre, paternita.figlio, padre from maternita natural join paternita Join interni ed esterni Come nell algebra: Join interno (default) non vengono considerate le righe che non si accoppiano E il theta join dell algebra Join esterno tre modalita : 1. Right outer/ 2. Left outer Join interno esteso con le tuple della tabella destra/ sinistra 3. Full outer Join interno esteso con tutte le tuple 7 8 Join esterno: "outer join" Outer join Padre e, se nota, madre di ogni persona select paternita.figlio, padre, madre from paternita left outer join maternita on paternita.figlio = maternita.figlio select paternita.figlio, padre, madre from maternita right outer join paternita on maternita.figlio = paternita.figlio select paternita.figlio, padre, madre from maternita left outer join paternita on maternita.figlio = paternita.figlio select paternita.figlio, padre, madre from maternita full outer join paternita on maternita.figlio = paternita.figlio 9 10 Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico di nome select nome, reddito from persone where eta < 30 order by nome select nome, reddito from persone where eta < 30 Persone Nome Reddito Filippo 30 select nome, reddito from persone where eta < 30 order by nome Persone Nome Reddito Filippo

3 Ordinamento su piu attributi: sintassi e semantica Va riportato l elenco degli attributi A1, A2,.. An (Es. Cognome, Nome, Citta ) Viene fatto sul primo, poi sul secondo, poi su An Per default l ordinamento e ascendente. se lo si vuole discendente occorre usare il qualificatore desc Operatori aggregati Operatori aggregati Nell algebra relazionale, i predicati sono valutati su ciascuna tupla Gli operatori aggregati, che non esistono nell algebra relazionale, vengono valutati su insiemi di tuple Es. Contare quante sono le tuple COUNT Vengono valutati solo dopo aver eseguito la interrogazione base Operatori aggregati Citati nelle espressioni della target list: COUNT, conteggio MIN, minimo MAX, massimo AVG, media sintassibase: Funzione ( [ DISTINCT ] * ) Funzione ( [ DISTINCT ] Attributo ) Dove Funzione e COUNT, MIN, MAX, AVG Operatori aggregati: COUNT E eseguito sull intera tabella, conta il numero di tuple Es: Il numero di figli di select count(*) as NumFigliDi where Padre = '' Viene applicato al risultato dell interrogazione: select * where Padre = ' Paternità select count(*) as NumFigliDi where Padre = '' Padre Sergio Filippo

4 select count(*) as NumFigliDi where Padre = '' Paternità Padre Sergio Filippo NumFigliDi 2 19 COUNT e valori nulli select count(*) from persone select count(reddito) from persone select count(distinct reddito) from persone Persone Nome Età Reddito NULL Anna Maternità Legami logici Paternità Madre Luisa Luisa Anna Anna Padre Sergio Filippo Filippo Persone Nome Età Reddito Anna Filippo Sergio Luisa Altri operatori aggregati SUM (somma), AVG (media), MAX (massimo), MIN (minimo) Ammettono come argomento un attributo o una espressione. Anche in questo caso, viene prima eseguita la interrogazione base e poi si calcola l operatore aggregato. Es. Media dei redditi dei figli di Troviamo prima i redditi dei figli di select reddito from persone join paternita on nome=figlio where padre='' 22 Altri operatori aggregati SUM (somma), AVG (media), MAX (massimo), MIN (minimo) Ammettono come argomento un attributo o una espressione. Anche in questo caso, viene prima eseguita la interrogazione base e poi si calcola l operatore aggregato. Es. Media dei redditi dei figli di select avg(reddito) from persone join paternita on nome=figlio where padre='' Operatori aggregati e valori nulli i valori nulli non contano select avg(reddito) as redditomedio from persone 34 Persone Nome Età Reddito NULL Anna

5 Operatori aggregati e target list Se noi vogliamo trovare nome e reddito dell impiegato con reddito massimo, la seguente interrogazione: select nome, max(reddito) from persone e sintatticamente scorretta! Ricordare il significato: di chi sarebbe il nome? La target list deve essere omogenea e rappresentare o valori atomici o valori aggregati L interrogazione Esempio corretto select min(eta), avg(reddito) from persone E corretta e seleziona l eta minima e il reddito medio delle persone Operatori aggregati Fino a questo momento le funzioni di aggregazione (COUNT, ecc.) si applicano all intero risultato della interrogazione. Le funzioni di aggregazione possono essere applicate a partizioni delle relazioni, cioe a gruppi di tuple. Operatori aggregati e raggruppamenti Le funzioni di aggregazione possono essere applicate a partizioni delle relazioni, cioe a gruppi di tuple. Si usa in questocasola: Clausola GROUP BY: GROUP BY listaattributi Che viene inserita in fondo alla SELECT SELECT target list FROM WHERE GROUP BY listaattributi Semantica di interrogazioni con operatori aggregati e raggruppamenti Esempio 1. Esegui la interrogazione senza GROUP BY e senza operatori aggregati 2. Raggruppa le righe che hanno stessi valori per gli attributi nella listaattributi nella GROUP BY 3. Applica l operatore aggregato a ciascun gruppo Sia data la relazione R(Padre,, Reddito) Dove Reddito e il reddito del figlio

6 Operatori aggregati e raggruppamenti Trovare il numero di figli di ciascun padre che hanno reddito maggiore di 25 select padre, count(*) AS NumFigli from paternita Where reddito > 25 group by Padre Padre Reddito Sergio Filippo Esegui la interrogazione senza GROUP BY e senza operatori aggregati 1. select padre, count(*) AS NumFigli from paternita Where reddito > 25 group by Padre Padre Reddito Sergio Filippo Padre Reddito Sergio Raggruppa le righe che hanno stessi valori per gli attributi nella GROUP BY select padre, count(*) AS NumFigli from paternita Where reddito > group by Padre 3. Applica l operatore aggregato a ciascun gruppo select padre, 3. count(*) AS NumFigli from paternita Where reddito > 25 group by Padre Padre Reddito Sergio Padre Sergio Padre Sergio Padre NumFigli Sergio Regola da rispettare nella clausola GROUP BY In una interrogazione che fa uso della GROUP BY puo comparire come argomento della SELECT, e quindi come insieme di attributi nella target list, solamente un sottoinsieme degli attributi che compaiono nella clausola GROUP BY SELECT target list FROM WHERE GROUP BY insieme di attributi di aggregazione Vediamo perche Operatori aggregati e raggruppamenti select padre, count(*) AS NumFigli from paternita Where reddito > 50 group by padre Cosa calcola questa interrogazione? Trovare il numero di figli di ciascun padre con reddito maggiore di 50 Va bene

7 Cognome Rossi Verdi Neri Gini Dini Peri Turi Altro esempio Dipartimento Ufficio Amministrazione 10 Produzione 20 Direzione 30 Amministrazione 15 Amministrazione 25 Produzione 40 Direzione 50 Altro esempio - 1 Nelloschema Impiegato (Cognome, Dipartimento, Ufficio) L interrogazione Select Dipartimento, Ufficio, Count (Ufficio) From Impiegato Group by Dipartimento Non e corretta (non rispetta la regola!) Infatti applicando la group by e poi la select si ottiene Altro esempio Altro esempio Cognome Rossi Verdi Neri Gini Dini Peri Turi Dipartimento Amministrazione Produzione Direzione Amministrazione Amministrazione Produzione Direzione Ufficio Cognome Rossi Verdi Neri Gini Dini Peri Turi Dipartimento Amministrazione Produzione Direzione Amministrazione Amministrazione Produzione Direzione Ufficio Altro esempio Altro esempio 2 Dipartimento Ufficio Numero uffici Cognome Rossi Gini Dini Verdi Peri Neri Turi Dipartimento Amministrazione Amministrazione Amministrazione Produzione Produzione Direzione Direzione Ufficio Amministrazione Produzione Direzione Che non e coerente con la definizione di istanza nelmodellorelazionale, chedeveessere piatta

8 Altro esempio - 3 Se lo scopo della interrogazione era trovare per ogni dipartimento il numero di uffici, va bene invece l interrogazione Select Dipartimento, count (Ufficio) From Impiegato Group by Dipartimento La restrizione e eccessiva Consideriamo la interrogazione Select Dipartimento, count (*), Citta From Impiegato Join Dipartimento on (Dipartimento = Nome) Group by Dipartimento Sullo schema Dipartimento (Nome, Citta ) Impiegato (Cognome, Dipartimento) Poiche c e una sola citta per dipartimento, Restituirebbe i dipartimenti, il numero di impiegati dei dipartimenti, e la citta del dipartimento Ma. Non e accettata perche la implementazione sarebbe piu complessa, dovendo il compilatore verificare quali sono gli attributi ammissibili D altra parte, si puo sempre esprimere con un insieme di attributi ridondante Select Dipartimento, count (*), Citta From Impiegato join Dipartimento on (Dipartimento = Nome) Group by Dipartimento, Citta Raggruppamenti e target list: altro esempio scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =p.nome group by padre corretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =p.nome group by padre, p.reddito Condizioni sui gruppi Clausola HAVING Tramite la group by le righe sono raggruppate in sottoinsiemi Pero, fino ad ora non e possible esprimere condizioni di tipo aggregato sui sottoinsiemi Vediesempio

9 Condizioni sui gruppi: clausola HAVING - esempio I padri i cui figli hanno un reddito medio maggiore di 25 Non possiamo esprimere condizioni sui gruppi Padre Reddito Sergio Filippo Condizioni sui gruppi: clausola HAVING La clausola HAVING permette di esprimere condizioni sui gruppi, applicandosi a ogni insieme di n-ple risultato della applicazione del GROUP BY SELECT target list FROM WHERE GROUP BY insieme attributi HAVING condizione Condizioni sui gruppi: clausola HAVING - esempio WHERE o HAVING? I padri i cui figli hanno un reddito medio maggiore di 25 I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 20 select padre, avg(reddito) from persone join paternita on figlio = nome group by padre having avg(reddito) > 25 select padre, avg(reddito) from persone join paternita on figlio = nome where eta < 30 group by padre having avg(reddito) > 25 Nella clausola WHERE predicato su operatore elementare Nella clausola HAVING predicato su operatore aggregato Sintassi della select, riassumiamo SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ] Interrogazioniditipoinsiemistico

10 Unione, intersezione e differenza La select da sola non permette di fare unioni, intersezioni, differenze; serve un costrutto esplicito: select Union / Intersect / Except [all] select... Unione Intersezione Differenza Semantica degli operatori E differente rispetto agli altri operatori: a. Negli operatori insiemistici i duplicati vengono eliminati (a meno che si usi all) anche dalle proiezioni! Questo perche : 1. Sono operatori insiemistici 2. L implementazione e efficiente Semantica degli operatori Schema di riferimento Al contrario di quanto accade in algebra relazionale, gli schemi su cui vengono effettuate le operazioni possono anche essere diversi: l unica condizione e che gli attributi devono essere in pari numero e devono avere domini compatibili Per l ordine, vale la posizione degli attributi Maternita (Madre, ) Persone (Nome, Citta, Reddito) Paternita (Padre, ) select padre from paternita union select madre from maternita Notazione posizionale - 1 Maternita (Madre, ) Persone (Nome, Citta, Reddito) Paternita (Padre,) Notazione posizionale, 2 select padre, figlio from paternita union select figlio, madre from maternita select padre, figlio from paternita union select madre, figlio from maternita quali nomi per gli attributi del risultato? quelli del primo operando Accoppia padri-figli Con figli-madri, scorretta Corretta

11 Notazione posizionale, 3 Anche con le ridenominazioni non cambia niente: select padre as genitore, figlio from paternita union select figlio, madre as genitore from maternita Corretta: select padre as genitore, figlio from paternita union select madre as genitore, figlio from maternita 61 Differenza select Nome from Impiegato except select Cognome as Nome from Impiegato Trova i nomi di impiegati che non sono anche cognomi di qualche impiegato Vedremo che si può anche esprimere con select nidificate 62 Intersezione select Nome from Impiegato intersect select Cognome as Nome from Impiegato Trova i nomi degli impegati che sono anche cognomi Equivale a: select I.Nome from Impiegato I, Impiegato J where I.Nome = J.Cognome Interrogazioni complesse (o nidificate) Nelle interrogazioni semplici Le condizioni atomiche permettono sempre e soltanto di confrontare valori elementari (al massimo, di aggregati di gruppi di valori) Es. WHERE Eta > 30 Es. WHERE Eta > 25 HAVING Avg(Reddito) >= 30 Estensione alle interrogazioni semplici E utile estendere i confronti a sintassi del tipo WHERE Attributi o Lista di Attributi OperatoreDiConfronto SELECT

12 Interrogazioni nidificate Nelle interrogazioni nidificate le condizioni atomiche permettono anche A. il confronto fra: uno o piu attributi con il risultato di una sottointerrogazione B. quantificazioni esistenziali (esiste..) Come conseguenza, permettono di collegare interrogazioni semplici, citando nella clausola WHERE una interrogazione e costruendo quindi interrogazioni piu complesse 1. Confronto di uno o piu attributi con il risultato di una sottointerrogazione Maternità Legami logici Paternità Madre Luisa Luisa Anna Anna Padre Sergio Filippo Filippo Persone Nome Età Reddito Anna Filippo Sergio Luisa Interrogazioni nidificate, esempio nome e reddito dei padri di o Sergio select Nome, Reddito, Paternita where Nome = Padre and = ' or = Sergio select Nome, Reddito where Nome = any (select Padre where = ' or = Sergio ) Uno qualunque 70 Esecuzione della interrogazione nidificata Select Nome, Reddito where Nome = any ( select Padre where =' or = Sergio ) Ogni valore di nome nella tabella Persone viene confrontato con il risultato della interrogazione interna, cioe i padri di e Sergio. Quindi l esito della interrogazione e il nome e reddito dei padri di e Sergio. Forma generale delle interrogazioni nidificate SELECT.. FROM. WHERE AttributooListaAttributi OperatoreDiConfronto SELECT

13 Semantica informale delle interrogazioni nidificate -1 L attributo (o attributi) nella clausola WHERE puo essere confrontato con il risultato della interrogazione mediante: operatori relazionali =, <, >, <=, >=, <> seguiti da: 1. Any in questo caso il valore dell attributo soddisfa la condizione se risulta vero il confronto con almeno uno degli elementi restituiti dalla interrogazione Semantica informale delle interrogazioni nidificate -2 L attributo (o attributi) nella clausola WHERE puo essere confrontato con il risultato della interrogazione mediante operatori relazionali =, <, >, <=, >=, <> seguiti da: 2. All in questo caso il valore dell attributo soddisfa la condizione se risulta vero il confronto con tutti gli elementi restituiti dalla interrogazione Esecuzione della interrogazione nidificata Select Nome, Reddito where Nome = any ( select Padre where =' or = Sergio ) Ogni valore di nome nella tabella Persone viene confrontato con il risultato della interrogazione interna, e vengono selezionati i valori che coincidono con almeno uno dei padri di e Sergio. Quindi l esito della interrogazione e il nome e reddito dei padri di e Sergio. Operatori in e not in Per rappresentare il controllo di appartenenza e di esclusione rispetto a un insieme, e possibile usare gli operatori in e not in, che hanno significato del tutto analogo a = any e <> all in e verificato se il valore compare nell insieme risultato della interrogazione not in e verificato se il valore non compare nell insieme risultato della interrogazione Quantificazione esistenziale 2. Quantificazione esistenziale (Esiste, Non esiste) Ulteriore tipo di condizione WHERE EXISTS (Sottoespressione) Dove la sottoespressione e una interrogazione SQL Restituisce il valore vero se la interrogazione restituisce un risultato non vuoto

14 Esempio di uso della EXISTS select * where exists ( select * I padri che hanno almeno un figlio where Padre = Nome) or exists ( select * from Maternita where Madre = Nome) Semantica precisa delle interrogazione nidificata Per capire cosa calcoli una interrogazione nidificata possiamo mentalmente eseguirla: Top-down, cioe dalla interrogazione esterna verso l interna Bottom-up, dalla interna verso l esterna Le madri che hanno almeno un figlio Nome e reddito dei padri di persone che guadagnano più di 20 mila Semantica top down select distinct P.Nome, P.Reddito P, Paternita, Persone F where P.Nome = Padre and = F.Nome and F.Reddito > 20 Forma non nidificata select Nome, Reddito where Nome in (select Padre where = any (select Nome where Reddito > 20) ) Nome e reddito dei padri di persone che guadagnano più di 20 milioni Semantica bottom up select distinct P.Nome, P.Reddito P, Paternita, Persone F where P.Nome = Padre and = F.Nome and F.Reddito > 20 Forma non nidificata select Nome, Reddito where Nome in (select Padre where = any (select Nome where Reddito > 20) ) Si noti che al posto di = any si sarebbe potuto usare in, come detto Forma nidificata e forma semplice si possono comporre Nome e reddito dei padri di persone che guadagnano più di 20 mila select distinct P.Nome, P.Reddito P, Paternita, Persone F where P.Nome = Padre and = F.Nome and F.Reddito > 20 select Nome, Reddito where Nome in ( select Padre, Persone where = Nome and Reddito > 20) Operatori insiemistici e aggregati, e nidificazione

15 Differenza e nidificazione: Trova i nomi di impiegati che non sono anche cognomi di qualche impiegato select Nome from Impiegato except select Cognome as Nome from Impiegato select Nome from Impiegato I where not exists (select * from Impiegato where Cognome = I.Nome) Massimo e nidificazione La persona (o le persone) con il reddito massimo select * from persone where reddito = (select max(reddito) from persone) Interrogazioni nidificate, commenti, 2 Interrogazioni nidificate complesse La prima versione di SQL prevedeva solo la forma nidificata (o strutturata), con una sola relazione in ogni clausola FROM. Il che è insoddisfacente: la dichiaratività è limitata In virtu delle regole relative alla target list della SELECT, non si possono includere nella target list attributi di relazioni relative a blocchi interni Infatti Nome e reddito dei padri di persone che guadagnano più di 20 milioni, con indicazione del reddito del figlio select distinct P.Nome, P.Reddito, F.Reddito P, Paternita, Persone F where P.Nome = Padre and = F.Nome and F.Reddito > 20 Una sola relazione, un solo Reddito citabile nella target list select Nome, Reddito,???? where Nome in (select Padre where = any (select Nome where Reddito > 20)) L espressione, in SQL-2, diventa select Nome.P1, Reddito.P1, Reddito.P2 P1, Persone P2 where Nome.P1 in (select Padre where = any (select Nome from P2 where Reddito > 20))

16 Interrogazioni nidificate, regole di visibilità 1 Regole di visibilita nelle espressioni nidificate 1. non è possibile fare riferimenti a variabili definite in blocchi più interni perche si assume che se e stata dichiarata in una SELECT interna sia utilizzabile solo li select Nome.P1, Reddito.P1, Reddito.P2 P1 where Nome.P2 in (select Padre where = any (select Nome P2 where Reddito > 20)) Interrogazioni nidificate, regole di visibilità 1 1. non è possibile fare riferimenti a variabili definite in blocchi più interni perche si assume che se e stata dichiarata in una SELECT interna sia utilizzabile solo li select Nome.P1, Reddito.P1, Reddito.P2 P1 where Nome.P2 in (select Padre where = any (select Nome P2 where Reddito > 20)) Altro esempio di visibilità scorretta select * from Impiegato where Dipart in (select Nome from Dipartimento D1 where Nome = 'Produzione') or Dipart in (select Nome from Dipartimento D2 where D2.Citta = D1.Citta) Interrogazioni nidificate, regole di visibilità 2 Interrogazioni nidificate, regole di visibilità 3 2. in un blocco si può invece fare riferimento a variabili definite in blocchi più esterni select Nome.P1, Reddito.P1, Reddito.P2 P1, Persone P2 where Nome.P1 in (select Padre where = any (select Nome from P2 where Reddito > 20)) 3. se un nome di variabile è omesso, si assume come riferimento la variabile più vicina dichiarata all esterno

17 Interrogazioni nidificate, regole di visibilità 4 Attenzione! la semantica bottom up : esegui prima l interrogazione interna e poi nella esecuzione della where esterna utilizza per tutte le n-ple il risultato intermedio, non puo essere piu applicata. Infatti Ricordamo la semantica bottom up - Nome e reddito dei padri di persone che guadagnano più di 20 mila E ricordiamo la regola 1: non è possibile fare riferimenti a variabili definite in blocchi più interni Esempio: Data la Relazione Persona (Codice Fiscale, Nome, Cognome) trovare le persone che hanno degli omonimi (cio e persone con stesso nome e cognome ma diverso codice fiscale) Come faccio a eseguire la interrogazione interna senza assegnare un valore alla variabile P? Select * from Persona P where exists (select * from Persona P1 where P1. Nome = P.Nome and P1. Cognome = P.Cognome and P1. Codfiscale not = P.Cod.Fiscale Ricordamo la semantica bottom up - Nome e reddito dei padri di persone che guadagnano più di 20 mila E ricordiamo la regola 1: non è possibile fare riferimenti a variabili definite in blocchi più interni Esempio: Data la Relazione Persona (Codice Fiscale, Nome, Cognome) trovare le persone che hanno degli omonimi (cio e persone con stesso nome e cognome ma diverso codice fiscale) Select * from Persona P where exists (select * from Persona P1 where P1. Nome = P.Nome and P1. Cognome = P.Cognome and P1. Codfiscale not = P.Cod.Fiscale Interrogazioni nidificate, regole di visibilità 4 Attenzione! la semantica bottom up : esegui prima l interrogazione interna e poi nella esecuzione della where esterna utilizza per tutte le n-ple il risultato intermedio, non funziona più. Infatti, per la regola 1. non è possibile da un blocco esterno fare riferimento a variabili definite in blocchi più interni Quindi non e possibile eseguire la interrogazione dai blocchi interni verso i blocchi esterni Vale ancora e solo la semantica top-down Quando in un blocco si riferimento a variabili definite in blocchi più esterni, l interrogazione nidificata viene valutata separatamente per ogni riga prodotta nella valutazione della query esterna. Esempio di applicazione della regola 4 I padri i cui figli guadagnano tutti più di venti mila Quindi per ogni riga di una query esterna si esegue il blocco piu interno e poi si confronta. Semantica top down

18 Maternità Legami logici Paternità Madre Luisa Luisa Anna Anna Padre Sergio Filippo Filippo Persone Nome Età Reddito Anna Filippo Sergio Luisa Esempio di applicazione della regola 4 I padri i cui figli guadagnano tutti più di venti mila select distinct Padre Z where not exists (figli_che_guadagnano_ meno_di_20mila) Per ogni padre, cerchiamo con una query interna se non esistono, per quel padre, figli che guadagnano meno di 20 mila. Se esistono, escludiamo il padre. 104 I padri i cui figli guadagnano tutti più di venti mila select distinct Padre where not exists ( figli_che_guadagnano_ meno_di_20mila ) I padri i cui figli guadagnano tutti più di venti mila select distinct Padre where not exists ( select * where = Nome and Reddito <= 20) Meno compatta ma ugualmente corretta select distinct Padre Z where not exists ( Cerchiamo i Figli: 1. Accoppiando la copia Z di Paternita con la copia interna di Paternita e poi 2 accoppiando tale relazione select * W, Persone where W.Padre = Z.Padre and W. = Nome and Reddito <= 20) con Persone, per trovare i padri con figli con reddito <=20 Altro esempio: nella relazione Persona (CodFiscale, Nome, Cognome), trovare le persone che non hanno omonimi Prima la Select * from Persona P where exists (select * from Persona P1 where P1. Nome = P.Nome and P1. Cognome = P.Cognome and P1. Codfiscale not = P.Cod.Fiscale Trovava le persone che hanno omonimi. Ora? Select * from Persona P where not exists (select * from Persona P1 where P1. Nome = P.Nome and P1. Cognome = P.Cognome and P1. Codfiscale not = P.Cod.Fiscale

19 Disgiunzione e unione select * where Reddito > 30 union select F.* F, Paternita, Persone P where F.Nome = and Padre = P.Nome and P.Reddito > 30 Risultato Le persone che hanno un reddito > di 30 insiemeallepersonei cui padrihannoun reddito> di 30 Disgiunzione e unione select * where Reddito > 30 union select F.* F, Paternita, Persone P where F.Nome = and Padre = P.Nome and P.Reddito > 30 Formulazione equivalente con exists e query nidificata select * F where Reddito > 30 or exists (select *, Persone P where F.Nome = and Padre = P.Nome and P.Reddito > 30) Interrogazioni nidificate, commenti La forma piana e quella nidificata possono essere combinate La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili, cioe nomi definiti con la clausola as) Le sottointerrogazioni non possono contenere operatori insiemistici ( l unione si fa solo al livello esterno ); la limitazione non è significativa Operazioni di aggiornamento Operazioni di aggiornamento Sono operazioni di inserimento: insert eliminazione: delete modifica: update a. di una o più ennuple di una relazione R1 b. sulla base di una condizione che può coinvolgere anche altre relazioni R2,..., Rn 113 Inserimento INSERT INTO Tabella [ ( Attributi ) ] VALUES( Valori ) che permette di inserire negli Attributi della Tabella singoli valori. Se qualche attributo non e specificato, e inserito valore nullo. Se e violato un vincolo di not null, l insert e rifiutato. oppure INSERT INTO Tabella [ ( Attributi )] SELECT... che permette di inserire negli Attributi della Tabella insiemi di ennuple estratte dalla BD

20 Inserimento, regole 1. l ordinamento degli attributi (se presente) e dei valori è significativo 2. le due liste (Attributi, Valori) debbono avere lo stesso numero di elementi 3. se la lista di attributi è omessa, si fa riferimento a tutti gli attributi della relazione, secondo l ordine con cui sono stati definiti 4. se la lista di attributi non contiene tutti gli attributi della relazione, per gli altri viene inserito un valore nullo (che deve essere permesso) o un valore di default Esempi di INSERT INTO Relazione Persone (Nome, Eta,Reddito) INSERT INTO Persone (Nome, Eta,Reddito) VALUES ('Pino',25,52) INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone (Nome, Reddito) VALUES ('Lino',55) Esempio con Select INSERT INTO Persone ( Nome ) SELECT Padre FROM Paternita WHERE Padre NOT IN (SELECT Nome FROM Persone) Eliminazione di ennuple DELETE FROM Tabella [WHERE Condizione] elimina le ennuple che soddisfano la condizione Inserisce in Persone i padri che gia non vi compaiono Eliminazione, regole Esempi di DELETE FROM 1. può causare (se ci sono vincoli di integrità referenziale, ed e adottata una politica di reazione cascade) eliminazioni in altre relazioni 2. se la where viene omessa, si intende where true, quindi vengono eliminate tutte le ennuple DELETE FROM Persone WHERE Eta < 35 DELETE FROM Paternita WHERE NOT in (SELECT Nome FROM Persone) DELETE FROM Paternita

21 Differenza tra DELETE (DML) e DROP (DDL) La DELETE from DIPARTIMENTO elimina tutte le n-ple di DIPARTIMENTO, ed eventuali altre per la politica cascade, ma lascia immutato lo schema La DROP Table DIPARTIMENTO cascade elimina dallo schema la Tabella e tutte le Tabelle che fanno riferimento ad essa. La DROP Table DIPARTIMENTO restrict fallisce se vi sono tuple nella Tabella. Modifica di ennuple: UPDATE UPDATE NomeTabella SET Attributo = <Espressione SELECT NULL DEFAULT> [WHERE Condizione] Modifica le n-ple che rispettano la (eventuale) condizione. Se non c e condizione le modifica tutte Significa: oppure Il nuovo valore puo essere.. Esempi di update 1. Espressione, il risultato della valutazione di una espressione sugli attributi della tabella 2. SELECT, il risultato di una interrogazione 3. NULL, il valore nullo 4. DEFAULT, il valore di default UPDATE Persone SET Reddito = 45 WHERE Nome = 'Piero' UPDATE Persone SET Reddito = Reddito * 1.1 WHERE Eta < Attenzione!!! L esecuzione di: UPDATE Persone SET Stipendio = Stipendio * 1.1 WHERE Stipendio <= 30 UPDATE Persone SET Stipendio = Stipendio * 1.15 WHERE Stipendio > 30 provoca, ad es., per un impiegato con Stipendio = 30 due aumenti, e non uno. Cio per la natura set oriented di SQL. Il problema si risolve scrivendo un programma in un linguaggio ad alto livello (if stipendio <= then SET.. Else SET ) Vincoli di integrita Vincoli intrarelazionale di attributo o tabella: CHECK Vincoli di schema, cioe su piu relazioni: CREATE ASSERTION

22 Vincoli di integrità generici: CHECK Specifica di vincoli di ennupla (e anche vincoli più complessi) di un attributo o di una tabella. Sintassi CHECK (Condizione) dove Condizione puo essere una condizione che puo comparire in una clausola WHERE Propieta della CHECK La CHECK permette anche di esprimere tutti i vincoli predefiniti, ma in questi casi, rispetto ad essi, e meno naturale e comprensibile (vedi libro) Significato: La Condizione che compare nella CHECK deve essere sempre verificata Check, esempi Verifica che lo stipendio dell impiegato sia create table Impiegato minore o uguale allo stipendio dell impiegato (Matricola character(6), chenee Cognome character(20), superiore. Nome character(20), Vincolo non Sesso character not null check (sesso in ( M, F )) esprimibile senza Stipendio integer, CHECK Superiore character(6), check (Stipendio <= (select Stipendio from Impiegato J where Superiore = J.Matricola)) Vincoli di integrità generici: asserzioni Specificano vincoli a livello di schema Sintassi: CREATE ASSERTION NomeAsserzione CHECK ( Condizione ) CREATE ASSERTION AlmenoUnImpiegato CHECK (1 <= (select count(*) from Impiegato )) Verifica se nella relazione Impiegato vi e almeno una ennupla, cioe se c e almeno un impiegato Politichediverificadeivincolidiintegrita Vincolo con politica immediata sono verificati immediatamente dopo ogni modifica della BD Vincolo con politica differita sono verificati dopo l esecuzione di una serie di operazioni che costituiscono una transazione (vedi corso di complementi di basi di dati) Esito della verifica Se un vincolo immediato non e soddisfatto il sistema disfa l operazione di modifica (rollback parziale), cioe riporta la BD a uno stato in cui l operazione non e stata eseguita Per i vincoli differiti, vedi corso di complementidibasididati

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

SQL. SQL: una visione panoramica. SQL: storia Definizione dei dati SQL SQL: una visione panoramica I lucidi presentati sono liberamente ispirati al contenuto del Capitolo 4 del libro Atzeni, Ceri, Paraboschi, Torlone Basi di dati - McGraw-Hill, 1999 Structured Query Language

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operazioni di aggiornamento operazioni di inserimento: insert eliminazione: delete modifica: update di una o più ennuple di una

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini. CREATE TABLE, esempio

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: storia Domini. CREATE TABLE, esempio SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 4: SQL 24/09/2002 originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene

Dettagli

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice Linguaggio SQL Il linguaggio SQL (Structured Query Language) è il linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali sostenuti codice matricola anno voto

Dettagli

SQL e algebra relazionale

SQL e algebra relazionale SQL e algebra relazionale Il linguaggio SQL consente una maggiore espressività dell algebra relazionale grazie a costrutti che permettono: di definire join più sofisticati di ordinare le righe dei risultati

Dettagli

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Idoneita Informatica. Sistemi per la gestione di basi di Dati Idoneita Informatica Sistemi per la gestione di basi di Dati Prof. Mauro Gaspari mauro.gaspari@unibo.it Rielaborazione delle slide del Dott. Matteo Magnani e del Dott. Nicola Dragoni 1 Sistema Informativo

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2015/2016 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2015-16.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

SQL. SQL: storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. standard di fatto SQL SQL: "storia Sviluppato nella metà degli anni settanta (194) presso il laboratorio di ricerca IBM di S.Josè Dal 1983 ca. "standard di fatto" E il linguaggio di riferimento per l interrogazione di DBMS

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezioni 6 7 Raffaella Gentilini 1 / 46 Sommario 1 Subquery (o Interrogazioni Nidificate) Interrogazioni Annidate con Predicati di Confronto Interrogazioni Annidate con

Dettagli

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

SQL. Storia un po piu in dettaglio. SQL: storia Tre livelli per SQL-2. Standard, dialetti, mercato Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati: modelli e linguaggi di programmazione McGraw-Hill, 2003 Capitolo 4: SQL-1, prima parte 11/03/2005 SQL Structured Query Language

Dettagli

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Vincoli di integrita 2 Cosa e un vincolo di integrita E una proprieta sempre valida

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2016/2017 4 SQL : Structured Query Language Tiziana Catarci Ultimo aggiornamento : 22/02/2016 SQL : Structured

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,

Dettagli

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB

Dettagli

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SQL SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SELECT s.nome As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami FROM Studenti

Dettagli

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SQL, e.data, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami WHERE NOT EXISTS (SELECT * WHERE e.matricola = s.matricola

Dettagli

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

Parte III. L algebra relazionale

Parte III. L algebra relazionale Parte III L algebra relazionale asi di dati - prof. Silvio Salza - a.a. 2014-2015 III - 1 Linguaggi di interrogazione Dichiarativi: specificano le proprietà del risultato ("che cosa") Procedurali: specificano

Dettagli

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003 DB2 Data Management Software Il linguaggio SQL Query Innestate Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute

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

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE Linguaggio SQL: fondamenti 2 (1/3) Inserimento di tuple Cancellazione di tuple Modifica di tuple 4 (2/3) INSERT inserimento di nuove tuple

Dettagli

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 2 Vincoli di integrità Proprietà che devono essere soddisfatte da ogni istanza della base di dati. Il soddisfacimento è definito rispetto al

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Basi di dati. SQL: concetti base

Basi di dati. SQL: concetti base Basi di dati SQL: concetti base SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo

Dettagli

Corso di Basi di Dati A.A. 2015/2016

Corso di Basi di Dati A.A. 2015/2016 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 22/02/2016 Interrogazioni nidificate In

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)

Dettagli

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Laurea in Ingegneria Gestionale Sapienza - Università di Roma Corso di Basi di Dati A.A. 2016/2017 7 SQL : Check, Asserzioni,Viste Tiziana Catarci Ultimo aggiornamento : 22/02/2017 Costrutti Avanzati

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML

Dettagli

Esercitazione: Interrogazioni SQL

Esercitazione: Interrogazioni SQL Laurea in Ingegneria Informatica SAPIENZA Università di Roma Insegnamento di Basi di Dati Esercitazione: Interrogazioni SQL Domenico Fabio Savo 1 Sommario 1. Creazione del database utilizzato per l esercitazione

Dettagli

3 SQL : Interrogazioni

3 SQL : Interrogazioni 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

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia

Dettagli

SQL terza 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 2010/11

SQL terza 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 2010/11 SQL terza 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 2010/11 Operatori aggregati Costituiscono una estensione delle normali interrogazioni SQL (non hanno corrispondenza in

Dettagli

Il linguaggio SQL: le viste

Il linguaggio SQL: le viste Il linguaggio SQL: le viste Basi di dati 1 Il linguaggio SQL: le viste Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL: le viste Basi di dati 2 Introduzione

Dettagli

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale. Algebra relazionale Algebra relazionale Introduzione Selezione e proiezione Prodotto cartesiano e join Natural join, theta-join e semi-join Outer join Unione e intersezione Differenza e antijoin Divisione

Dettagli

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf Il linguaggio SQL: raggruppamenti Versione elettronica: SQLb-gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente

Dettagli

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna  Pag.1 Lezione 7 SQL (II) Pag.1 Ancora sugli operatori di confronto tra insiemi Abbiamo già visto IN, EXISTS e UNIQUE. Possiamo anche usare NOT IN, NOT EXISTS e NOT UNIQUE Disponibili anche: op ANY, op ALL Trovare

Dettagli

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015 SQL Avanzato Interrogazioni complesse, trigger, viste e modifiche dello schema 2 Interrogazioni e il valore NULL Il valore NULL Logica a tre valori 3 Significato del valore NULL Valore sconosciuto Valore

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

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

Interrogazioni semplici

Interrogazioni semplici Interrogazioni semplici Lorenzo Sarti 2009 Basi di Dati 1 select Campi considerati Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1967 A80293450 Rossi Andrea 13/04/1968 A80198330 Neri

Dettagli

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

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il

Dettagli

SQL - Sottointerrogazioni

SQL - Sottointerrogazioni una delle ragioni che rendono SQL un linguaggio potente è la possibilità di esprimere interrogazioni più complesse in termini di interrogazioni più semplici, tramite il meccanismo delle subqueries (sottointerrogazioni)

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 D1.2 Selezione e proiezione 1 Prerequisiti Elementi di teoria degli insiemi Composizione di operazioni 2 1 Introduzione Oltre alle operazioni insiemistiche, può capitare

Dettagli

Interrogazioni$e$il$valore$NULL$

Interrogazioni$e$il$valore$NULL$ SQL$Avanzato$ Interrogazioni+complesse,+trigger,+viste+e+modifiche+dello+schema+! 2 Interrogazioni$e$il$valore$NULL$! Il valore NULL Logica a tre valori 3! Significato del valore NULL! Valore sconosciuto!

Dettagli

Interrogazioni in SQL

Interrogazioni in SQL Interrogazioni in SQL Corso di Basi di Dati 4 dicembre 2013 1 Interrogazioni sullo schema aziendale 1. Ottenere i nomi dei dipartimenti dislocati in piú sedi. 2. Ottenere il numero di supervisori. 3. Produrre

Dettagli

Tabelle esempio: Impiegato/Dipartimento

Tabelle esempio: Impiegato/Dipartimento Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (4) Query di aggiornamento Prof. Alberto Postiglione

Dettagli

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

SQL. Definizione dei da6 in SQL. SQL: storia CREATE TABLE: esempio. CREATE TABLE: esempio SQL Atzeni, Ceri, Paraboschi, Torlone Basi di da6 Originariamente Structured Query Language, ora "nome proprio" Linguaggio con varie funzionalità: DDL Data Defini6on Language (insieme di comandi per la

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

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base Linguaggio SQL: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2007 Politecnico di Torino 1 Istruzione SELECT: esempio Trovare il codice

Dettagli

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella Gestione e Analisi dei Dati Lezione 2 Vincoli su attributo Selezioni semplici su una tabella Vincoli sui Dati Regole del dominio di interesse Unicità di codici di corso e matricole Un codice deve corrispondere

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 2.3b: SQL (2) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze

Dettagli

Alessandra Raffaetà. Esercizio: Cinema

Alessandra Raffaetà. Esercizio: Cinema Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2015/2016 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2015-16.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio di BD forniture prodotti Istruzione SELECT: esempio

Dettagli

Sommario. Introduzione... 13

Sommario. Introduzione... 13 Sommario Introduzione... 13 1. Database pro e contro... 19 A cosa serve conoscere i database?...19 Le alternative alla gestione manuale...22 Quando non serve un database?...24 Domande ed esercizi...26

Dettagli

Interrogazioni con ANY e ALL. Operatori ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL

Interrogazioni con ANY e ALL. Operatori ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL. Interrogazioni con ANY e ALL Interrogazioni con ANY e ALL Operatori ANY e ALL Sintassi: WHERE Attributo OperatoreConfronto [ANY ALL] (SelectAttributoSingolo) ANY: la riga soddisfa la condizione se risulta vero il confronto con almeno

Dettagli

Basi di Dati. S Q L Lezione 4

Basi di Dati. S Q L Lezione 4 Basi di Dati S Q L Lezione 4 Antonio Virdis a.virdis@iet.unipi.it Sommario Espressioni condizionali Query nella SELECT Raggruppamento di tuple Condizioni sui gruppi 2 Esercizio 6 (lezione 3) Indicare nome

Dettagli

Esercitazione 3 SQL 2

Esercitazione 3 SQL 2 Esercitazione 3 SQL 2 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E3-1 Schema della base di dati Persone (Nome, Sesso, Anno, Città) Discendenza (Genitore, Figlio) Stato (Città, Inizio, Fine, Stato)

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio Trovare il codice e il numero di soci dei fornitori

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

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

Estensioni del linguaggio SQL per interrogazioni OLAP

Estensioni del linguaggio SQL per interrogazioni OLAP Sistemi Informativi Avanzati Anno Accademico 2012/2013 Prof. Domenico Beneventano Estensioni del linguaggio SQL per interrogazioni OLAP Esempio! Esempio delle vendite con scontrino (nella tabella, per

Dettagli

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio INTRODUZIONE L algebra relazionale è l algebra su cui si basa il linguaggio

Dettagli

Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill. Hill,, 2002)

Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill. Hill,, 2002) SQL, Definizione e interrogazione di basi di dati Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill Hill,, 2002) SQL Structured Query Language è un linguaggio con

Dettagli

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Basi di Dati. 3. Il Linguaggio SQL. Basi di Dati - A.A. 2003/2004 - Diego Calvanese 3. SQL - 1. Diego Calvanese SQL SQL-92

Basi di Dati. 3. Il Linguaggio SQL. Basi di Dati - A.A. 2003/2004 - Diego Calvanese 3. SQL - 1. Diego Calvanese SQL SQL-92 Università di Roma La Sapienza Laurea in Ingegneria Informatica Basi di Dati Anno Accademico 2003/2004 Canale M-Z Diego Calvanese Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di

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 Il Linguaggio SQL SQL (Structured Query Language) è di fatto lo standard tra i linguaggi per la gestione di basi di dati relazionali è un linguaggio dichiarativo (non-procedurale),

Dettagli

SQL Laboratorio di Basi di Dati a.a. 2002/2003

SQL Laboratorio di Basi di Dati a.a. 2002/2003 1 SQL Laboratorio di Basi di Dati a.a. 2002/2003 dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12 2 Sommario (V parte) Aspetti avanzati della definizione dei dati

Dettagli

MODULO 2. Query normali e parametriche Query di:

MODULO 2. Query normali e parametriche Query di: MODULO 2 TITOLO DBMS e SQL In questo Modulo si affronta lo studio dei DBMS Access e MySQL. In particolare per Access, si descrive come progettare, impostare e modificare gli strumenti di lavoro (tabelle,

Dettagli

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi Basi di dati attive : regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi Oggi fanno parte dello standard SLQ-99 In passato ogni DBMS li implementava seguendo

Dettagli

Esempi SQL con Access. Orazio Battaglia

Esempi SQL con Access. Orazio Battaglia con Access Orazio Battaglia Consideriamo la base di dati in figura. 2 Interrogazione 1: Selezioniamo tutti gli impiegati, vogliamo Cognome, Nome e Posizione SELECT Impiegati.Cognome, Impiegati.Nome, Impiegati.Posizione

Dettagli

Lezione 6. Algebra e Calcolo Relazionale

Lezione 6. Algebra e Calcolo Relazionale Lezione 6 Algebra e Calcolo Relazionale 1 Sommario Esempio di Applicazione con Database (AZIENDA) Algebra Relazionale Operazioni Relazionali Unarie Operazioni dell Algebra Relazionale dalla teoria degli

Dettagli

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive Basi di dati attive Paolo Atzeni Stefano Ceri Basi di dati attive BD con componente per la gestione di regole Evento- Condizione-Azione (regole di produzione): eventi: normalmente modifiche della base

Dettagli

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL Basi di Dati Esercitazione 1: Interrogazioni in SQL DB di riferimento per esempi Consideriamo i seguenti schemi di una base di dati relazionale: PremioProduzione, DataAssunzione) Viene data la seguente

Dettagli

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti. Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti. Cognome: Nome: Matricola: Domanda 1 (20%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic. 2007 da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic. 2007 da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori. Basi di dati ad oggetti:un esempio ODL-OQL 1. Caso filmoteca: modello dei dati lunghezza tipo_pellicola via città indirizzo titolo anno FILM attori recitain ATTORE nome posseduto da lunghezza_in_ore (

Dettagli

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 2012 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 Lezione 3 Structured Query Language

Dettagli

3 Algebra Relazionale

3 Algebra Relazionale Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2016/2017 Tiziana Catarci Ultimo aggiornamento : 22/02/2017 I linguaggi di interrogazione e aggiornamento

Dettagli

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1. Università di Modena e Reggio Emilia Basi di dati (4) Docente: andrea.bulgarelli@gmail.com Argomento: select (1.0) 1 Panoramica Select Joins Subquery Wildcard Esempi 2 SELECT SELECT [DISTINCT] [TOP n]

Dettagli

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati Sommario - Progettazione di un database - Join - Valore NULL - Operatori aggregati Progettazione di un database - In un database c'è una marcata distinzione tra i valori in esso contenuti e le operazioni

Dettagli

Basi di dati. SQL :Structured Query Language: SELECT (I) Prof.ssa Rosalba Giugno

Basi di dati. SQL :Structured Query Language: SELECT (I) Prof.ssa Rosalba Giugno Basi di dati SQL :Structured Query Language: SELECT (I) Prof.ssa Rosalba Giugno Generalità SQL sviluppato alla IBM nel 1973 è lo standard per tutti i sistemi commerciali ed open source (Oracle, Informix,

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 6 Raffaella Gentilini 1 / 40 Sommario 1 Viste 2 3 2 / 40 Viste Viste le viste sono tabelle virtuali corrispondono al risultato di una query (SELECT) valutata

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL : fondamenti Linguaggio per gestire le basi di dati relazionali Structured Query Language SQL possiede istruzioni per definire lo schema di una base di dati relazionale leggere e scrivere i dati definire

Dettagli

1.3 Il linguaggio SQL

1.3 Il linguaggio SQL Fondamenti di Informatica Sistemi di Elaborazione delle Informazioni Informatica Applicata 1.3 Il linguaggio SQL Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E

Dettagli

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

Laboratorio di Basi di Dati SQL avanzato

Laboratorio di Basi di Dati SQL avanzato Laboratorio di Basi di Dati SQL avanzato Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Interrogazioni nidificate Syntax: SELECT {* [, ]} FROM [,

Dettagli

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida Introduzione all algebra relazionale Prof. Giovanni Giuffrida Esempio di interrogazione Studenti Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222

Dettagli

Le interrogazioni annidate

Le interrogazioni annidate Le interrogazioni annidate Lezione 5 lezione 5 Le interrogazioni annidate In questa lezione impareremo... a codificare operazioni insiemistiche su tabelle e relazioni a eseguire interrogazioni scalari

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

SQL seconda 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 2010/11

SQL seconda 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 2010/11 SQL seconda 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 2010/11 Interrogazioni nidificate Interrogazioni nidificate 2 Si ottiene una interrogazione nidificata quando un interrogazione

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Esercitazione PostgreSQL Dopo aver lanciato il client grafico pgadmin III di PostgreSQL svolgere le operazioni descritte nel seguito, tenendo presenti i suggerimenti forniti

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto IL MODELLO RELAZIONALE http://www.diee.unica.it/giacinto/lab

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

Basi di dati. SQL: Caratteristiche evolute

Basi di dati. SQL: Caratteristiche evolute Basi di dati SQL: Caratteristiche evolute Vincoli di integrità generici: check Specifica di vincoli di ennupla (e anche vincoli più complessi, non sempre supportati) check ( Condizione ) 2 Check, esempio

Dettagli