Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C

Slides:



Advertisements
Presentazioni simili
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Advertisements

Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
SQL (IV) Data Definition Language/ Data Manipulation Language.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
SQL (III) Data Definition Language/ Data Manipulation Language.
Vincoli interrelazionali
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Condizioni decisionali
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione logica: Il modello relazionale
SQL per la modifica di basi di dati
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Il modello relazionale
Condizioni decisionali
Operatori aggregati e raggruppamenti
Quantificazione Esistenziale ed Universale
Selezione e Proiezione
Condizioni decisionali
Vincoli di integrità generici
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C. Batini 7. SQL DML 7.12 Operazioni di aggiornamento e vincoli di integrita’

adattato da Atzeni-etal., Basi di dati, McGrawHill Fino ad ora …. Abbiamo potuto interrogare la base di dati, ma non abbiamo potuto modificarla, aggiornarla. Ma il mondo cambia, e la base di dati deve seguire questi cambiamenti. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Operazioni di aggiornamento Sono operazioni di inserimento: insert eliminazione: delete modifica: update Sono eseguite a. su una o più ennuple di una relazione R1 b. sulla base di una condizione che può coinvolgere anche altre relazioni R2, ..., Rn 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Inserimento INSERT INTO Tabella [ ( Attributi ) ] VALUES( Valori ) che permette di inserire negli Attributi della Tabella singoli valori. oppure INSERT INTO Tabella [ ( Attributi )] SELECT ... che permette di inserire negli Attributi della Tabella insiemi di ennuple estratte dalla base dati 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Inserimento, primo insieme di regole 1. Se qualche attributo non e’ specificato, e’ inserito valore nullo. 2. Se e’ violato un vincolo di not null, l’insert e’ rifiutato. 3. l’ordinamento degli attributi (se presente) e dei valori è significativo 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Inserimento, altre regole 4. le due liste (Attributi, Valori) debbono avere lo stesso numero di elementi. 5. se la lista di attributi è omessa, si fa riferimento a tutti gli attributi della relazione, secondo l’ordine con cui sono definiti 6. se la lista di attributi non contiene tutti gli attributi della relazione, per gli altri viene inserito un valore di default, o, in assenza di questo, il valore nullo (che deve essere permesso). 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempi Consideriamo la relazione Persone (Nome, Eta, Reddito) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempi di INSERT INTO Relazione Persone (Nome, Eta’, Reddito) INSERT INTO Persone (Nome, Eta, Reddito) VALUES ('Pino', 25, 52) INSERT INTO Persone VALUES ('Mario', 25, 52) INSERT INTO Persone (Nome, Reddito) VALUES ('Lino', 55) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempio con Select INSERT INTO Persone ( Nome ) SELECT Padre FROM Paternita WHERE Padre NOT IN (SELECT Nome FROM Persone) Domanda 7.12.1 - Esprimere a parole quale aggiornamento esegue questa interrogazione 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempio con Select INSERT INTO Persone ( Nome ) SELECT Padre FROM Paternita WHERE Padre NOT IN (SELECT Nome FROM Persone) Risposta Inserisce in Persone i padri che non vi compaiono gia’ 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Eliminazione di ennuple DELETE FROM Tabella [WHERE Condizione] elimina le ennuple che soddisfano la condizione 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Eliminazione, regole 1. la eliminazione può causare eliminazioni in altre relazioni, se ci sono vincoli di integrità referenziale, ed e’ adottata una politica di reazione cascade 2. se la where viene omessa, si intende where true, quindi vengono eliminate tutte le ennuple 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempi di DELETE FROM - Domanda 7.12.2 Cosa calcolano la seconda e la terza (la prima e’ ovvia)? Risposta DELETE FROM Persone WHERE Eta < 35 DELETE FROM Paternita WHERE Figlio NOT in (SELECT Padre FROM Paternita’) Cancella dai padri coloro che non sono nonni Cancella tutti i padri 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Differenza tra DELETE (DML) e DROP (DDL) La DELETE from DIPARTIMENTO elimina tutte le n-ple della istanza di DIPARTIMENTO, ed eventuali altre per la politica cascade, ma lascia immutato lo schema La DROP Table DIPARTIMENTO cascade elimina dallo schema della base di dati la relazione DIPARTIMENTO e tutti gli schemi di relazione che fanno riferimento ad esso. La DROP Table DIPARTIMENTO restrict fallisce se vi sono tuple nella istanza di relazione. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Modifica di ennuple: UPDATE Significa: oppure UPDATE NomeTabella SET Attributo = <Espressione | SELECT … | NULL | DEFAULT> [WHERE Condizione] Modifica le n-ple che rispettano la (eventuale) condizione. Se non c’e’ la condizione, le modifica tutte 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Il nuovo valore puo’ essere ….. Espressione, il risultato della valutazione di una espressione sugli attributi della tabella SELECT, il risultato di una interrogazione NULL, il valore nullo DEFAULT, il valore di default 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esempi di update UPDATE Persone SET Reddito = 45 WHERE Nome = 'Piero' SET Reddito = Reddito * 1.1 WHERE Eta < 30 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Attenzione!!! L’esecuzione di: UPDATE Persone SET Stipendio = Stipendio * 1.1 WHERE Stipendio <= 30 SET Stipendio = Stipendio * 1.15 WHERE Stipendio > 30 provoca, ad es., per un impiegato con Stipendio = 30, due aumenti, e non uno. Cio’ per la natura “set oriented” di SQL. Il problema si risolve scrivendo un programma in un linguaggio ad alto livello (if stipendio <= then SET .. else SET …) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Vincoli di integrita’ Vincoli intrarelazionale di attributo o tabella: CHECK Vincoli di schema, cioe’ su piu’ relazioni: CREATE ASSERTION 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Vincoli di integrità generici: CHECK Specifica di vincoli di ennupla (e anche vincoli più complessi) di un attributo o di una tabella. Sintassi CHECK (Condizione) dove Condizione puo’ essere una condizione che puo’ comparire in una clausola WHERE Significato: La Condizione che compare nella CHECK deve essere sempre verificata. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Proprieta’ della CHECK La CHECK permette anche di esprimere tutti i vincoli predefiniti, ma in questi casi, rispetto ad essi, e’ meno naturale e comprensibile (vedi libro) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Check, esempi Verifica che lo stipendio dell’impiegato sia minore o uguale allo stipendio dell’impiegato che ne e’ superiore. 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 from Impiegato J where Superiore = J.Matricola)) Vincolo non esprimibile senza CHECK 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Vincoli di integrità generici: asserzioni Specificano vincoli a livello di schema Sintassi: CREATE ASSERTION NomeAsserzione CHECK ( Condizione ) CREATE ASSERTION AlmenoUnImpiegato CHECK (1 <= (select count(*) from Impiegato )) Verifica se nella relazione Impiegato vi e’ almeno una ennupla, cioe’ se c’e’ almeno un impiegato 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Politiche di verifica dei vincoli di integrita’ Vincolo con politica immediata – sono verificati immediatamente dopo ogni modifica della base di dati Vincolo con politica differita – sono verificati dopo l’esecuzione di una serie di operazioni che costituiscono una transazione (vedi corso di complementi di basi di dati) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esito della verifica Se un vincolo immediato non e’ soddisfatto il sistema “disfa” l’operazione di modifica (operazione chiamata anche rollback), cioe’ riporta la base di dati a uno stato in cui l’operazione non e’ stata eseguita Per i vincoli differiti, vedi corso di Basi di dati 2. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.12.1 Esegui l’esercizio 4.5 del testo di riferimento 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.12.2 Esegui l’esercizio 4.6 del testo di riferimento 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.12.3 Esegui l’esercizio 4.9 del testo di riferimento. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Esercizio 7.12.4 Esegui l’esercizio 4.11 del testo di riferimento. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti - 1 Operatore di aggiornamento Operatore Insert Operatore Delete Operatore Update Viincoli di integrita’ Vincoli intrarelazionale di attributo o tabella: CHECK Vincoli di schema: CREATE ASSERTION 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill