Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

Documenti analoghi
Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

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

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Tali regole vengono attivate in modo automatico al verificarsi di specifici eventi sulla. eseguono azioni sulla base di dati stessa.

Cap. 7 -Trigger e loro uso

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

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

Basi di Dati Attive. Basi di Dati Attive

Basi di dati attive. Paolo Atzeni. Basi di dati attive

Basi di Dati: Corso di laboratorio

Le Basi di Dati Attive

Le Basi di Dati Attive

Interpretazione delle query nidificate

Silvia Chiusano, Paolo Garza 1

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

Basi di dati. SQL: Caratteristiche evolute

Vincoli, procedure e regole attive in SQL. SQL: vincoli, trigger 1

24. Trigger in MySQL 5

A livello fisico, un istanza di base di dati Oracle è composta. Gubiani & Montanari Oracle Database 3

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Laboratorio di Basi di Dati e Multimedia

Corso di Basi di Dati

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

insert into Dipartimento(NomeDip, Città) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL

σ data 15/12/2013 data 20/12/2014

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Basi di dati attive. Basi di dati attive. Struttura di base dei trigger. Evento-Condizione-Azione. Sintassi SQL:1999 dei trigger

Laboratorio di Basi di Dati

IMPIEGATO(Nome, Salario, DipNum) DIPARTIMENTO (DipNum, NomeManager)

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

Laboratorio di Basi di Dati SQL avanzato

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Check, esempio. Vincoli di integrità generici. Asserzioni. Asserzioni

Corso sul linguaggio SQL

SQL DDL. Create database. Alter database. Drop database

Basi di Dati e Sistemi Informativi. Asserzioni, Viste e Trigger Basi di dati Attive

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Tecnologia delle Basi di Dati Esercitazione #4 Definizione dei trigger in Oracle

Tabelle esempio: Impiegato/Dipartimento

Il linguaggio SQL: trigger

Il linguaggio SQL: transazioni

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

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Manuale SQL. Manuale SQL - 1 -

Introduzione. i trigger rendono reattivo il comportamento del sistema alle sollecitazioni esterne.

Fondamenti di Informatica A. A / 1 9

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Interrogazioni nidificate

Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale. Forme normali. Basi di dati direzionali

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

La connessione ai database MySQL tramite script PHP versione 5.5

4. I moduli in Access 2000/2003

Laboratorio di Basi di Dati

Tecnologia di un Database Server (centralizzato) Introduzione generale

Structured Query Language

VARIABILI, ASSEGNAZIONE, DECISIONI

8 SQL : Check, Asserzioni,Viste

PRODOTTO CARTESIANO Caso Generale

Corso di Basi di Dati

Sistemi di Elaborazione delle Informazioni

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

CREATE VIEW. CREATE VIEW <nome_vista> AS (SELECT <lista_campi> FROM <lista_tabelle> WHERE <condizione>);

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

Lezione 13. Il trattamento dei dati. database: il linguaggio SQL seconda parte. Proff. Valle Folgieri

Lezione 12. Il trattamento dei dati. database: il linguaggio SQL seconda parte. Proff. Valle Folgieri

Basi di dati attive 1

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Interrogazioni in SQL SQL1 1

Gestire il database attraverso Javascript. Antonio Gallo

Gestione delle transazioni. Basi di dati. Elena Baralis 2007 Politecnico di Torino 1 D B M G D B M G 2. Linguaggio SQL: costrutti avanzati

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

Fondamenti di Informatica e Programmazione

Vincoli di integrità

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Caratteristiche dei linguaggi per Database

2011 Politecnico di Torino 1

SQL: le funzioni di aggregazione

Basi di Dati: Corso di laboratorio

D B M G 2. Linguaggio SQL: fondamenti. Istruzioni di aggiornamento. Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE

Vincoli di integrità generici: check

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2013 Politecnico di Torino 1

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

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

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

IL LINGUAGGIO SQL LE BASI

Select From Where...

Basi di Dati Complementi. 2. Tecnologie per DBMS -2.4 Introduzione alle Transazioni e Buffer Manager

Corso di. Basi di Dati I. 8. Esercitazioni in SQL: Interrogazioni nidificate

Basi di dati. Gabriella Trucco

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

