VIEW SQL CREATE VIEW. VIEW (Viste utente) Esempio. Esempio SQL. A. Ferrari 1. Avanzato. Viste utente

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

A. Ferrari SQL. Structured Query Language

Unità D3. Sicurezza nelle basi di dati. Sicurezza e concorrenza nelle basi di dati. Controllo accesso. Protezione e integrità dati

23. MySQL: Stored procedures e stored functions

Progettazione di Sistemi Informatici

24. Trigger in MySQL 5

Basi di Dati: Corso di laboratorio

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

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

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

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

Corso di Basi di Dati

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

Aspetti avanzati nella definizione degli schemi DDL2 1

Cap. 7 -Trigger e loro uso

Basi di Dati Attive. Basi di Dati Attive

Le Basi di Dati Attive

Il linguaggio SQL: transazioni

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

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

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

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

Stored Procedure. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma

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

SQL DDL. Create database. Alter database. Drop database

Linguaggio SQL: costrutti avanzati D B M G

Le Basi di Dati Attive

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

Linguaggio SQL: costrutti avanzati Controllo dell accesso

Manuale SQL. Manuale SQL - 1 -

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

DBMS architettura client/server

Basi di Dati: Corso di laboratorio

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

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

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

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

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

La connessione ai database MySQL tramite script PHP versione 5.5

Sistemi di Elaborazione dell Informazione

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

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

PROGETTAZIONE DI DATABASE

FUNZIONI. Dichiarazione: Definizione:

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

Istruzioni DCL di SQL. Pag. 119 par.5

Lezione 8. Metadati, Viste e Trigger

D B M G D B M G 2. Sistemi informativi. Linguaggio SQL: costrutti avanzati

Transazioni. Transazioni. Stati di una transazione. Transazioni

MySQL Procedure, funzioni, trigger e scheduling

FUNZIONI PARAMETRI DEFINIZIONI DI PROCEDURE PROCEDURE

Transazioni. Antonella Poggi. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Silvia Chiusano, Paolo Garza 1

SQL: le funzioni di aggregazione

Serializable Snapshot Isolation (SSI) in PostgreSQL 9.1

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

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

Tecnologia delle Basi di Dati

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)

DATABASE PER IL WEB. Programmazione Web 1

Laboratorio di Basi di Dati SQL avanzato

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

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

PHP ESSENTIALS #10. By WI400 Team. : database e sql

Select From Where...

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL - Structured Query Language

PROGRAMMAZIONE CLASSE: 4A-4B-4I DISCIPLINA: INFORMATICA A.S. 2016/17

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

SQL Transazioni. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il linguaggio SQL: autorizzazioni

Sommario. Introduzione... 13

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

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Triggers Esercitazione 1

VARIABILI, ASSEGNAZIONE, DECISIONI

Gestire utenti e permessi

A.s Programma di Informatica

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

2011 Politecnico di Torino 1

ESERCIZIO DEL 25 MAGGIO -

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

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

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

Sistemi Informativi: transazioni

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

Corso sul linguaggio SQL

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

Appunti su SQL. Query Language. Comando Select

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Capitolo 9. Sistemi di basi di dati Pearson Addison-Wesley. All rights reserved

Intoduzione alle transazioni e alle proprieta ACID delle transazioni

LE NOVITÀ Eppur si muove...61 Applicazioni ad alta disponibilità...62 Sicurezza...62

Interrogazioni nidificate

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

MODULO 2. Query normali e parametriche Query di:

Transcript:

SQL VIEW Avanzato Viste utente VIEW (Viste utente) Le VIEW sono tabelle virtuali il cui contenuto (colonne e righe) è definito da una query Le VIEW sono normalmente uelizzate per: analizzare, semplificare e personalizzare la visualizzazione del database per un utente come meccanismo di sicurezza grazie al quale è possibile consenere agli utene di accedere ai dae tramite una vista, senza concedere loro le autorizzazioni di accesso alle tabelle di base soiostane fornire un'interfaccia compaebile con le versioni precedene tramite la quale è possibile emulare una tabella precedente il cui schema è stato modificato CREATE VIEW CREATE VIEW <nome_vista> AS (SELECT <lista_campi> FROM <lista_tabelle> WHERE <condizione>); -- Creazione vista CREATE VIEW StudentiConClasse AS SELECT studente.cognome, classe.descrizione FROM studente INNER JOIN classe ON studente.idclasse = classe.id ORDER BY studente.cognome; CREATE VIEW filmcongenere AS (SELECT film.titolo, genere.nome FROM film INNER JOIN genere ON film.idgenere=genere.id); -- Utilizzo vista SELECT * FROM StudentiConClasse; A. Ferrari 1

