SQL SQL. Domini elementari. Domini. Domini elementari, 2. Definizione di domini

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "SQL SQL. Domini elementari. Domini. Domini elementari, 2. Definizione di domini"

Transcript

1 Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versione dell ; vediamo gli aspetti essenziali non i dettagli storia : prima proposta SEQUEL (IBM Reserach, 1974); prima implementazione in /DS (IBM, 1981); dal 1983 ca., standard di fatto standard (1986, poi 1989, 1992 e infine 1999) recepito in parte; 2 Domini Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili) Domini elementari Carattere: singoli caratteri o stringhe, anche di lunghezza variabile character [ varying ] [ ( Lunghezza ) ] [ character set NomeFamigliaCaratteri ] [ collate NomeRegoleConfronto] Bit: singoli booleani o stringhe bit [ varying ] [ ( Lunghezza ) ] Numerici, esatti e approssimati: numeric [( Precisione [, Scala ) ] ] integer float [( Precisione )] double precision 3 4 Domini elementari, 2 Data, ora, intervalli: date time [( Precisione )] [ with time zone ] timestamp [( Precisione )] [ with time zone ] interval UnitàDiTempo [ to UnitàDiTempo ] Stringhe binarie: blob [( Lunghezza )] Valori booleani: True/False/Unknown boolean Definizione di domini Istruzione CREATE DOMAIN: definisce un dominio (semplice), utilizzabile in definizioni di relazioni Sintassi create domain NomeDominio as Tipo [ Default ] [ Vincoli ] Default (utilizzabili anche nella CREATE TABLE) default < Valore user null > Esempio create domain Voto as smallint default null check ( value >=18 and value <= 30 ) 5 6 1

2 Vincoli intrarelazionali not null (su singoli attributi) unique: permette di definire chiavi; sintassi: per singoli attributi: unique dopo il dominio chiavi formate da più attributi: unique ( Attributo {, Attributo } ) primary key: definizione della chiave primaria (una sola, implica not null); sintassi, come per unique check, vedremo più avanti Vincoli intrarelazionali, esempi Nome character(20) not null, Cognome character(20) not null, unique (Cognome,Nome) è diverso da: Nome character(20) not null unique, Cognome character(20) not null unique 7 8 Vincoli interrelazionali check, vedremo più avanti references e foreign key (chiave esterna) permettono di definire vincoli di integrità referenziale; sintassi: per singoli attributi: references dopo il dominio riferimenti su più attributi: foreign key( Attributo {, Attributo } ) references... è possibile associare politiche di reazione alla violazione dei vincoli (causate da modifiche sulla tabella esterna, cioè quella cui si fa riferimento) Richiamo: base di dati con vincoli di integrità referenziale infrazioni Codice Data Vigile Prov Numero /9/ MI 3K /12/ MI 6D /12/ RM 7C /1/ RM 7C /3/ MI 6D5563 vigili Matricola Cognome Nome 343 Rossi Luca 476 Neri Pino 548 Nicolosi Gino automobili Prov Numero Proprietario MI 3K9886 Nestore MI 6D5563 Nestore RM 7C5567 Menconi RM 1A6673 Mussone MI 5E7653 Marchi 9 10 Vincoli interrelazionali, esempio create table Infrazioni( Codice character(6) primary key, Data date not null, Vigile integer not null references Vigile(Matricola), Provincia character(2), Numero character(6), foreign key(provincia, Numero) references Automobili(Provincia, Numero) ) Infrazioni e una tabella interna, Vigile e Automobili sono esterne 11 Violazione dei vincoli per tutti i vincoli visti fino ad ora si assume che se violati a causa di un aggiornamento, il comando di aggiornamento venga rifiutato segnalando l errore all utente. per i vincoli di integrità referenziale, permette di scegliere altre reazioni da adottare quando viene rilevata una violazione la reazione è possibile solo per le operazioni sulla tabella esterna che si (possono) propagano secondo una certa politica verso la tabella interna le violazioni possibili sono causate da modifiche del valore dell attributo riferito e dalla cancellazione di righe (es. modifiche dell attributo Provincia e cancellazione di righe da Vigile) 12 2

3 Politiche di reazione Specificata immediatamente dopo il vincolo di integrità consente di associare politiche diverse ai diversi eventi (delete, update) secondo la seguente sintassi: on < delete update > < cascade set null set default no action > Reazioni per delete cascade: si propagano le cancellazioni set null: all attributo referente viene assegnato il valore nullo al posto del valore cancellato nella tabella set default: all attributo referente viene assegnato il valore di default al posto del valore cancellato nella tabella esterna no action: la cancellazione non viene consentita Reazioni per update cascade: il nuovo valore valore viene propagato nell altra tabella set null: all attributo referente viene assegnato il valore nullo al posto del valore modificato nella tabella set default: all attributo referente viene assegnato il valore di default al posto del valore modificato nella tabella esterna no action: l azione di modifica non viene consentita Modifiche degli schemi Fornisce primitive per la manipolazione di schemi che permettono di modificare gli schemi: alter domain alter table drop domain drop table Dizionario dei Dati Tutti i DBMS relazionali gestiscono le descrizioni delle tabelle presenti nella basi di dati mediante una struttura relazionale, cioè mediante tabelle. La base di dati contiene due tipi di tabelle: quelle contente i dati, e quelle contenente i metadati (dati che descrivono dati), dette il catalogo della base di dati oppure il dizionario dei dati Definizione degli indici è rilevante dal punto di vista delle prestazioni ma è a livello più basso (fisico e non logico) non ne parliamo qui in passato era importante perché in alcuni sistemi era l unico mezzo per definire chiavi I comandi di definizione e modifica dello schema manipolano il dizionario dei dati

