Agent and Object Technology Lab
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma
AOT AOT LAB LAB
Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica
Basi di dati
Michele Tomaiuolo
AOT AOT
LAB LAB
Sistema informativoSistema informativoSistema informativoSistema informativoUn sistema informativo è composto da un insieme di programmi concorrenti:
Ogni programma opera su un certo insieme di dati
Dei dati possono essere condivisi da alcuni programmi
La più semplice soluzione è che ogni programma del sistema gestisca separatamente i suoi dati
Un’altra soluzione è interporre tra i programmi e i dati un programma chiamato Data Base
Management System (DBMS) dedicato alla gestione dei dati
AOT AOT
LAB LAB
Gestione distinta dei datiGestione distinta dei datiGestione distinta dei datiGestione distinta dei datidati1 Dati2
Prog1
Prog2
Prog3
Dati4 Dati5 Dati6
Dati3
AOT AOT LAB LAB
Problemi di ridondanza dei dati
Esistono più copie di un dato
Problemi di inconsistenza
Copie dello stesso dato sono modificate diversamente
Problemi di privatezza
Dati riservati sono accessibili a persone non autorizzate
Problemi di integrità
Il valore di un dato è modificato a causa di una operazione incompleta o sbagliata
Problemi di concorrenza
L’accesso e l’aggiornamento ai dati da parte di programmi differenti non è sincronizzato
Limiti della gestione distinta Limiti della gestione distinta Limiti della gestione distinta Limiti della gestione distinta
AOT AOT
LAB LAB
Gestione condivisa dei datiGestione condivisa dei datiGestione condivisa dei datiGestione condivisa dei datiProg1 Prog2
Prog3
DBMS
Base di Dati
AOT AOT LAB LAB
L’introduzione del DBMS comporta dei costi aggiuntivi in termini di investimento:
Necessità di hardware aggiuntivo
Necessità del DBMS
L’introduzione del DBMS comporta dei costi aggiuntivi in termini di tempi di elaborazione:
Uso di metodi di descrizione e manipolazione non specializzati per un particolare insieme di dati
Gestione della sicurezza, integrità, concorrenza, back up e ripristino dei dati
Limiti della gestione condivisa Limiti della gestione condivisa Limiti della gestione condivisa Limiti della gestione condivisa
AOT AOT
LAB LAB
Vantaggi dellVantaggi dellVantaggi dellVantaggi dell’’’’uso di un DBMSuso di un DBMSuso di un DBMSuso di un DBMSTutte le azioni sui dati vengono svolte dal DBMS:
Si controlla la ridondanza sui dati
Si controlla l’inconsistenza dei dati
Si controlla l’integrità dei dati
Si permette la condivisione dei dati
Si gestisce l’accesso concorrente ai dati
AOT AOT
LAB LAB
Vantaggi dellVantaggi dellVantaggi dellVantaggi dell’’’’uso di un DBMSuso di un DBMSuso di un DBMSuso di un DBMSInoltre un DBMS permette di:
Imporre degli standard sul formato dei dati
Gestire il back up e il ripristino dei dati
Restringere l’accesso ai dati
Fornire un insieme di interfacce utente
Aumentare la flessibilità del sistema
Ottimizzare l’uso delle risorse
AOT AOT
LAB LAB
Quando non usare un DBMSQuando non usare un DBMSQuando non usare un DBMSQuando non usare un DBMSQuando un programma usa un insieme di dati:
Piccolo e ben definito
Non cambia col passare del tempo
Non è condiviso con altri programmi
Quando un programma richiede delle prestazioni in tempo reale
AOT AOT
LAB LAB
Gestione dei Gestione dei clientiGestione dei Gestione dei clienticlienticlienti di una di una di una bancadi una bancabancabancaSi consideri una banca che deve gestire le
informazioni relative ai suoi dipendenti, ai suoi clienti e a i servizi offerti
Gestire i conti esistenti (aggiungere/togliere denaro)
Creare i nuovi conti
Avere informazioni su un certo conto
Generare estratti conto mensili
Man mano che si manifestano nuove esigenze, può essere necessario modificare le applicazioni esistenti o disporre di nuovi programmi
Ad esempio, se intervengono nuove disposizioni in materia bancaria, allora bisogna aggiornare il
sistema informativo
AOT AOT
LAB LAB
Gestione di Gestione di Gestione di Gestione di una universituna universituna universitàuna universitàààSi consideri un’università che deve gestire le informazioni relative ai suoi dipendenti, ai suoi studenti e a i servizi offerti
Gestire il pagamento delle tasse di iscrizione
Gestire i piani di studio degli studenti
Generare documenti di attestazione
Man mano che si manifestano nuove esigenze, può essere necessario modificare le applicazioni esistenti o disporre di nuovi programmi
Ad esempio, se intervengono nuove disposizioni sul modo di conseguire una laurea, allora bisogna aggiornare il sistema informativo
AOT AOT
LAB LAB
Cosa Cosa Cosa Cosa èèè una base di datiè una base di datiuna base di datiuna base di datiUna base di dati è una collezione di dati logicamente coerenti con preciso significato
Un assortimento casuale di dati non può essere indicato come una base di dati
Una base di dati è disegnata, costruita ed utilizzata per gestire dati condivisi da un certo numero di utenti e/o applicazioni
Una base di dati rappresenta degli aspetti del mondo reale
I cambiamenti del mondo reale hanno riflesso sulla base di dati
AOT AOT
LAB LAB
Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMSUn Data Base Management System (DBMS) è un sistema software che:
Si interpone fra le applicazioni e la memoria di massa dove si trovano le collezioni di dati
Consente la gestione dei dati, in modo indipendente dalle applicazioni stesse
I dati non appartengono ad una specifica applicazione, ma le diverse applicazioni vi accedono attraverso il DBMS
AOT AOT
LAB LAB
Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMSLe basi di dati gestite dai DBMS sono in generale strutture dati, organizzate secondo modelli ben
definiti e specificati a priori, aventi le seguenti caratteristiche:
Grandi: possono avere notevoli dimensioni (fino a migliaia di Gbyte) e devono quindi risiedere nella memoria secondaria
Condivise: applicazioni ed utenti diversi devono potere accedere ai dati
Persistenti: il tempo di vita dei dati va oltre la durata
AOT AOT
LAB LAB
Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMSUn DBMS è un sistema di "facilities" per effettuare le tre operazioni fondamentali sui dati:
Ricerca
Aggiornamento
Cancellazione
AOT AOT
LAB LAB
Cosa Cosa Cosa Cosa èèèè un DBMSun DBMSun DBMSun DBMSUn DBMS è caratterizzato da:
Controllo centralizzato dei dati
Riduzione della ridondanza dei dati
Eliminazione delle inconsistenze nei dati
Condivisione dei dati tra gli utenti
Uso di standard di rappresentazione
Uso di restrizioni d’accesso ai dati
Mantenimento dell'integrità dei dati per mezzo di procedure di validazione
Realizzazione della indipendenza dei dati
AOT AOT
LAB LAB
Architettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSOgni DBMS é basato su:
Un modello dei dati
Un linguaggio di manipolazione
I DBMS sono classificati:
Per tipo di modello di dati
Per numero di utenti che può servire in parallelo
Per numero di nodi di calcolo coinvolti
AOT AOT
LAB LAB
Architettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSArchitettura di un DBMSutente Programmi applicativi / interrogazioni
Software per processare i programmi e le interrogazioni
Software per accedere ai dati memorizzati
Meta
Dati Dati
DBMS Software
AOT AOT
LAB LAB
Livelli di astrazioneLivelli di astrazioneLivelli di astrazioneLivelli di astrazioneUn DBMS dovrebbe fornire una visione astratta della base di dati:
Livello (schema) fisico: descrive la base di dati come un insieme di record in memoria di massa
Livello (schema) logico: descrive la struttura di ciascun dato e i collegamenti tra dati diversi
Livello (schema) esterno: presenta i dati così come
vengono visti da un particolare utente o da una classe di utenti
AOT AOT
LAB LAB
Livelli di astrazioneLivelli di astrazioneLivelli di astrazioneLivelli di astrazioneUn DBMS dovrebbe fornire indipendenza fisica e logica
L’Indipendenza fisica garantisce che il livello logico non dipende:
Dall’implementazione del DBMS
Dal calcolatore su cui è installato il DBMS
Dal modo in cui in cui i dati sono distribuiti su più macchine
Questo permette di ridefinire il livello fisico senza modificare il livello logico
L’indipendenza logica garantisce che il livello esterno non dipende dal livello logico
Questo permette di definire nuovi schemi esterni senza modifica la struttura logica
AOT AOT
LAB LAB
Architettura a tre livelliArchitettura a tre livelliArchitettura a tre livelliArchitettura a tre livelliUtenti finali
Linguaggio Host + DSL
Linguaggio Host + DSL
Linguaggio Host + DSL
Vista esterna A Vista esterna B
Vista Concettuale
Data Base Fisico DBMS
mappatura concettuale/interna mappatura
esterna/concettuale . . .
AOT AOT
LAB LAB
Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionaliLa condivisione dei dati e l’accesso concorrente comporta il problema del mantenimento della congruenza dei dati
Un esempio, il prelievo da un conto corrente (cc) effettuato con la sequenza di due operazioni:
Controllo della disponibilità
Sottrazione della somma prelevata
Due prelievi contemporanei di 1000 € su un cc con saldo di 1000 €:
A verifica cc >= 1000 €
B verifica cc >= 1000 €
A sottrae 1000 €
B sottrae 1000 €
Ottenendo sul cc un saldo finale di -1000 €!
AOT AOT
LAB LAB
Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionalit
verifica cc >= 1000 €
verifica cc >= 1000 €
sottrae 1000 €
sottrae 1000 €
A B
AOT AOT
LAB LAB
Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionaliUna transazione è un insieme di operazioni sui dati che devono essere eseguite completamente, prima che gli stessi dati siano nuovamente disponibili
La transazione rappresenta un’insieme di operazioni non decomponibili sui dati (si parla di "atomicità della
transazione”)
Nell’esempio precedente le operazioni:
Controllo della disponibilità
Sottrazione della somma addebitata
devono essere contenute in un’unica transazione
AOT AOT
LAB LAB
Sistemi Sistemi Sistemi Sistemi transazionalitransazionalitransazionalitransazionalit
verifica cc >= 1000 €
verifica cc >= 1000 € sottrae 1000 €
sottrae 1000 €
A B
AOT AOT
LAB LAB
Modelli dei datiModelli dei datiModelli dei datiModelli dei datiIl modello dei dati caratterizza il livello concettuale e quello esterno dei DBMS
È definito da regole precise e permette di
esprimere sia le proprietà statiche che quelle dinamiche dei dati
Evoluzione dei modelli:
Gerarchico (anni 1960)
Reticolare (anni 1970)
Relazionale (anni 1970)
Object Relational ed Object Oriented (anni 1980)
AOT AOT
LAB LAB
Modello relazionaleModello relazionaleModello relazionaleModello relazionaleProposto da Codd nel 1970 e disponibile come modello logico in DBMS reali nel 1981
Il modello relazionale si basa sul concetto
matematico di relazione e utilizza le tabelle come rappresentazione naturale delle relazioni
Il successo del modello relazionale è in gran parte dovuto alla semplicità di utilizzo, data dal fatto che si appoggia ad un modo di rappresentate i dati a noi familiare:
le tabelle
AOT AOT
LAB LAB
Modello relazionaleModello relazionaleModello relazionaleModello relazionaleNel modello relazionale ogni relazione è sostanzialmente una tabella
A ciascun dominio associamo un nome
(attributo), unico nella relazione, che “descrive” il ruolo del dominio
Nella rappresentazione tabellare, gli attributi sono usati come intestazioni delle colonne
Le informazioni sono rappresentate dalle righe presenti nelle tabelle
AOT AOT
LAB LAB
Database universitarioDatabase universitarioDatabase universitarioDatabase universitariostudenti
esami
corsi
AOT AOT
LAB LAB
TerminologiaTerminologiaTerminologiaTerminologiastudenti
Riga-Record -Tupla
Colonna - Campo - Attributo Tabella - Relazione - File
Schema
AOT AOT
LAB LAB
CaratteristicheCaratteristicheCaratteristicheCaratteristicheLe righe di una tabella sono definite dall'insieme dei valori corrispondenti ai campi della tabella
stessa
I valori che possono essere assegnati a ciascun campo sono il dominio di quel campo
Il dominio di un campo è l’insieme di tutti e soli i valori che possono essere assunti da un
determinato attributo di una relazione
Ad esempio, il dominio dei codici fiscali è formato da stringhe di 16 caratteri composte seguendo con
precisione la regola di generazione dei codici fiscali
AOT AOT
LAB LAB
CaratteristicheCaratteristicheCaratteristicheCaratteristicheInformazioni contenute in tabelle distinte possono essere associate semplicemente per mezzo della condivisione di campi (ossia di domini) tra tali
tabelle
Ad esempio, nel database universitario:
Studenti ed esami sono associati con i campi matricola e studente
• Corsi ed esami sono associati con i campi corso e codice
Il modello relazionale basa la propria forza sulla semplicità
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiavestudenti
Esami
corsi
AOT AOT
LAB LAB
DefinizioneDefinizioneDefinizioneDefinizioneData una collezione di insiemi D1,...,Dn, non necessariamente distinti
Una relazione R su tali insiemi è un insieme di n- uple ordinate (d1,...,dn) tali che d1
∈
D1,..., dn∈
DnGli insiemi Di si dicono domini della relazione
Il valore n è il grado della relazione
Il numero di n-uple presenti in R rappresenta la cardinalità della relazione
Una relazione R sugli insiemi D1,...,Dn è un
sottoinsieme del prodotto cartesiano D x D x ... x D
AOT AOT
LAB LAB
NormalizzazioneNormalizzazioneNormalizzazioneNormalizzazioneTutte le relazioni di un DB relazionale devono essere normalizzate, cioè:
Ciascun attributo in ogni riga, deve essere “atomico”
Ossia non scomponibile in valori elementari
AOT AOT
LAB LAB
NormalizzazioneNormalizzazioneNormalizzazioneNormalizzazionestudenti
studenti
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveUna tabella (relazione) non dovrebbe contenere due righe identiche
E’ sempre possibile scegliere un sottoinsieme di campi di una tabella in maniera da identificare univocamente ciascuna riga della tabella
La chiave primaria (primary key, PK) di una tabella è il minimo sottoinsieme di campi che permette di identificare univocamente le righe della tabella
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiavestudenti
Esami
corsi
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveLe chiavi candidate sono gli attributi in una
relazione con la proprietà di poter essere la chiave primaria:
Tra le chiavi candidate deve essere scelta la chiave primaria
Le chiavi escluse si dicono chiavi alternative
Le righe di una tabella rappresentano “entità” del mondo reale
La chiave primaria rappresenta il modo con cui è possibile distinguere queste entità
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveLe informazioni presenti in tabelle diverse possono essere associate tra loro perché tali tabelle hanno dei domini in comune
Quando il dominio di un campo K che è chiave primaria in una tabella A è presente anche in un’altra tabella B
Allora questo campo K è detto chiave esterna (foreign key, FK) verso la tabella A
AOT AOT
LAB LAB
Concetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveConcetto e tipi di chiaveEsami studenti
AOT AOT
LAB LAB
OperatoriOperatoriOperatoriOperatoriGli operatori relazioni rappresentano la base
teorica per i linguaggi di interrogazioni delle basi di dati relazionali
Quindi sono anche la base del linguaggio base di interrogazione delle basi di dati relazionali
Gli operatori relazionali permettono l’esecuzione di ricerche considerando le tabelle come insiemi,
senza operare record per record
Gli operatori prendono in input tabelle e generano in output nuove tabelle
AOT AOT
LAB LAB
OperatoriOperatoriOperatoriOperatoriGli operatori dell’algebra relazionale sono:
Unione
Intersezione
Differenza
Ridenominazione
Selezione
Proiezione
Join
AOT AOT
LAB LAB
Operatori Operatori Operatori Operatori insiemisticiinsiemisticiinsiemisticiinsiemisticiLe relazioni rappresentano degli insiemi
Se applichiamo gli operatori insiemistici (unione, intersezione e differenza) a delle relazioni
otteniamo delle altre relazioni
È importante sottolineare che è possibile applicare gli operatori insiemistici solo a relazioni definite
sugli stessi attributi
AOT AOT
LAB LAB
Operatori Operatori Operatori Operatori insiemisticiinsiemisticiinsiemisticiinsiemisticilaureati
quadri
reparti
AOT AOT
LAB LAB
UnioneUnioneUnioneUnionelaureati quadri
laureati ∪∪∪∪ quadri
AOT AOT
LAB LAB
IntersezioneIntersezioneIntersezioneIntersezionelaureati quadri
laureati ∩∩∩∩ quadri
AOT AOT
LAB LAB
DifferenzaDifferenzaDifferenzaDifferenzalaureati quadri
laureati - quadri
AOT AOT
LAB LAB
RidenominazioneRidenominazioneRidenominazioneRidenominazioneL’operatore di ridenominazione viene applicato ad un unica relazione (operatore monadico)
Questo operatore modifica lo schema della
relazione lasciando inalterati i valori delle righe della relazione
Questo operatore, come dice già il suo nome, ha lo scopo di rinominare un attributo di una relazione
AOT AOT
LAB LAB
RidenominazioneRidenominazioneRidenominazioneRidenominazionepaternità
maternità
AOT AOT
LAB LAB
Selezione e Selezione e proiezioneSelezione e Selezione e proiezioneproiezioneproiezioneselezione
proiezione
AOT AOT
LAB LAB
SelezioneSelezioneSelezioneSelezioneL’operatore di selezione viene applicato ad un unica relazione
Questo operatore costruisce una nuova relazione:
Estrae un sottoinsieme orizzontale delle righe di una relazione specificata in input
Selezionando le righe che soddisfano una condizione espressa sui valori degli attributi della relazione in input
AOT AOT
LAB LAB
SelezioneSelezioneSelezioneSelezioneAOT AOT
LAB LAB
ProiezioneProiezioneProiezioneProiezioneL’operatore di proiezione viene applicato ad un unica relazione
Questo operatore costruisce una nuova relazione:
Estrae un sottoinsieme verticale degli attributi di una relazione specificata in input
Rimuovendo inoltre eventuali n-uple duplicate
AOT AOT
LAB LAB
ProiezioneProiezioneProiezioneProiezioneAOT AOT
LAB LAB
JoinJoinJoinJoinL’operatore di join viene applicato a due relazioni
Questo operatore costruisce una nuova relazione:
Utilizzando un attributo (dominio) comune alle due tabelle originali
Scegliendo le righe della prima relazione e della seconda tabella che hanno lo stesso valore per l'attributo comune
Concatenando queste righe
AOT AOT
LAB LAB
JoinJoinJoinJoinAOT AOT
LAB LAB
JoinJoinJoinJoinAOT AOT
LAB LAB
JoinJoinJoinJoinAOT AOT
LAB LAB
Prodotto Prodotto Prodotto Prodotto cartesianocartesianocartesianocartesianoIl prodotto cartesiano è un join su due relazioni senza l’utilizzo di attributi in comune
Il risultato di questa operazione contiene sempre un numero di ennuple pari al prodotto delle
cardinalità degli operandi (le ennuple sono tutte combinabili)
AOT AOT
LAB LAB
Prodotto Prodotto Prodotto Prodotto cartesianocartesianocartesianocartesianoAOT AOT
LAB LAB
Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatoriCombinando:
Selezione e proiezione
Possiamo raffinare la ricerca di informazioni da una singola relazione
Combinando:
Join e selezione
Join e proiezione
Possiamo raffinare la ricerca di informazioni da più relazione
AOT AOT
LAB LAB
Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatoriAOT AOT
LAB LAB
Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatoriSEL Capo = Bruni (Impiegati JOIN Reparti)
Impiegati
Reparti
AOT AOT
LAB LAB
Combinazione degli Combinazione degli operatoriCombinazione degli Combinazione degli operatorioperatorioperatoriPROJ Impiegato, Capo (Impiegati JOIN Reparti)
Impiegati
Reparti
AOT AOT
LAB LAB
SqlSqlSqlSqlSql (Structured Query Language) è il linguaggio di
riferimento per la manipolazione e l’interrogazione di basi di dati relazionali
Sql deriva da una prima proposta di linguaggio di Ibm chiamato Sequel (1974)
Le prime implementazioni sono di Ibm e Oracle (1981)
Dal 1983 è lo “standard di fatto” per la manipolazione e l’interrogazione di basi di dati relazionali
Il linguaggio ha avuto una evoluzione negli anni
corrispondenti ad aggiornamenti delle sue specifiche nel
AOT AOT
LAB LAB
OperatoriOperatoriOperatoriOperatoricreate table NomeTabella (
NomeAttributo Dominio [ Vincoli ], ...
NomeAttributo Dominio [ Vincoli ], [ AltriVincoli ]
)
select Attributo … Attributo from Tabella … Tabella [where Condizione]
AOT AOT
LAB LAB
OperatoriOperatoriOperatoriOperatoriinsert into Tabella [ ( Attributi ) ] values( Valori )
insert into Tabella [ ( Attributi ) ] select ...
update NomeTabella
set Attributo = < Espressione
| select … | null | default >
[ where Condizione ]
delete from Tabella [ where Condizione ]
AOT AOT
LAB LAB
CreazioneCreazioneCreazioneCreazionecreate table Impiegato (
Matricola character(6) primary key, Nome character(20) not null,
Cognome character(20) not null, Sede character(15),
Stipendio numeric(9) default 0, Citta character(15),
foreign key(Sede) references Dipartimento(NomeDip), unique (Cognome,Nome)
)
AOT AOT
LAB LAB
CreazioneCreazioneCreazioneCreazionecreate table persone (
nome character(20) primary key, eta numeric(3),
reddito numeric(9) );
create table paternita ( padre character(20),
figlio character(20) unique );
create table maternita ( madre character(20),
figlio character(20) unique );
AOT AOT
LAB LAB
RicercaRicercaRicercaRicercaDimmi il nome e il reddito delle persone con età minore di 30 anni
select nome, reddito from persone where eta < 30
Dimmi i dati delle persone con età minore di 30 anni
select * from persone where eta < 30
Dimmi i padri delle persone che guadagnano più di 200 mila euro
select paternita.padre from persone, paternita where persona.reddito > 200000 and
paternità.figlio = persona.nome
AOT AOT
LAB LAB
RicercaRicercaRicercaRicercaDimmi nome, reddito e reddito del padre delle persone che guadagnano più del loro padre
select f.nome, f.reddito, p.reddito
from persone f, paternità t, persone p where f.name = t.figlio and
p.nome = t.padre and f.reddito > p.reddito
Dimmi il nome del padre e della madre di ogni persona
select paternita.figlio, padre, madre from paternita, maternita where
AOT AOT
LAB LAB
Manipolazione Manipolazione Manipolazione Manipolazione datidatidatidati insert into personevalues('Mario',25,52)
insert into persone(nome, eta, reddito) values('Pino',25,52)
delete from persone where eta < 35 update persone
set reddito = 45 where nome = 'Piero‘
update persone
set reddito = reddito * 1.1 where eta < 30