Stored Procedure Stored Procedure Le stored procedures sono presene in MySQL dalla versione 5.0 Le Stored Procedure sono gruppi di istruzioni SQL (o scriie in altri linguaggi) memorizzae nel motore database e uelizzabili dai client che accedono al database Ogni procedura è ideneficata da un nome ed è airibuita ad uno specifico database Stored procedure: vantaggi Aumento della velocità di esecuzione del codice SQL e quindi delle performance generali delle applicazioni (sono compilate una sola volta) Aumento della leggibilità e della portabilità del codice e quindi della scalabilità delle applicazioni CREATE PROCEDURE nome ([parametro[,...]]) [SQL SECURITY { DEFINER INVOKER }] corpo //parametri: [ IN OUT INOUT ] nomeparametro tipo Ogni procedura può avere uno o più parametri, ciascuno dei quali è formato da un nome, un Epo di dato e l indicazione se traiasi di parametro di input, di output o entrambi. Se manca l indicazione, il parametro è considerato di input La clausola SQL SECURITY stabilisce se, al momento dell esecuzione, la procedura uelizzerà i permessi dell utente che la sta eseguendo o quelli dell utente che l ha creata (il default è DEFINER) DELIMITER $$ CREATE PROCEDURE nomeproc (IN param1 INT, OUT param2 INT) SELECT COUNT(*) INTO param2 FROM tabella WHERE campo1 = param1; $$ Crea una procedura chiamata nomeproc nel database in uso la procedura usa un parametro in input e uno in output, entrambi interi effeiua il conteggio delle righe in tabella in cui il valore di campo1 corrisponde al primo parametro il risultato della query viene memorizzato nel secondo parametro airaverso la clausola INTO A. Ferrari 2

Delimiter Il comando DELIMITER serve per modificare il normale delimitatore delle istruzioni, che sarebbe il punto e virgola La stored procedure coneene più istruzioni, al suo interno il punto e virgola viene uelizzato più volte. Di conseguenza, se vogliamo riuscire a memorizzare la procedura, dobbiamo comunicare al server che il delimitatore è un altro; in caso contrario, al primo punto e virgola penserebbe che la nostra CREATE sia terminata Classici delimitatori: // o $$ Stored Procedure: esecuzione CALL nomeproc (5, @a); SELECT @a; Con CALL effeiuiamo la chiamata della procedura passando il valore 5 come parametro di input e la variabile @a come parametro di output, nel quale verrà memorizzato il risultato La SELECT successiva visualizza il valore della variabile a dopo l esecuzione. Istruzioni Nell esempio la stored procedure conteneva una istruzione SELECT è possibile creare procedure che contengono sintassi complesse comprendene più istruzioni: in praeca, dei veri e propri script, con la possibilità di controllare il flusso airaverso vari costrui (IF, CASE, LOOP, WHILE, REPEAT, LEAVE, ITERATE). Stored funceon Stored FuncEon Le stored funceons sono simili alle stored procedures ResEtuiscono un valore e non possono resetuire resultset CREATE FUNCTION nome ([parametro[,...]]) RETURNS tipo [SQL SECURITY { DEFINER INVOKER }] corpo //parametri: nomeparametro tipo RETURNS specifica che Epo di dato la funzione resetuisce I parametri sono solo in input A. Ferrari 3