4 SELECT, sintassi select AttrExpr [ [as] Alias ] {, AttrExpr [ [as] Alias ] } from Tabella [ [as] Alias ] {, Tabella [ [as] Alias ] } [ where Condizione ] le tre parti vengono di solito chiamate target list clausola from clausola where seleziona tra le righe che appartengono al prodotto cartesiano delle tabelle elencate nella clausola from quelle che soddisfano la condizione espressa nell argomento della clausola where persone Nome Eta Reddito Andrea Aldo Maria Anna Filippo Luigi Franco Olga Sergio Luisa maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Selezione e proiezione Nome e reddito delle persone con meno di trenta anni π Nome, Reddito (σ Eta<30 (persone)) select nome, reddito from persone where eta < 30 SELECT, abbreviazioni data una relazione R su A e B from R equivale (intutivamente) a select X.A AS A, X.B AS B from R X where true Impiegato Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Bianchi Produzione Giuseppe Verdi Amministrazione Franco Neri Distribuzione Carlo Rossi Direzione Lorenzo Lanzi Direzione 7 73 Paola Borroni Amministrazione Marco Franco Produzione Selezione, senza proiezione where Cognome = 'Rossi (σ Cognome=Rossi (impiegato)) Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Dipartimento Nome Indirizzo Citta Amministrazione Via Tito Livio Milano Produzione P.zza Lavater Torino Distribuzione Via Segre Roma Direzione Via Tito Livio Milano Ricerca Via Morone Milano

5 Espressioni nella target list select Stipendio/12 as StipendioMensile where Cognome = 'Bianchi' StipendioMensile 3.00 Disgiunzione select Nome, Cognome where Dipart = 'Amministrazione' or Dipart = 'Produzione' Nome Cognome Mario Rossi Carlo Bianchi Giuseppe Verdi Paola Borroni Marco Franco Condizione complessa select Nome where Cognome = 'Rossi' and (Dipart = 'Amministrazione' or Dipart = 'Produzione') Nome Mario Condizione LIKE Gli impiegati che hanno un cognome che ha una 'o' in seconda posizione e finisce per 'i'. where Cognome like '_o%i' Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Paola Borroni Amministrazione Gestione dei valori nulli Gli impiegati che hanno o potrebbero avere uno stipendio minore di 50 milioni Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Rossi Direzione Paola Borroni Amministrazione 75 NULL where Stipendio < 50 or Stipendio is null SELECT e algebra relazionale select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3 prodotto cartesiano delle relazioni nella clausola from selezione con la condizione nella clausola where proiezione come nella target list π A1,A4 (σ A2=A3 (R1 R2)) Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Paola Borroni Amministrazione 75 NULL

6 SELECT e algebra relazionale, ancora possono essere necessarie ridenominazioni nel prodotto cartesiano nella target list select X.A1 AS B1, X.A2 AS B2, Y.A4 AS B3 from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 AND Y.A4 = Z.A1 Selezione, proiezione e join I padri di persone che guadagnano più di venti milioni π Padre (paternita Figlio =Nome (σ Reddito>20 (persone))) select distinct padre from persone, paternita where figlio = nome and reddito > 20 ρ B1,B2,B3 A1,A2,A4 (π A1,A2,A4 (σ A2 = A3 A4 = C1 ( R1 R2 ρ C1,C2 A1,A2 (R1)))) Proiezione, senza selezione select Nome, Cognome select Cognome Proiezione: duplicati select distinct Cognome Nome Mario Carlo Giuseppe Franco Carlo Lorenzo Paola Marco Cognome Rossi Bianchi Verdi Neri Rossi Lanzi Borroni Franco Cognome Rossi Bianchi Verdi Neri Rossi Lanzi Borroni Franco Cognome Rossi Bianchi Verdi Neri Lanzi Borroni Franco Join naturale Padre e madre di ogni persona paternita maternita select paternita.figlio, padre, madre from maternita, paternita where paternita.figlio = maternita.figlio π Figlio,Padre,Madre (paternita Figlio = Nome (ρ Nome Figlio (maternita))) Join di una relazione con se stessa Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre π Nome, Reddito, RP (σ Reddito>RP (ρ NP,EP,RP Nome,Eta,Reddito (persone) NP=Padre (paternita Figlio =Nome persone))) select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito

7 Ridenominazione del risultato Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre π Figlio, Reddito, RP (σ Reddito>RP (ρ NP,EP,RP Nome,Eta,Reddito (persone) NP=Padre (paternita Figlio =Nome persone))) SELECT, con join esplicito, sintassi select AttrExpr [ [as] Alias ] {,AttrExpr [ [as] Alias ] } from Tabella [ [ as ] Alias ] {[ TipoJoin ] join Tabella [ [ as ] Alias ] on CondDiJoin },... [ where AltraCondizione ] select figlio, f.reddito as reddito, p.reddito as redditopadre from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito Join esplicito Padre e madre di ogni persona paternita maternita π Figlio,Padre,Madre (paternita Figlio = Nome ρ Nome Figlio (maternita)) Ulteriore estensione: join naturale Padre e madre di ogni persona paternita maternita π Figlio,Padre,Madre (paternita Figlio = Nome ρ Nome Figlio (maternita)) select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio select madre, paternita.figlio, padre from maternita natural join paternita select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo Join paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Outer join sinistro maternita Madre Figlio paternita Padre Figlio Luisa Maria Sergio Franco Luisa Luigi Luigi Olga Anna Olga Luigi Filippo Anna Filippo Franco Andrea Maria Andrea Franco Aldo Maria Aldo Madre Figlio Padre Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco Madre Figlio Padre Luisa Maria NULL Luisa Luigi NULL Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco

8 maternita Madre Figlio Luisa Maria Luisa Luigi Anna Olga Anna Filippo Maria Andrea Maria Aldo Outer join completo Madre Figlio Padre Luisa Maria NULL Luisa Luigi NULL Anna Olga Luigi Anna Filippo Luigi Maria Andrea Franco Maria Aldo Franco NULL Franco Sergio paternita Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo Outer join Padre e, se nota, madre di ogni persona paternita maternita LEFT π Figlio,Padre,Madre (paternita ρ Nome Figlio (maternita)) Figlio = Nome LEFT select paternita.figlio, padre, madre from paternita left natural join maternita select paternita.figlio, padre, madre from paternita left join maternita on paternita.figlio = maternita.figlio Join esplicito select I.Nome, Cognome, Citta I join Dipartimento D on Dipart = D.Nome Nome Cognome Dipart Mario Rossi Milano Carlo Bianchi Torino Giuseppe Verdi Milano Franco Neri Roma Carlo Rossi Milano Lorenzo Lanzi Milano Paola Borroni Milano Marco Franco Torino Ordinamento del risultato order by AttrDiOrdinamento [ asc desc ] {, AttrDiOrdinamento [ asc desc ] } select Cognome, Nome, Stipendio where Dipart like 'Amm%' order by Stipendio desc, Cognome Cognome Nome Stipendio Rossi Mario 45 Borroni Paola 40 Verdi Giuseppe Necessità di operatori su tuple tutte le condizioni dell algebra vengono valutate su una tupla alla volta la condizione è sempre un predicato che viene valutato su ciascuna tupla indipedentemente da tutte le altre se volessi contare il numero di impiegati di un certo dipartimento a partire da una relazione Impiegato come si fa? occorre introdurre degli operatori che consentono di valutare proprietà che dipendono da insiemi di tuple questi operatori sono detti operatori aggregati Operatori aggregati select count(*) AS NumeroImpiegati where Dipart = 'Produzione' NumeroImpiegati 2 l operatore aggregato (count) viene applicato al risultato dell interrogazione: where Dipart = 'Produzione'

9 COUNT: sintassi count ( < * [ distinct all ] ListaAttributi > ) select count(stipendio) as NumeroStipendi NumeroStipendi 8 COUNT e valori nulli Impiegato Nome Cognome Dipart Ufficio Stipendio Mario Rossi Amministrazione Carlo Bianchi Produzione Giuseppe Verdi Amministrazione 20 NULL select count(*) as NumeroImpiegati select count(distinct Stipendio) as StipendiDiversi StipendiDiversi 6 49 NumeroImpiegati 3 select count(stipendio) as NumeroStipendi NumeroStipendi 2 50 Somma, media, massimo, minimo < sum max min avg > ( [ distinct all ] AttrEspr ) Totale degli stipendi del dipartimento amministrazione select sum(stipendio) as TotaleStipendi where Dipart = 'Amministrazione' TotaleStipendi 125 escludono opportunamente i valori nulli Join e operatore aggregato Il massimo stipendio tra quelli degli impiegati che lavorano in un dipartimento con sede a Milano select max(stipendio), Dipartimento D where Dipart = D.Nome and Citta = 'Milano' 80 Nota: non abbiamo usato la as e l attributo nel risultato non ha nome Operatori aggregati e target list un interrogazione scorretta: select Cognome, Nome, max(stipendio), Dipartimento where Dipart = NomeDip and Citta = 'Milano Interrogazioni con raggruppamento gli operatori aggregati vengono applicati ad un insieme di righe gli esempi visti operano su tutte le righe spesso esiste l esigenza di applicare operatori aggregati distintamente ad insiemi di tuple in l operatore group by ci consente di fare questo di chi sarebbe il cognome? La target list deve essere omogenea select max(stipendio), min(stipendio)

10 Operatori aggregati e raggruppamenti Per ogni dipartimento, la somma degli stipendi select Dipart, sum(stipendio) as SommaStipendi group by Dipart Dipart SommaStipendi Amministrazione 125 Produzione 82 Distribuzione 45 Direzione 153 Semantica di interrogazioni con operatori aggregati e raggruppamenti interrogazione senza group by e senza operatori aggregati: select Dipart, Stipendio Dipart Stipendio Amministrazione 45 Produzione 36 Amministrazione 40 Distribuzione 45 Direzione 80 Direzione 73 Amministrazione 40 Produzione Semantica, 2 poi si raggruppa e si applica l operatore aggregato a ciascun gruppo dopo group by Dipart Stipendio Amministrazione 45 Amministrazione 40 Amministrazione 40 Distribuzione 45 Direzione 80 Direzione 73 Produzione 36 Produzione 46 dopo sum()as Dipart SommaStipendi Amministrazione 125 Distribuzione 45 Direzione 153 Produzione 82 Condizioni sui gruppi I dipartimenti che spendono più di 100 milioni in stipendi select Dipart, sum(stipendio) as SommaStipendi from Impiegati group by Dipart having sum(stipendio) > 100 Dipart SommaStipendi Amministrazione 125 Direzione WHERE o HAVING? I dipartimenti per cui la media degli stipendi degli impiegati che lavorano nell'ufficio 20 è superiore a 25 milioni select Dipart where Ufficio = 20 group by Dipart having avg(stipendio) > 25 Sintassi, riassumiamo Select ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ]