Transcript:

Corso di Basi di Dati 10. Esercitazioni in SQL: Complementi A.A. 2016 2017

Funzioni condizionali Vediamo qualche altro comando utile di SQL. Il comando coalesce ammette come argomento una sequenza di espressioni e restituisce il primo valore non nullo. La funzione può quindi essere usata per convertire valori nulli in valori espliciti.

Funzioni condizionali Vediamo qualche altro comando utile di SQL. Il comando coalesce ammette come argomento una sequenza di espressioni e restituisce il primo valore non nullo. La funzione può quindi essere usata per convertire valori nulli in valori espliciti. Esempio: La sequente query estrae dalla tabella Impiegati(Nome, Dipart, Stipendio) i nomi degli impiegati ed i dipartimenti cui afferiscono gli impiegati, usando la stringa Ignoto nel caso in cui non si conosca il dipartimento. select Nome, coalesce(dipart,"ignoto") from Impiegati

Funzioni condizionali Il comando nullif fa il contrario: ammette come argomento una espressione e un valore costante; se l espressione è pari al valore costante, la funzione restituisce NULL, altrimenti restituisce il valore dell espressione.

Funzioni condizionali Il comando nullif fa il contrario: ammette come argomento una espressione e un valore costante; se l espressione è pari al valore costante, la funzione restituisce NULL, altrimenti restituisce il valore dell espressione. Esempio: La sequente query estrae dalla tabella Impiegati(Nome, Dipart, Stipendio) i nomi degli impiegati ed i dipartimenti cui afferiscono gli impiegati, mettendo il dipartimento al valore NULL se il dipartimento è la stringa Ignoto. select Nome, nullif(dipart,"ignoto") from Impiegati

Funzioni condizionali Il comando case case permette di specificare strutture condizionali, il cui risultato dipende dalla valutazione del contenuto delle tabelle. La sintassi ammette due varianti. La prima riguarda una singola espressione: case espressione case when valoredellespressione then risultato case when altrovaloredellespressione then altrorisultato case... case else altrorisultato end

Funzioni condizionali Esempio: consideriamo la tabella Veicoli(Targa, Tipo, KWatt). Calcoliamo le tasse di circolazione: per le auto, è 2.58 KWatt, mentre per le moto è (22.00 + 1.00 KWatt). Per altri tipi, mettiamo NULL. Creiamo il risultato con le colonne Targa, Tasse. select Targa, case Tipo case when auto then 2.58 KWatt case when moto then (22.00 + 1.00 KWatt) case else NULL end as Tasse from Veicoli

Funzioni condizionali La seconda è più generica: case case when criterio then espressione case when altrocriterio then altraespressione case... case else altraespressione end

Funzioni condizionali Esempio: nella tabella Impiegati(Nome, Ufficio, Dipart, Stipendio), aumentiamo lo stipendio: del 10%, se l impiegato lavora in amministrazione, ufficio 10; del 20%, se l impiegato lavora in amministrazione, non nell ufficio 10; del 15%, se l impiegato lavora in produzione, non nell ufficio 10.

Funzioni condizionali update Impiegati set Stipendio = case when (Dipart = "Amministrazione" and Ufficio = 10) then Stipendio * 1.1 when (Dipart = "Amministrazione" and Ufficio <> 10) then Stipendio * 1.2 when Dipart = "Produzione" then Stipendio * 1.15 else Stipendio end

Transazioni La sintassi per specificare transazioni, cioè sequenze di operazioni in SQL, è la seguente: start transaction; singole operazioni... commit work;

