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

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

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

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

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

Silvia Chiusano, Paolo Garza 1

Basi di dati. SQL: Caratteristiche evolute

Interpretazione delle query nidificate

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

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

Corso di Basi di Dati

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

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

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

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

Corso sul linguaggio SQL

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

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

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

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

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

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

Laboratorio di Basi di Dati SQL avanzato

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

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

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

SQL DDL. Create database. Alter database. Drop database

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

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

Tecnologia di un Database Server (centralizzato) Introduzione generale

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

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

Interrogazioni nidificate

Tabelle esempio: Impiegato/Dipartimento

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

Manuale SQL. Manuale SQL - 1 -

Il linguaggio SQL: trigger

Fondamenti di Informatica A. A / 1 9

La connessione ai database MySQL tramite script PHP versione 5.5

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

8 SQL : Check, Asserzioni,Viste

Corso di Basi di Dati

Laboratorio di Basi di Dati

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

Structured Query Language

4. I moduli in Access 2000/2003

Basi di dati attive 1

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

Sistemi di Elaborazione delle Informazioni

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

VARIABILI, ASSEGNAZIONE, DECISIONI

2011 Politecnico di Torino 1

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"

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

SQL: le funzioni di aggregazione

Vincoli di integrità generici: check

PRODOTTO CARTESIANO Caso Generale

Gestire il database attraverso Javascript. Antonio Gallo

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

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

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

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

Caratteristiche dei linguaggi per Database

Select From Where...

Interrogazioni in SQL SQL1 1

Basi di Dati: Corso di laboratorio

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

Progettazione di Sistemi Informatici

Elena Baralis 2007 Politecnico di Torino 1

Vincoli di integrità

Elena Baralis 2013 Politecnico di Torino 1

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

Le transazioni. Update CC set saldo = saldo + 25 where ccnum = Update CC set saldo = saldo 25 where ccnum = 26488

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

Linee guida per la programmazione di transazioni in PL/SQL

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

SQL. Lezione 1. Docente: Alberto Belussi

Lezione 8. Metadati, Viste e Trigger

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

FUNZIONI. Dichiarazione: Definizione:

Fondamenti di Teoria delle Basi di Dati

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

SQL. Dott.ssa Elisa Quintarelli

Basi di dati attive 1

Esercitazione 10 SQL: transazioni

Informatica Grafica. Basi di dati parte 2

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. 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. 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; 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. 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. 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 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"); 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 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. 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 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. 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. 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.