11 Unione, intersezione e differenza La select da sola non permette di fare unioni; serve un costrutto esplicito: Select { < union intersect except > [ all ] Select } select Nome union select Cognome as Nome i duplicati vengono eliminati (a meno che si usi all); anche dalle proiezioni! select padre from paternita union select madre from maternita Notazione posizionale! quali nomi per gli attributi del risultato? nessuno quelli del primo operando Notazione posizionale, 2 Notazione posizionale, 3 select padre, figlio from paternita union select figlio, madre from maternita select padre, figlio from paternita union select madre, figlio from maternita Anche con le ridenominazioni non cambia niente: select padre as genitore, figlio from paternita union select figlio, madre as genitore from maternita Intersezione e differenza Interrogazioni nidificate select Nome intersect select Cognome as Nome select Nome except select Cognome as Nome le condizioni atomiche esprimibili nella clausola WHERE permettono anche il confronto fra un attributo (o più, vedremo poi) e il risultato di una sottointerrogazione quantificazioni esistenziali equivale a select I.Nome I, Impiegato J where I.Nome = J.Cognome vedremo che si può esprimere con select nidificate

12 Interrogazioni nidificate, sintassi ConfrontoConNidificazione :: = Scalare OpConfronto [ any all ] ( SelectAttributoSingolo) exists ( SelectStar ) senza any o all, il risultato della SelectAttributoSingolo deve essere un solo valore v.a θ any Select... (risp. all) è vero se v.a è in relazione θ con almeno uno (risp. con tutti) dei valori del risultato della Select = any puo essere abbreviato con in exists( SelectStar ) è vero se il risultato della sottoespressione non è vuoto. Interrogazioni nidificate Gli impiegati che lavorano in dipartimenti di Roma where Dipart = any (select Nome from Dipartimento where Citta = 'Roma') Interrogazioni nidificate, commenti Nome e reddito del padre di Mario select Nome, Reddito from Persone where Nome = (select Padre from Paternita where Figlio = 'Mario') select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Mario' La prima versione di prevedeva solo la forma nidificata (o strutturata), con una sola relazione in ogni clausola FROM. Il che è insoddisfacente: la dichiaratività è limitata non si possono includere nella target list attributi di relazioni nei blocchi interni La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni non possono contenere operatori insiemistici ( l unione si fa solo al livello esterno ); la limitazione non è significativa Interrogazioni piatte o nidificate? Nome e reddito dei padri di persone che guadagnano più di 20 milioni" select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio =any (select Nome from Persone where Reddito > 20)) select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select I1.Nome I1, Impiegato I2 where I1.Nome = I2.Nome and I2.Dipart = 'Produzione' select Nome where Nome = any (select Nome where Dipart = 'Produzione')

13 Interrogazioni nidificate, commenti, 2 Le persone che hanno almeno un figlio from Persone where exists ( from Paternita where Padre = Nome) or exists ( from Maternita where Madre = Nome) regole di visibilità: non è possibile fare riferimenti a variabili definite in blocchi più interni se un nome di variabile è omesso, si assume riferimento alla variabile più vicina nota: in un blocco si può fare riferimento a variabili definite in blocchi più esterni; la semantica (prodotto cartesiano, selezione, proiezione) non funziona più, ne serve una più sofisticata: l interrogazione interna va ripetuta una volta per ciascun valore della variabile Necessità della forma nidificata Trovare i padri i cui figli guadagnano tutti più di venti milioni" select distinct Padre from Paternita Z where not exists ( from Paternita W, Persone where W.Padre = Z.Padre and W.Figlio = Nome and Reddito <= 20) Semantica delle espressioni correlate L interrogazione interna viene eseguita una volta per ciascuna ennupla dell interrogazione esterna anche con <>all scorretta: Visibilità where Dipart in (select Nome from Dipartimento D1 where Nome = 'Produzione') or Dipart in (select Nome from Dipartimento D2 where D2.Citta = D1.Citta) Disgiunzione e unione (ma non sempre) from Persone where Reddito > 30 union select F.* from Persone F, Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30 from Persone F where Reddito > 30 or exists ( from Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30)

14 select Nome except select Cognome as Nome Differenza e nidificazione select Nome I where not exists ( where Cognome = I.Nome) Massimo e nidificazione L impiegato con lo stipendio massimo where Stipendio = (select max(stipendio) ) Operazioni di aggiornamento operazioni di inserimento eliminazione modifica di una o più ennuple di una relazione sulla base di una condizione che può coinvolgere anche altre relazioni istruzioni insert delete update Inserimento di ennuple sintassi insert into NomeTabella [ ( ListaAttributi )] < values( ListaDiValori ) Select > insert into Dipartimento(NomeDip,Citta) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto where LuogoProd = 'Milano') Inserimento di ennuple, 2 l ordinamento degli attributi (se presente) e dei valori è significativo le due liste debbono avere lo stesso numero di elementi se la lista di attributi è omessa, si fa riferimento a tutti gli attributi della relazione, secondo l ordine con cui sono stati definiti 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 Eliminazione di ennuple delete from NomeTabella [ where Condizione ] delete from Dipartimento where NomeDip = 'Produzione' delete from Dipartimento where Nome not in (select Dipart )