Transazioni La sintassi per specificare transazioni, cioè sequenze di operazioni in SQL, è la seguente: start transaction; singole operazioni... commit work; Esempio: start transaction; update ContoCorrente set Ammontare = Ammontare + 10 where NumConto = 12202; update ContoCorrente set Ammontare = Ammontare - 10 where NumConto = 42177; commit work;

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo.

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo. Anche un comando per interrompere l intera transazione evitando ogni modifica ai dati: rollback work.

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo. Anche un comando per interrompere l intera transazione evitando ogni modifica ai dati: rollback work. Il DBMS è organizzato in modo che l esecuzione di una transazione sia indipendente dalla contemporanea esecuzione di altre transazioni.

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo. Anche un comando per interrompere l intera transazione evitando ogni modifica ai dati: rollback work. Il DBMS è organizzato in modo che l esecuzione di una transazione sia indipendente dalla contemporanea esecuzione di altre transazioni. In particolare: il risultato dell esecuzione contemporanea di più transazioni deve essere uguale al risultato che le stesse transazioni otterrebbero qualora ciascuna di esse fosse eseguita da sola,

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo. Anche un comando per interrompere l intera transazione evitando ogni modifica ai dati: rollback work. Il DBMS è organizzato in modo che l esecuzione di una transazione sia indipendente dalla contemporanea esecuzione di altre transazioni. In particolare: il risultato dell esecuzione contemporanea di più transazioni deve essere uguale al risultato che le stesse transazioni otterrebbero qualora ciascuna di esse fosse eseguita da sola, l esecuzione di un rollback di una transazione non deve causare il rollback di altre transazioni, eventualmente generando una reazione a catena.

Transazioni Osservazioni: SQL include la possibilità di comandi procedurali (if, goto, ecc...) all interno delle transazioni, comandi che non vedremo. Anche un comando per interrompere l intera transazione evitando ogni modifica ai dati: rollback work. Il DBMS è organizzato in modo che l esecuzione di una transazione sia indipendente dalla contemporanea esecuzione di altre transazioni. In particolare: il risultato dell esecuzione contemporanea di più transazioni deve essere uguale al risultato che le stesse transazioni otterrebbero qualora ciascuna di esse fosse eseguita da sola, l esecuzione di un rollback di una transazione non deve causare il rollback di altre transazioni, eventualmente generando una reazione a catena. Questo sia in caso di rollback volontario, cioè dato come comando in una transazione, sia in caso di rollback forzato, cioè causato da un errore.

Procedure SQL permette la definizione di procedure, che normalmente vengono memorizzate all interno della base di dati come parti dello schema.

Procedure SQL permette la definizione di procedure, che normalmente vengono memorizzate all interno della base di dati come parti dello schema. Come accade nei linguaggi di programmazione (ad es. C), le procedure permettono di associare un nome ad una sequenza di istruzioni SQL, con la possibilità di specificare dei parametri (argomenti).

Procedure SQL permette la definizione di procedure, che normalmente vengono memorizzate all interno della base di dati come parti dello schema. Come accade nei linguaggi di programmazione (ad es. C), le procedure permettono di associare un nome ad una sequenza di istruzioni SQL, con la possibilità di specificare dei parametri (argomenti). Una volta che la procedura è definita, essa è utilizzabile come se facesse parte dell insieme dei comandi SQL predefiniti.

Procedure Esempio: consideriamo la tabella Dipartimenti(Nome, Città). Creiamo una procedura che accetti come argomenti il nome di un dipartimento ed una città, e che assegni la città specificata al dipartimento specificato.

Procedure Esempio: consideriamo la tabella Dipartimenti(Nome, Città). Creiamo una procedura che accetti come argomenti il nome di un dipartimento ed una città, e che assegni la città specificata al dipartimento specificato. procedure AssegnaCittà(:Dipartimento varchar(20), :Città varchar(20)) begin update Dipartimenti set Città = :Città where Nome = :Dipartimento; end;

Procedure Esempio: consideriamo la tabella Dipartimenti(Nome, Città). Creiamo una procedura che accetti come argomenti il nome di un dipartimento ed una città, e che assegni la città specificata al dipartimento specificato. procedure AssegnaCittà(:Dipartimento varchar(20), :Città varchar(20)) begin update Dipartimenti set Città = :Città where Nome = :Dipartimento; end; Osservazione: la sintassi può variare a seconda del DBMS.

Procedure Una volta definita questa procedura, si potrà usarla come un comando SQL. Ad esempio, per assegnare la città Roma al dipartimento di nome Matematica, useremo: mysql>assegnacittà("matematica", "Roma");

Procedure Una volta definita questa procedura, si potrà usarla come un comando SQL. Ad esempio, per assegnare la città Roma al dipartimento di nome Matematica, useremo: mysql>assegnacittà("matematica", "Roma"); Osservazione: non è necessario sapere in quale tabella sono immagazzinati questi dati, o in che modo. Basta sapere che la base di dati è dotata di questa procedura.