FuncEon -- Crea una funzione delimiter // CREATE FUNCTION TotaleFattureCliente (cod int) RETURNS DECIMAL(10,2) BEGIN DECLARE somma DECIMAL(10,2); SELECT SUM(importoFattura) INTO somma FROM Fatture WHERE Fatture.Cod = cod; RETURN somma; END // -- Richiama la funzione SELECT TotaleFattureCliente('3'); Trigger Trigger Procedure che vengono eseguite in maniera automaeca al verificarsi di un determinato evento, come ad esempio la cancellazione di un record di una tabella PermeIono di specificare e mantenere vincoli di integrità anche complessi I trigger sono «nascose», non è possibile aivarli esplicitamente e non hanno parametri Quando definiamo un trigger, stabiliamo per quale evento deve essere aivato e se deve essere eseguito prima o dopo tale evento: BEFORE INSERT BEFORE UPDATE BEFORE DELETE AFTER INSERT AFTER UPDATE AFTER DELETE CREATE [DEFINER = { utente CURRENT_USER }] TRIGGER nome tipo ON tabella FOR EACH ROW istruzioni Il trigger è associato ad una tabella, ma fa parte di un database, per cui il suo nome deve essere univoco all interno del db stesso. DELIMITER $$ CREATE TRIGGER CancellazioneStudenti BEFORE DELETE ON Studenti FOR EACH ROW BEGIN INSERT StudentiAnnoPrecedente VALUES (OLD.nome, OLD.cognome, CURRENT_DATE()); END; $$ NEW e OLD NEW indica che il nome di colonna si riferisce al nuovo valore della riga che sta per essere aggiornata NEW si può uelizzare in caso di INSERT e UPDATE OLD fa riferimento ai valori precedene la modifica, e si può uelizzare in caso di UPDATE e DELETE La modifica airaverso l istruzione SET è possibile solo per i valori NEW e solo nei trigger di Epo BEFORE A. Ferrari 4

Sicurezza nelle basi di dae Sicurezza nelle basi di dae Una base di dae è sicura quando soddisfa i parametri: regola l accesso ai dae protei evita la modifica o la manipolazione dei dae da parte di utene non autorizzae è disponibile (nel momento in cui deve essere consultata è presente, consistente e coerente) Controllo accesso DAC (DiscreEonary Access Control) controllo discrezionale Il proprietario decide chi può accedere alle risorse MAC a ogni risorsa viene associata una label (livello di privilegio che deve possedere l utente per accedere) RBAC gli utene sono associae a uno o più ruoli (gruppi) le risorse sono accessibili solo a ruoli specificae Protezione e integrità dei dae AutenEcazione (login password) Tracciabilità registrazione delle operazioni effeiuate da un utente (file di log) Integrità mediante giornale (file di log database) che registra i dae coinvole e le operazioni effeiuate su quese. Checkpoint e ripriseno Backup DAC Utente associato al DBMS e permessi relaevi all aività su un database GRANT (assegnazione dirii) REVOKE (revoca dei dirii) RBAC (Role- based access control) Gli utene sono associae a uno o più ruoli (gruppi) le risorse sono accessibili solo a ruoli specificae : associo Utente1 al ruolo che gli permeie l'accesso in leiura al database EXEC sp_addrolemember db_datareader, Utente1 Accesso in scriiura: EXEC sp_addrolemember db_datawriter, Utente1 Negazione dell accesso in scriiura EXEC sp_droprolemember db_datawriter, Utente1 A. Ferrari 5

Database consistente Il database è una rappresentazione della realtà mediante un formalismo - > Modello Inconsistenza : sfasamento fra realtà e modello che la rappresenta (database) (es. il DVD del film è stato prestato ma risulta presente nel database) Consistenza : nessuna discrepanza tra la realtà fisica e il modello che la rappresenta Accesso concorrente Accesso concorrente: più utene accedono a una stessa risorsa nello stesso istante L accesso concorrente è una delle cause principali dei problemi di inconsistenza delle basi di dae Le soluzioni ai problemi di accesso concorrente sono basate su blocchi (lock) che operano come semafori e regolano il traffico verso le risorse Accesso concorrente Transazioni Una transazione è un insieme di operazioni indivisibili (atomiche) correie anche in presenza di concorrenza con effei definievi CaraIerisEche di una transazione (ACID) atomicità (Atomicity) Una transazione viene portata a termine completamente o non viene effeiuata consistenza (Consistency) Prima e dopo la transazione la base di dae è sempre in uno stato consistente isolamento (Isola2on) Il database non viene modificato finché la transazione non è conclusa (nessuno può vedere un risultato intermedio) permanenza (Durability) Una volta conclusa la transazione i dae sono in uno stato consistente e non possono essere riprisenae allo stato precedente COMMIT - ROLLBACK Transazione terminata con successo (COMMIT) Transazione aboreta (ROLLBACK) A. Ferrari 6

Soluzioni Lock in leiura (compaebile con altri lock in leiura) Lock in scriiura (blocco esclusivo della risorsa) A. Ferrari 7