15 Eliminazione di ennuple elimina le ennuple che soddisfano la condizione può causare (se i vincoli di integrità referenziale sono definiti con politiche di reazione cascade) eliminiazioni da altre relazioni ricordare: se la where viene omessa, si intende where true cancelliamo tutte le ennuple (ma manteniamo lo schema): delete from Dipartimento per cancellare anche lo schema drop Dipartimento Modifica di ennuple update NomeTabella set Attributo = < Espressione Select null default > {, Attributo = < Espressione Select null default > } [ where Condizione ] update Dipendente set Stipendio = 45 where Matricola = 'M2047' update Impiegato set Stipendio = Stipendio * 1.1 where Dipart = 'Amministrazione' Vincoli di integrità generici: check attenzione all approccio set-oriented e non tuple-oriented: update Impiegato set Stipendio = Stipendio * 1.1 where Stipendio <= 30 update Impiegato set Stipendio = Stipendio * 1.15 where Stipendio > 30 Specifica di vincoli di ennupla (e anche vincoli più complessi) check ( Condizione ) create table Impiegato ( Matricola character(6), Cognome character(20), Nome character(20), Sesso character not null check (sesso in ( M, F )) Stipendio integer, Superiore character(6), check (Stipendio <= (select Stipendio J where Superiore = J.Matricola) ) Vincoli di integrità generici: asserzioni Specifica vincoli a livello di schema create assertion NomeAsserzione check ( Condizione ) create assertion AlmenoUnImpiegato check (1 <= (select count(*) )) Viste create view NomeVista [ ( ListaAttributi ) ] as Select [ with [ local cascaded ] check option ] create view ImpiegatiAmmin (Matricola, Nome, Cognome, Stipendio) as select Matricola, Nome, Cognome, Stipendio where Dipart = 'Amministrazione' and Stipendio > 10 create view ImpiegatiAmminPoveri as from ImpiegatiAmmin where Stipendio < 50 with check option

16 La clausola with check option create view NomeVista [ ( ListaAttributi ) ] as Select [ with [ local cascaded ] check option ] check option specifica che posso essere ammessi aggiornamenti solo sulle righe della vista, e dopo gli aggiornamenti le righe devono continuare ad appartenere alla vista create view View1 (ViewCol1, ViewCol2) as select Column1, Column2 from Table1 where Column1 = 5; update View1 set ViewCol1 = 4 L'istruzione di update è valida, ma se inseriamo nella vista l'opzione with check option l'istruzione fallisce, poiché le righe aggiornate non apparterrebbero più alla vista 91 Viste su Viste E' possibile definire una vista basata su un'altra vista: create view View1 as from Table1 where Column1 <> 0; create view View2 as from View1 where Column2 <> 0; Tra la tabella Table1 e le viste View1 e View2 esistono le seguenti relazioni: Table1 è immediatamente sottostante a View1 View1 è immediatamente sottostante a View2 Table1 è indirettamente sottostante a View1 Tramite le opzioni local e cascaded della clausola with check option è possibile definire se il controllo sulla modifica delle righe contenute nella vista debba essere propagato alle viste sottostanti 92 Le opzioni local e cascaded cascaded (l'opzione di default) specifica che il controllo sul fatto che le righe che vengono aggiornate continuino ad appartenere alla vista deve essere propagato a tutte le viste sottostanti local specifica che tale controllo deve essere effettuato solo all ultimo livello della vista Esempi su local e cascaded (1) create view View1 as from Table1 where Column1 <> 0; create view View2 as from View1 where Column2 <> 0 with cascaded check option; create view View3 as from View2 where Column3 <> 0; create view View4 as from View3 where Column4 <> 0 with local check option; 93 create view View5 as from View4 where Column5 <> 0; 94 Esempi su local e cascaded (2) insert into View1 values (0, 0, 0, 0, 0) è legale, poiché su View1 non c'è la clausola with check option insert into View2 values (1, 0, 1, 1, 1) non è legale, poiché viola il controllo di View2 insert into View2 values (0, 1, 1, 1, 1) non è legale, poiché viola il controllo di View1 (abilitato dall'opzione cascaded di View2) insert into View3 values (0, 1, 1, 1, 1) non è legale, poiché viola il controllo di View1 (abilitato dall'opzione cascaded di View2) insert into View4 values (0, 0, 0, 1, 1) è legale, poiché il controllo su View4 è soddisfatto e i controlli sulle viste sottostanti sono disabilitati dall'opzione local insert into View5 values (0, 0, 0, 1, 0) è legale, poiché il controllo di View4 (l'unico abilitato) è soddisfatto 95 Un interrogazione non standard Trova il dipartimento che spende il massimo in stipendi La nidificazione nella having non è ammessa select Dipart group by Dipart having sum(stipendio) >= all (select sum(stipendio) group by Dipart) 96 16

17 Soluzione con le viste create view BudgetStipendi(Dip,TotaleStipendi) as select Dipart, sum(stipendio) group by Dipart select Dip from BudgetStipendi where TotaleStipendi =(select max(totalestipendi) from BudgetStipendi) Ancora sulle viste Trova il numero medio di uffici per ogni dipartimento Interrogazione scorretta select avg(count(distinct Ufficio)) group by Dipart Con una vista create view DipartUffici(NomeDip,NroUffici) as select Dipart, count(distinct Ufficio) group by Dipart select avg(nrouffici) from DipartUffici Controllo degli accessi Ogni componente dello schema (risorsa) può essere protetta (tabelle, attributi, viste, domini, ecc.) Il possessore della risorsa (colui che la crea) assegna dei previlegi agli altri utenti Un utente predefinito ( _system) rappresenta l amministratore della base di dati ed ha completo accesso alle risorse Ogni previlegio è caratterizzato da: la risorsa a cui si riferisce l utente che concede il previlegio l utente che riceve il previlegio l azione che viene permessa sulla risorsa se il previlegio può esser trasmesso o meno ad altri utenti Tipi di previlegi offre sei tipi di previlegi: insert: inserisce un nuovo oggetto nella risorsa update: modifica il contenuto di una risorsa delete: rimuove un oggetto dalla risorsa select: accede il contenuto della risorsa con una query references: costruisce un vincolo di integrità referenziale con la risorsa (può limitare la capacità di modificare la risorsa) usage: utilizza la risorsa nella definizione di uno schema (es., un dominio) grant e revoke Per concedere un previlegio ad un utente: grant < Privileges all privileges > on Resource to Users [ with grant option ] grant option specifica se ha il previlegio di propagare il previlegio ad altri utenti Es.: grant select on Department to Stefano Per revocare il previlegio: revoke Privileges on Resource from Users [ restrict cascade ] Opzioni di grant e revoke La revoca deve essere fatta dall utente che aveva concesso i previlegi restrict (di default) specifica che il comando non deve essere eseguito qualora la revoca dei previlegi all utente comporti qualche altra revoca (dovuta ad un precedente grant option) cascade invece forza l esecuzione del comando Attenzione alle reazioni a catena

18 immerso in linguaggio ospite "embedded " in applicazioni complesse, è spesso necessario immergere istruzioni in programmi tradizionali (Pascal, C, COBOL) i programmi con immerso sono analizzati da precompilatori che traducono le istruzioni le variabili del programma possono essere usate come parametri nelle istruzioni (precedute da ':') select che producano una sola ennupla e operazioni di aggiornamento possono essere immerse senza problemi (con opportuno meccanismo di trasmissione dei risultati) esiste di solito una variabile di sistema sqlcode che dopo l'esecuzione di un'operazione assume valore zero se essa ha avuto successo e valore diverso altrimenti Relazioni e record: cursori problema fondamentale: disadattamento di impedenza i linguaggi tradizionali gestiscono record uno alla volta produce insiemi di ennuple soluzione: cursore accede a tutte le ennuple di una interrogazione in modo globale le trasmette al programma una alla volta Operazioni sui cursori Definizione del cursore declare NomeCursore [ scroll ] cursor for Select [ for < read only update [ of Attributo {, Attributo } ] > ] Esecuzione dell'interrogazione open NomeCursore Utilizzo dei risultati (una ennupla alla volta) fetch NomeCursore into ListaVariabili Disabilitazione del cursore close cursor NomeCursore Accesso alla ennupla corrente (di un cursore su singola relazione a fini di aggiornamento/cancellazione) current of NomeCursore nella clausola where Frammento di programma con immerso write('nome della citta''?'); readln(citta); EXEC DECLARE P CURSOR FOR SELECT NOME, REDDITO FROM PERSONE WHERE CITTA = :citta ; EXEC OPEN P ; EXEC FETCH P INTO :nome, :reddito ; while CODE = 0 do begin write('nome della persona:', nome, 'aumento?'); readln(aumento); EXEC UPDATE PERSONE SET REDDITO = REDDITO + :aumento WHERE CURRENT OF P EXEC FETCH P INTO :nome, :reddito end; EXEC CLOSE CURSOR P Altro esempio void VisualizzaStipendiDipart(char NomeDip[]) { char Nome[20], Cognome[20]; long int Stipendio; $ declare ImpDip cursor for select Nome, Cognome, Stipendio where Dipart = :NomeDip; $ open ImpDip; $ fetch ImpDip into :Nome, :Cognome, :Stipendio; printf("dipartimento %s\n",nomedip); while (sqlcode == 0) { printf("nome e cognome dell'impiegato: %s %s",nome,cognome); printf("attuale stipendio: %d\n",stipendio); $ fetch ImpDip into :Nome, :Cognome, :Stipendio; } $ close cursor ImpDip; } dinamico Quando le applicazioni non conoscono a compile-time i costrutti da eseguire, allora è necessario dinamico Problema principale: gestire il trasferimento di dati tra programma ed ambiente Per l esecuzione diretta (solo per comandi senza parametri): execute immediate Statement Per l esecuzione preceduta dall analisi dei construtti: prepare CommandName from Statement followed by: execute CommandName [ into TargetList ] [ using ParameterList ]

19 Transazioni Una transazione è un elenco di istruzioni che devono essere considerate come un gruppo indivisibile: o tutte le istruzioni vengono correttamente eseguite o i dati devono restare immutati. L'utilizzo delle transazioni impedisce che il database venga lasciato in uno stato inconsistente, a causa (ad esempio) di un crash di sistema dopo l'esecuzione della prima parte di un'operazione di giroconto bancario: update ContoCorrente set Importo = Importo 100 where cliente = 'Rossi' update ContoCorrente set Importo = Importo where cliente = 'Bianchi' Inizio e termine di una transazione Una transazione inizia implicitamente con l'esecuzione di una qualsiasi istruzione (a meno che una transazione non sia già in corso) o esplicitamente con l'istruzione start transaction. start transaction [LivelloIsolamento,] [ModalitàAccesso,][LivelloDiagnostica] Una transazione termina con commit (le modifiche vengono salvate) o rollback (le modifiche vengono annullate) commit [ and chain ] rollback [ and chain ] Consolidamento di una transazione Durante una transazione è possibile definire dei punti di consolidamento (savepoint); ciò dà la possibilità riportare il database allo stato immediatamente successivo al punto di consolidamento, annullando tutte le operazioni successive e mantenendo attiva la transazione savepoint NomeSavePoint rollback to savepoint NomeSavePoint (Stored) Procedure A partire da -2 è possibile definire le procedure (chiamate stored procedure) Le stored procedure sono parte dello schema procedure AssignCity(:Dep char(20), :City char(20)) update Department set City = :City where Name = :Dep -99 ha standardizzato la sintassi delle Stored Procedure; ad oggi però molti sistemi offrono delle estensioni che consentono di scrivere procedure complesse ma che non rispettano pienamente lo standard (ad esempio Oracle PL/) Creazione di Stored Procedure create procedure NomeProcedura [( ListaParametri )] [CaratteristicheProcedura] CorpoProcedura I parametri possono essere di input, di output o di input/output in out inout NomeParametro1 TipoDato1, Una delle caratteristiche che è possibile definire è il linguaggio in cui è scritta la procedura: non deve essere necessariamente, può essere C, Pascal, Java ecc. Le procedure non sono contenute in librerie esterne al DB, ma lo standard non specifica (ad esempio) come definire dove si trova la DLL Il corpo può essere una singola istruzione ; utilizzando estensioni non standard è possibile inserire nel corpo più istruzioni racchiuse all'interno di una transazione Function Le Function sono molto simili alle Stored Procedure, ma ritornano un valore create function NomeProcedura [( ListaParametri )] returns TipoDato [CaratteristicheProcedura] CorpoProcedura I parametri possono essere solo di input Il corpo deve contenere un'istruzione return

20 Un esempio di Funzione create function MaxDate () returns date contains sql return ( select max(date1) from table1 where int1>5); Esecuzione di Stored Procedure e Funzioni call NomeProcedura [( ListaParametri )] NomeFunzione [( ListaParametri )] I parametri possono essere valori scalari (per i parametri di input) o variabili call procedure1(5, :variable1) insert into table1 (column1) values function1(7) Persistent Stored Modules In -99 è stata aggiunta una funzionalità chiamata Persistent Stored Modules (PSM); si tratta di moduli che appartengono ad uno schema e possono contenere una o più Stored Procedure o Function La creazione di un modulo avviene tramite il comando create module: create module NomeModulo [ names are NomeFamigliaCaratteri ] [ schema NomeSchema ] [ ListaDichiarazioneProcedureEFunzioni;] end module Un modulo può essere successivamente modificato o cancellato con le istruzioni alter module e drop module 117 Dichiarazione ed esecuzione di un PSM create module Employees_Module procedure DeleteEmployees() modifies data delete from Employees; procedure UpdateEmployees() modifies data update Employees set col = NULL; procedure InsertEmployees(in code smallint) modifies data insert into Employees values (code); end module call Employees_Module.InsertEmployees(5) 118 Comandi composti Lo standard -99 prevede che il corpo di una Stored Procedure (o di una Function) contenga un unico comando All'interno dei moduli tale limitazione può essere superata, utilizzando un comando composto, cioè una lista di istruzioni delimitate dai comandi begin e end Inoltre all'interno di un comando composto è possibile utilizzare delle funzionalità tipiche dei linguaggi di programmazione procedurali: Dichiarazione di variabili Comandi condizionali Controllo di flusso Gestione delle eccezioni Sintassi dei comandi composti [ etichetta : ] begin [ atomic ] [ ListaVariabili ListaCondizioni ; ] [ DichiarazioneCursore ; ] [ ListaDichiarazioniHandler ; ] [ Corpo ] end [etichetta] La clausola atomic specifica che l'elenco dei comandi contentuti nel corpo deve essere eseguito in maniera atomica; in questo caso il corpo non può contenere commit o rollback

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

Definizione di domini

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

Dettagli

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

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

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

Dettagli

SQL Sintassi Dei Comandi

SQL Sintassi Dei Comandi SQL Sintassi Dei Comandi Di Roberto Aloi http://prof3ta.homeunix.org prof3ta@email.it Questo fascicolo è stato realizzato esclusivamente a fini divulgativi e per la libera consultazione. E' concessa la

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

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

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

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

Dettagli

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

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie: Tipi di linguaggi per basi di dati Si distinguono due categorie: DDL DML Linguaggi di definizione dei dati o data definition languages: utilizzati per definire gli schemi logici, esterni e fisici e le

Dettagli

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati. Programmazione e gestione di sistemi telematici Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini SQL SQL = Structured Query Language Linguaggio

Dettagli

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

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

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari: SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition

Dettagli

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione

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. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

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

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

Dettagli

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

---------------------------------------------------------------------------- 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

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

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

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

Dettagli

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 Cos'è SQL? Linguaggio di riferimento per le basi di dati relazionali

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

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

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

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

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

Dettagli

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5 Domini elementari, Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati Bit Valori booleani (vero/falso), singoli o in sequenza (la sequenza può essere di lunghezza variabile) Sintassi: bit

Dettagli

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) SQL PER LA DEFINIZIONE DI BASI DI DATI 1 SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

Interrogazioni nidificate, commenti

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

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

Dettagli

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL PER LA DEFINIZIONE DI BASI DI DATI SQL PER LA DEFINIZIONE DI BASI DI DATI SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA

Dettagli

Operazioni sui database

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

Dettagli

SQL: Concetti Base -Prima Parte-

SQL: Concetti Base -Prima Parte- SQL: Concetti Base -Prima Parte- Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati: Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia Capitolo 4 SQL Structured Query Language Contiene: DDL (Data Definition

Dettagli

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null Capitolo 4 Esercizio 4.1 Ordinare i seguenti domini in base al valore massimo rappresentable, supponendo che integer abbia una rappresentazione a 32 bit e smallint a 16 bit: numeric(12,4), decimal(10),

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 e Sistemi Informativi. Structured Query Language

Basi di Dati e Sistemi Informativi. Structured Query Language Basi di Dati e Sistemi Informativi Structured Query Language Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale SQL come DDL e DML SQL non è solo un linguaggio di interrogazione Linguaggio

Dettagli

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

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

Dettagli

DBMS (Data Base Management System)

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

Dettagli

Lezione 8. Metadati, Viste e Trigger

Lezione 8. Metadati, Viste e Trigger Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli

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

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

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I

Dettagli

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011 Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse

Dettagli

DUE GRUPPI DI COMANDI

DUE GRUPPI DI COMANDI LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano

Dettagli

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione

Dettagli

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Il linguaggio SQL è stato originariamente dichiarativo, diventando nel tempo sempre

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1 SQL SQL (Structured Query Language) è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali. Sono stati proposti

Dettagli

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati 1 SQL Il nome stava per Structured Query Language Più che un semplice linguaggio di query: si compone di una parte DDL e di una DML DDL:

Dettagli

4 SQL : Interrogazioni nidificate

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

Dettagli

Il linguaggio SQL: le basi

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

Dettagli

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

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)

Dettagli

Corso di Laboratorio di Basi di Dati

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

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione

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

SQL: "storia" 31/05/2006 2

SQL: storia 31/05/2006 2 SQL 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, non i dettagli

Dettagli

Istruzioni DML di SQL

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

Dettagli

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Vincoli di Integrità Approccio dichiarativo alla loro implementazione Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico

Dettagli

SQL. Alcune note sulla definizione dei dati

SQL. Alcune note sulla definizione dei dati SQL Alcune note sulla definizione dei dati Domini Domini elementari (predefiniti) Domini definiti dall'utente (riutilizzabili, possono servire per specificare vincoli di dominio propri di una certa applicazione)

Dettagli

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

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

Dettagli

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

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

Dettagli

Linguaggio SQL Descriviamo la notazione usata nel seguito:

Linguaggio SQL Descriviamo la notazione usata nel seguito: Descriviamo la notazione usata nel seguito: i termini del linguaggio sono sottolineati; i termini variabili sono scritti in corsivo; le parentesi angolari (< >)permettono di isolare un termine della sintassi;

Dettagli

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe SQL SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe Operazioni di aggiornamento Abbiamo visto come creare tabelle e come interrogarle. Vedremo ora come popolarle

Dettagli

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

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

Dettagli

Il linguaggio SQL: viste e tabelle derivate

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

Dettagli

SQL - Funzioni di gruppo

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

Dettagli

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema Giovanna Rosone 04/03/2010 04/03/2010 SQL, Istruzioni per la modifica dello schema 1 Riepilogo Impiegato Pagamenti Nome colonna PAG_COD PAG_MATR Tipo dati CHAR(6) CHAR(6) Nome colonna Tipo dati PAG_STIPENDIO

Dettagli

Vincoli di integrità

Vincoli di integrità Vincoli di integrità Non tutte le istanze di basi di dati sintatticamente corrette rappresentano informazioni plausibili per l applicazione di interesse Studenti Matricola Nome Nascita 276545 Rossi 23-04-72?

Dettagli

SQL. Sistemi informativi Modulo di Basi di dati. CREATE TABLE, esempio. Definizione dei dati in SQL. Domini. Domini elementari

SQL. Sistemi informativi Modulo di Basi di dati. CREATE TABLE, esempio. Definizione dei dati in SQL. Domini. Domini elementari SQL Sistemi informativi Modulo di Basi di dati Capitolo 4: SQL 20/04/1999 Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versione dell

Dettagli

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili)

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili) Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versioni dell ; vediamo gli aspetti essenziali non i dettagli storia : prima proposta SEQUEL