Procedure Le procedure possono coinvolgere un numero qualsiasi di tabelle e di colonne. Esempio: consideriamo le tabelle Impiegati(Nome, Città) e Dipartimenti(NomeDip, Città). Definiamo una procedura che cambia la città in entrambe le tabelle, da una :VecchiaCittà ad una :NuovaCittà.

Procedure Le procedure possono coinvolgere un numero qualsiasi di tabelle e di colonne. Esempio: consideriamo le tabelle Impiegati(Nome, Città) e Dipartimenti(NomeDip, Città). Definiamo una procedura che cambia la città in entrambe le tabelle, da una :VecchiaCittà ad una :NuovaCittà. procedure Trasloco(:VecchiaCittà varchar(20), :NuovaCittà varchar(20)) begin update Dipartimenti set Città = :NuovaCittà where Città = :VecchiaCittà; update Impiegati set Città = :NuovaCittà where Città = :VecchiaCittà; end;

Trigger SQL mette a disposizione anche i trigger, detti anche regole attive.

Trigger SQL mette a disposizione anche i trigger, detti anche regole attive. Un trigger: si attiva quando accade uno specifico evento all interno della base di dati e controlla se è soddisfatta una data condizione. Se sì, allora esegue un azione stabilita.

Trigger Sintassi: create trigger NomeTrigger after azione da controllare for each row when condizione azione del trigger

Trigger Esempio: create trigger ImpiegatiSenzaDip after insert into Impiegati for each row when (new.dipart is null) update Impiegato set Dipart = "NuoviArrivati" where Matr = new.matr

Trigger Esempio: create trigger ImpiegatiSenzaDip after insert into Impiegati for each row when (new.dipart is null) update Impiegato set Dipart = "NuoviArrivati" where Matr = new.matr Il trigger viene attivato tutte le volte che il sistema rileva l inserimento di righe all interno della tabella Impiegati.

Trigger Esempio: create trigger ImpiegatiSenzaDip after insert into Impiegati for each row when (new.dipart is null) update Impiegato set Dipart = "NuoviArrivati" where Matr = new.matr Il trigger viene attivato tutte le volte che il sistema rileva l inserimento di righe all interno della tabella Impiegati. Se la condizione che segue when è soddisfatta, ovvero se la riga inserita ha NULL sulla colonna Dipart, l azione del trigger viene eseguita: assegna all attributo Dipart del nuovo impiegato il valore Nuovi Arrivati.

Trigger Ogni trigger è sensibile a un solo evento.

Trigger Ogni trigger è sensibile a un solo evento. L azione da controllare può solo riguardare operazioni SQL di aggiornamento dello stato della base di dati, ovvero insert e delete su tabelle, e update su tabelle o singoli attributi.

Trigger Ogni trigger è sensibile a un solo evento. L azione da controllare può solo riguardare operazioni SQL di aggiornamento dello stato della base di dati, ovvero insert e delete su tabelle, e update su tabelle o singoli attributi. Nel criterio dopo when è possibile utilizzare le variabili predefinite new e old, che si riferiscono alla nuova e alla vecchia versione della riga aggiunta o modificata.

Trigger Ogni trigger è sensibile a un solo evento. L azione da controllare può solo riguardare operazioni SQL di aggiornamento dello stato della base di dati, ovvero insert e delete su tabelle, e update su tabelle o singoli attributi. Nel criterio dopo when è possibile utilizzare le variabili predefinite new e old, che si riferiscono alla nuova e alla vecchia versione della riga aggiunta o modificata. L azione del trigger, è rappresentata da un singolo comando o una procedura SQL.

Trigger Un applicazione tipica dei trigger è l introduzione di vincoli d integrità personalizzati.

Trigger Un applicazione tipica dei trigger è l introduzione di vincoli d integrità personalizzati. Va però tenuto sotto controllo il rischio di trigger a catena : essi reagiscono a modifiche della base di dati, e possono a loro volta modificare la base di dati. Quindi l attivazione di un trigger può causare l attivazione di altri trigger, con il rischio di attivazioni cicliche che non terminano.