Dettagli

Corso di Informatica (Basi di Dati)

Corso di Informatica (Basi di Dati) Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.

Dettagli

Linguaggio SQL. Structured Query Language

Linguaggio SQL. Structured Query Language Linguaggio SQL Structured Query Language Creato negli anni 70 presso IBM Inizialmente solo linguaggio di interrogazione Ora linguaggio di riferimento per DB relazionali Standardizzato grazie al lavoro

Dettagli

Corrado Aaron Visaggio 1. Esercizio

Corrado Aaron Visaggio 1. Esercizio SQL Corrado Aaron Visaggio 1 Esercizio Definire un archivio di polizia, ispirato al sistema disponibile sull sito www.fbi.gov. Ogni criminale deve possedere: informazioni anagrafiche (nome, cognome, indirizzo,

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare

Dettagli

PROGRAMMA DI CLASSE 5AI

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

Dettagli

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

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

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

Il linguaggio SQL: DDL di base

Il linguaggio SQL: DDL di base Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali,

Dettagli

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza Anno Accademico 2011/2012 http://www.dis.uniroma1.it/ lenzerini/?q=node/44 3. Il

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. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale

Dettagli

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità

Dettagli

Corso di Basi di Dati. Linguaggi per basi di dati. Linguaggi per basi di dati. Linguaggi per basi di dati: Algebra Relazionale

Corso di Basi di Dati. Linguaggi per basi di dati. Linguaggi per basi di dati. Linguaggi per basi di dati: Algebra Relazionale Corso di Basi di Dati Linguaggi per basi di dati: lgebra Relazionale Donatella Gubiani Linguaggi per basi di dati Si possono distinguere diversi tipi di linguaggi per la gestione dei dati: Linguaggio di

Dettagli

MAX, SUM, AVG, COUNT)

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

Dettagli

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili)

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili) SQL SQL Structured Query Language è un linguaggio con varie funzionalità: contiene sia il DDL sia il DML; esistono varie versioni dell SQL; vediamo gli aspetti essenziali non i dettagli storia : prima

Dettagli

Basi di Dati prof. Letizia Tanca

Basi di Dati prof. Letizia Tanca Basi di Dati prof. Letizia Tanca (lucidi tratti dal libro Atzeni-Ceri-Paraboschi-Torlone) AA 2003-04 Linguaggi di interrogazione commerciali per il Modello Relazionale dei Dati: SQL - il DDL Domini I domini

Dettagli

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

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

Dettagli

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti

Dettagli

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza Basi dati attive Triggers Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico 2009-2010 Una base di dati

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio

Dettagli

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

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

Dettagli

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti: Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo

Dettagli

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

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

Dettagli

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

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

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12 SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

Oracle PL/SQL. Motivazioni

Oracle PL/SQL. Motivazioni Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni

Dettagli

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date; CREAZIONE STRUTTURA DI UNA TABELLA by Marinsalta Fausto CREATE TABLE Personale Matricola char(5), Cognome char(30), Nome char(20), Codfis char(16) not null, Assunzione date, Filiale smallint, Funzione

Dettagli