Laboratorio di PL/SQL 3 Esercizi svolti e valutati
|
|
|
- Aniella Chiesa
- 9 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di PL/SQL 3 Esercizi svolti e valutati Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna Per la sintassi PL/SQL: ORACLE 11g Rel. 2 PL/SQL Language Reference 1 Perché usare una stored procedure? Partiamo da un esempio: Il sistema informativo della scuola di sci DiscesaLibera si basa sul seguente DB TIPICORSI(IDCorso, Nome, Livello, EtaMin, EtaMax, MinPartecipanti) ALLIEVI(IDAllievo,Nome, Eta, Livello, SettimanaRichiesta) ASSEGNAMENTI(Corso:TIPICORSI, Allievo:ALLIEVI) ciascun allievo è associabile a un solo corso le richieste sono divise per settimane Si deve progettare la procedura Assegna(vSettimana) che ogni venerdì azzera la tabella Assegna scrive gli assegnamenti ai corsi della settimana successiva (SettimanaRichiesta) in base alle proprie caratteristiche: l età dell allievo deve ricadere nel range del corso e i livelli devono coincidere. nel caso in cui per uno specifico corso non si raggiunga il numero minimo di partecipanti il corso non viene effettuato e nessuna tupla deve essere inserita. 2 1
2 Soluzione con connessione al DB Apri una connessione con il DB Leggi la tabella dei TIPICORSI Per ogni corso attivabile Interroga il DB per contare il numero NI di potenziali iscritti per la settimana Se NI> MinPartecipanti Scorri i potenziali iscritti sulla tabella ALLIEVI Inseriscili nella tabella ASSEGNAMENTI Chiudi la connessione Complessità DB: scansione tabella TIPICORSI, NT TIPICORSI * query su tabella ALLIEVI, NT TIPICORSI * scansione tabella ALLIEVI, scritture su ASSEGNAMENTI RETE: intera tabella TIPICORSI, NT TIPICORSI * intera tabella ALLIEVI, intera tabella ASSEGNAMENTI 3 Soluzione con stored procedure Dichiara un cursore tutti i TIPICORSI Dichiara un cursore parametrico che seleziona gli allievi in base alle condizioni del corso Per ogni corso nel cursore Verifica della condizione richiesta Per ogni allievo nel cursore Inseriscili nella tabella ASSEGNAMENTI Complessità DB: scansione dei due cursori, NT TIPICORSI * query su tabella ALLIEVI, scritture su ASSEGNAMENTI RETE:
3 create or replace procedure Assegna(vSettimana int) IS --cursori cursor ccorsi is select * from TIPICORSI order by T_Livello,T_EtaMin; cursor callievi(ilivello int,ietamin int,ietamax int) is select * from ALLIEVI where A_SettimanaRichiesta=vSettimana and A_Eta>=iEtaMin and A_Eta<=iEtaMax and A_Livello=iLivello; vnumallievi int; begin --primo cursore FOR vcorsi IN ccorsi select count(*) into vnumallievi from ALLIEVI where A_SettimanaRichiesta=vSettimana and A_Eta>=vCorsi.T_EtaMin and A_Eta<=vCorsi.T_EtaMax and A_Livello=vCorsi.T_Livello; if (vnumallievi>vcorsi.t_minpartecipanti) then --secondo cursore FOR vallievi IN callievi(vcorsi.t_livello, vcorsi.t_etamin,vcorsi.t_etamax) INSERT INTO ASSEGNAMENTI VALUES (vcorsi.t_idcorso,vallievi.a_idallievo); end if; end; 5 Soluzione alternativa Dichiara un cursore che seleziona solo i TIPICORSI che soddisfano la condizione richiesta Dichiara un cursore parametrico che seleziona gli allievi in base alle condizioni del corso Per ogni corso attivabile nel cursore Per ogni allievo nel cursore Inseriscili nella tabella ASSEGNAMENTI Complessità DB: scansione dei due cursori, scritture su ASSEGNAMENTI RETE:
4 create or replace procedure Assegna(vSettimana int) IS --cursori cursor ccorsi is select T_IdCorso, T_Livello, T_EtaMin,T_EtaMax from Tipicorsi, Allievi where T_Livello = A_Livello and T_EtaMin <= A_Eta and T_EtaMax >= A_Eta and A_SettimanaRichiesta = vsettimana group by T_IdCorso, T_Livello, T_EtaMin,T_EtaMax having count(*) >= T_MinPartecipanti; cursor callievi(ilivello int,ietamin int,ietamax int) is select * from ALLIEVI where A_SettimanaRichiesta=vSettimana and A_Eta>=iEtaMin and A_Eta<=iEtaMax and A_Livello=iLivello; vnumallievi int; begin FOR vcorsi IN ccorsi FOR vallievi IN callievi(vcorsi.t_livello, vcorsi.t_etamin,vcorsi.t_etamax) INSERT INTO ASSEGNAMENTI VALUES (vcorsi.t_idcorso,vallievi.a_idallievo); end; 7 Soluzione più compatta Dichiara un cursore che seleziona gli ALLIEVI e i relativi TIPICORSI (solo per i TIPICORSI che soddisfano la condizione richiesta) Per ogni allievo nel cursore Inseriscili nella tabella ASSEGNAMENTI Complessità DB: scansione di un cursore, scritture su ASSEGNAMENTI RETE:
5 create or replace procedure Assegna (vsettimana int) IS cursor callievi is select * from ALLIEVI, TIPICORSI where A_SettimanaRichiesta=vSettimana and A_Eta>=T_EtaMin and A_Eta<=T_EtaMax and A_Livello=T_Livello AND T_IDCorso IN (select T.T_IDCorso from ALLIEVI A, TIPICORSI T where A.A_SettimanaRichiesta=vSettimana and A.A_Eta>=T.T_EtaMin and A.A_Eta<=T.T_EtaMax and A.A_Livello=T.T_Livello group by T.T_IDCorso having count(*)>t.t_minpartecipanti); begin FOR vallievi IN callievi INSERT INTO ASSEGNAMENTI VALUES (vallievi.t_idcorso,vallievi.a_idallievo); end; 9 Quale soluzione? La soluzione migliore è in genere quella che sfrutta meglio la potenza del DB = fa fare il lavoro di ottimizzazione all ottimizzatore 10 5
6 Vantaggi dell uso di Stored Procedure Sfruttare al meglio le potenzialità dell ottimizzatore Riduzione del traffic di rete Possibilità di modulare meglio i problemi Operazioni che sono più efficienti in una stored procedure Trovare massimo o minimo di una funzione Eseguire un ordinamento Eseguire aggiornamenti correlati Eseguire query in cui ci siano sottoquery ripetute 11 Ottimizzazione del codice Statement e IF Minimizzare il numero di iterazioni Usare la clausola EXIT se necessario Rimuovere dall interno le le istruzioni che possono essere eseguite fuori In caso di IF innestati specificare prima la condizione più probabile Evitare la ricorsione Array processing Lo statement FORALL permette di ottimizzare gli inserimenti 12 6
7 Ottimizzazione del codice WHERE CURRENT OF cursor In un di un cursore la clausola WHERE CURRENT OF permette di aggiornare direttamente il record corrente (più rapido che non la ricerca per chiave primaria) Il cursore deve essere definito FOR UPDATE 13 Ottimizzazione del codice Cursori espliciti Sebbene si possa usare direttamente una query SQL in una procedura, la creazione di un cursore è più efficiente Un cursore implicito (query SQL) richiede un secondo fetch per assicurare che il risultato sia una sola riga 14 7
8 Un altro esempio: il calcetto Una partita di calcetto è bella se è equilibrata! Per questo motivo un gruppo di amici ha costruito il seguente DB per generare automaticamente le formazioni GIOCATORI(ID, Nome, Cognome, LivelloTecnico, LivelloAtletico, Ruolo) PARTITE(IDPartita, DataPartita) DISPONIBILITA(IDPartita:PARTITE, IDGiocatore:GIOCATORI) FORMAZIONI(IDPartita:PARTITE, IDGiocatore:GIOCATORI,IDSQuadra) Si scriva la procedura GeneraSqudra(IDPartita) che suddivide i giocatori disponibili per la partita IDPartita in due squadre (IDSquadra [1,2]) popolando la relazione FORMAZIONI. I ruoli possibili sono 3: Attaccante, Difensore, Portiere. Devono essere disponibili almeno 10 giocatori altrimenti la procedura viene interrotta e viene sollevata una exception con relativo messaggio di warning. Per ogni ruolo i giocatori disponibili sono ordinati in base alla formula (LivelloTecnico * LivelloAtletico) e assegnati alternativamente alla squadra 1 e 2 (se per gli attaccanti il primo assegnamento è fatto alla squadra 1, per i difensori il primo assegnamento dovrà essere fatto alla squadra 2 e così via). 15 Requisiti di funzionamento Requisiti di funzionamento Progettare un cursore per scorrere i giocatori disponibili Ordinare i giocatori in base a 2 condizioni: Ruolo e Capacità di gioco (LivelloTecnico * LivelloAtletico) Gestire l alternanza tra le squadre Gestire il cambio di ruoli Effettuare correttamente l inserimento Inserire una condizione di uscita (exception) Requisiti di ottimalità Uso corretto del per il cursore Evitare di duplicare il codice per le 2 squadre Evitare l uso di query inutili 16 8
9 Traccia di Soluzione Dichiara un cursore che seleziona i giocatori disponibili ordinati per ruolo e capacità Conteggia i giocatori disponibili Se sono troppo pochi solleva un eccezione Altrimenti Inizializza variabili per assegnamento (SquadraCorrente, RuoloCorrente) Per ogni giocatore nel cursore Se c è un cambio di ruolo» Modifica le variabili di assegnamento Inserisci il giocatore nella squadra corrente Modifica la squadra corrente Gestisci l eccezione Complessità scansione del cursori, query su tabella DISPONIBILITA, inserimento FORMAZIONI. 17 create or replace procedure GeneraSquadra(IDPartita int) IS cursor cdisp is --cursore select G_ID, G_Ruolo, (G_LivelloTecnico * G_LivelloAtletico) AS Valore from DISPONIBILITA, GIOCATORI where D_IDPartita=IDPartita and D_IDGiocatore=G_ID order by 2, 3 DESC; vsquadra int; vprimasquadra int; ngioc int; --variabili vruolo varchar2(10); notenoughplayers exception; begin select count(*) into ngioc from DISPONIBILITA where D_IDPartita = IDPartita; if ngioc<10 then check condizione raise notenoughplayers; else vprimasquadra:=1; --inizializza vsquadra:=vprimasquadra; vruolo:='attaccante'; FOR vdisp IN cdisp --cicla su cursore if (vdisp.g_ruolo!= vruolo) then vprimasquadra:=mod(vprimasquadra,2)+1; --cambio di ruolo vsquadra:=vprimasquadra; vruolo:=vdisp.g_ruolo; end if; INSERT into FORMAZIONI values (IDPartita,vDisp.G_ID,vSquadra); vsquadra:=mod(vsquadra,2)+1; --squadra successiva end if; EXCEPTION WHEN notenoughplayers THEN DBMS_OUTPUT.PUT_LINE('Non ci sono abbastanza giocatori disponibili '); end; 18 9
10 Soluzione Alternativa Dichiara 3 cursori (1 per ruolo) che seleziona i giocatori disponibili ordinati per capacità Conteggia i giocatori disponibili Se sono troppo pochi solleva un eccezione Altrimenti Inizializza variabili per assegnamento (SquadraCorrente, RuoloCorrente) Ripete per ogni ruolo le seguenti operazioni Per ogni giocatore nel cursore» Inserisci il giocatore nella squadra corrente» Modifica la squadra corrente Gestisci l eccezione Complessità scansione di 3 cursori, query su tabella DISPONIBILITA, inserimento FORMAZIONI. 19 create or replace procedure GeneraSquadra(IDPartita int) is cursor c_attaccanti is select g_id from disponibilita, giocatori where d_idgiocatore = g_id and d_idpartita = idpartita and g_ruolo = 'Attaccante' order by (g_livellotecnico * g_livelloatletico) desc; cursor c_difensori is... cursor c_portieri is... v_count int := 0; v_squadra int; pochi_giocatori exception; begin select count(*) into v_count from disponibilita where d_idpartita = IDPartita; if v_count < 10 then raise pochi_giocatori; end if; --assegna gli attaccanti v_squadra int := 1; for vr_gioc in c_attaccanti loop insert into formazioni values (idpartita, vr_gioc.g_id, v_squadra); if v_squadra = 1 then v_squadra := 2; else v_squadra := 1; end if; end loop; --assegna i difensori poi i portieri v_squadra := 2; for vr_gioc in c_difensori loop... exception when NO_DATA_FOUND or pochi_giocatori then DBMS_OUTPUT.PUT_LINE('Pochi giocatori'); end; 20 10
11 Errori comuni Errori nelle query SQL Assenza di filtri nel cursore (tutti i giocatori, non solo quelli disponibili) Errore nell ordinamento dei giocatori Assenza di alternanza tra le squadre nel cambio di ruoli Assenza gestione eccezione 21 Un altro esempio: i compiti Il sistema automatico per la correzione dei compiti universitari si basa su una banca dati di domande con diversi livelli di complessità (1, 2, 3, 4) e diverse aree (Area1, Area2, Area3). Un compito è formato da N domande estratte dal sistema. Per ogni domanda il sistema mostra le diverse possibili risposte e lo studente ne sceglie una che viene registrata sul DB DOMANDE(ID, Testo, RispostaCorretta, LivelloComplessità, AreaDomanda) RISPOSTE(IDDomanda:DOMANDE, IDRisposta, TestoRisposta) RISPOSTESTUDENTE(IDStudente, IDCompito, IDDomanda: DOMANDE, Risposta) Si scriva la procedura CorreggiCompito(IDStudente, IDCompito) che calcola e mostra a video il voto dello studente in base alle seguenti regole: Si calcola un voto parziale per ognuna delle tre aree (Area1, Area2, Area3) e il voto complessivo è la media pesata dei voti delle tre aree Area1 peso 1, Area2 peso 2, Area3 peso 3. Per le domande di un area: Se la risposta è sbagliata il punteggio è -0.5 Se la risposta è corretta (RISPOSTESTUDENTE.Risposta = DOMANDE.RispostaCorretta) il punteggio acquisito è dato dal campo LivelloComplessità 22 11
12 Requisiti di funzionamento Requisiti di funzionamento Progettare un cursore per scorrere le risposte degli studenti Filtrare solo il compito e lo studente selezionati Ordinare le risposte in base all area Calcolare i voti parziali Calcolare il totale Effettuare la stampa a video Requisiti di ottimalità Uso corretto del per il cursore Evitare di duplicare il codice per le diverse aree squadre Evitare l uso di query/join inutili 23 Traccia di Soluzione Dichiara un cursore che seleziona le soluzioni relative al compito selezionato e allo studente selezionato ordinate per area Inizializza variabili per assegnamento (AreaCorrente, ParzialeArea, ) Per ogni soluzione nel cursore Se c è un cambio di area Stampa i dati relativi all Area corrente Modifica le variabili di assegnamento Aggiorna i risultati dell area corrente Stampa il risultato finale IN ALTERNATIVA (senza ordinamento): Un solo cursore e gestione delle aree con l uso di if in cascata o case..when Complessità scansione del cursore 24 12
13 create or replace procedure CorreggiCompito(IDStudente int, IDCompito int) IS cursor cdom is --cursore select * from RISPOSTESTUDENTE, DOMANDE where RS_IDDomanda=D_ID and RS_IDStudente=IDStudente AND RS_IDCompito=IDCompito order by D_AreaDomanda; vparzarea float; varea int; vnumaree int; vnum int; vtot float; begin varea:=1; vparzarea:=0; vtot:=0; vnum:=0; vnumaree:=0; FOR vdom IN cdom if ((vdom.d_areadomanda>varea) and (vnum>0)) then DBMS_OUTPUT.PUT_LINE('Area: ' varea 'Parziale:' vparzarea/vnum); vtot := vtot + varea*vparzarea/vnum; vnumaree:=vnumaree+1; vparzarea:=0; varea:=vdom.d_areadomanda; vnum:=0; end if; --aggiorna conteggi parziali vnum:=vnum+1; if (vdom.d_rispostacorretta=vdom.rs_risposta) then vparzarea:=vparzarea+vdom.d_livellocomplessità; else vparzarea:=vparzarea-0.5; end if; --stampe finali DBMS_OUTPUT.PUT_LINE('Area: ' varea 'Parziale:' vparzarea/vnum); vtot := vtot + varea*vparzarea/vnum; vnumaree:=vnumaree+1; DBMS_OUTPUT.PUT_LINE('Totale: ' vtot/vnumaree); end; 25 Soluzione alternativa Dichiara 3 cursori, uno per ciascuna area, che selezionano le soluzioni relative al compito selezionato e allo studente selezionato Ripeti iterativamente per i tre cursori Inizializza variabili per assegnamento (ParzialeArea) Per ogni soluzione nel cursore Aggiorna i risultati dell area corrente Stampa i dati relativi all Area corrente Stampa il risultato finale Complessità scansione dei 3 cursori 26 13
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo
SQL - Structured Query Language
SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente
Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo
Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL Simona Rotolo 2 Questo documento, rivolto a chi sviluppa codice in PL/Sql, è stato redatto al fine di fornire degli standard di sviluppo che aiuteranno
Oracle PL/SQL. Motivazioni
Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezioni 6 7 Raffaella Gentilini 1 / 46 Sommario 1 Subquery (o Interrogazioni Nidificate) Interrogazioni Annidate con Predicati di Confronto Interrogazioni Annidate con
Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza
Triggers Antonella Poggi, Claudio Corona Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2008-2009 Questi lucidi sono stati prodotti
σ data 15/12/2013 data 20/12/2014
Dato lo schema: Basi di Dati Prof. Alfredo Pulvirenti A.A. 2014-2015 Prova in itinere 18 dicembre 2014 (A) EVENTO(id, titolo, data, categoria, costo_partecipazione, idcatering) ORGANIZZATORE(id,idevento)
Interrogazioni nidificate
Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,
Silvia Chiusano, Paolo Garza 1
Creazione di un trigger Sviluppo ed utilizzo dei trigger in Oracle Silvia Chiusano Paolo Garza CREATE TRIGGER nome_trigger modo evento [OR evento] ON tabella [REFERENCING referenza] [] [WHEN (predicato
Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati
Soluzione degli esercizi PL-SQL
Soluzione degli esercizi PL-SQL Esercizio 1: Scrivere un blocco di codice che scriva in output la stringa ESAME DI SISTEMI INFORMATIVI come concatenazione di 4 variabili SET SERVEROUTPUT ON v_parte1 CONSTANT
Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione
MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente,
VARIABILI, ASSEGNAZIONE, DECISIONI
LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) PAG. 1 / 6 LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) T-SQL PROGRAMMAZIONE PARTE TERZA VARIABILI, ASSEGNAZIONE, DECISIONI Tratto da Gregory A. Larsen, http://www.databasejournal.com/features/mssql/article.php/3087431/t-sql-programming-part-1---defining-variables-and-if-logic.htm
Manuale SQL. Manuale SQL - 1 -
Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,
Elena Baralis 2007 Politecnico di Torino 1
Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE Linguaggio SQL: fondamenti 2 (1/3) Inserimento di tuple Cancellazione di tuple Modifica di tuple 4 (2/3) INSERT inserimento di nuove tuple
LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE
LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE Quattro parti: Gestione dati Client-Server Logica + interfaccia Logica + interfaccia Business rules Sistema di comunicazione Logica applicativa DBMS:
LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture
LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture L approccio tradizionale: uso di un linguaggio PLSQL 1.1
Interrogazioni nidificate
Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)
Connessione con MySQL
Connessione con MySQL Architettura Server-Side Eventuali parametri cookie sessioni Elaborazione SELECT... DATABASE Quando i dati sono molti e la persistenza deve andare altre la sessione o la durata
Capitolo 5. Soluzione: Soluzione in C:
Capitolo 5 Esercizio 5.1 Realizzare una procedura in un linguaggio di programmazione di alto livello che tramite SQL Embedded elimina dalla tabella DIPARTIMENTO l'elemento che ha il nome che viene fornito
ESERCITAZIONI ACCESS
ESERCITAZIONI ACCESS MS Access 2000 Struttura di riferimento: Studente (Matricola, Cognome, Nome) Esame (Matricola, Materia, Voto, Data) CREARE LE TABELLE IN SQL: Create table STUDENTE ( matricola char(6)
Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati
Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB
Il linguaggio SQL: trigger
Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I
SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)
SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri
Soluzione esercitazione 01
Soluzione esercitazione 01 Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SolEse01.pdf Sistemi Informativi L-A Videonoleggio - caso A: tabella
PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle
Versione dei trigger e PSM di Oracle Lucidi derivati da quelli di Jeffrey D Ullman Oracle usa una variante di SQL/PSM che si chiama non consente solo di creare e memorizzare procedure e funzioni, ma puo
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare
SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola
SQL SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SELECT s.nome As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami FROM Studenti
LO SVOLGIMENTO DEL TEMA DI INFORMATICA
LO SVOLGIMENTO DEL TEMA DI INFORMATICA Si richiede un progetto di ampio respiro: servirebbe più tempo per l'elaborazione Argomenti noti ai candidati, ma le richieste prevedono un'analisi approfondita.
PHP e MySQL. Scripting server-side per accesso a DB MySQL
PHP e MySQL Scripting server-side per accesso a DB MySQL Connessione a un DB MySQL Prima di accedere ai dati è necessario creare una connessione con il DB In PHP si utilizza la funzione mysql_connect,
SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:
SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i
PHP e Structured Query Language
Esercitazioni del corso di Tecnologie per la Comunicazione Aziendale PHP e Structured Query Language Marco Loregian [email protected] www.siti.disco.unimib.it/didattica/tca2008 Interrogazioni (ripasso)
<Nome Tabella>.<attributo>
Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto
Esempio di database relazionale con l utilizzo del prodotto MySQL
Esempio di database relazionale con l utilizzo del prodotto MySQL Marco Liverani Aprile 2015 In queste pagine viene riportato in sintesi il progetto di un database relazionale esemplificativo con cui viene
SQL Esercitazione (database e tabelle) Ing. Cosimo Orlacchio
SQL Esercitazione (database e tabelle) Ing. Cosimo Orlacchio Linguaggio interattivo - SQL Structured Query Language SELECT Corso, Aula, Piano FROM Aule, Corsi WHERE Aula = N3 AND Piano="Terra" Corso Aula
Stored Procedure. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma
Stored Procedure Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti sulla
Come trattare il risultato di un comando SQL (relazioni) che
USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.
Basi di Dati. S Q L Lezione 4
Basi di Dati S Q L Lezione 4 Antonio Virdis [email protected] Sommario Espressioni condizionali Query nella SELECT Raggruppamento di tuple Condizioni sui gruppi 2 Esercizio 6 (lezione 3) Indicare nome
Alessandra Raffaetà. Esercizio: Cinema
Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema
S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà
Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema
Triggers Esercitazione 1
Triggers Esercitazione 1 Nel seguente documento vengono mostrati alcuni esempi di trigger e di funzioni pgplsql. Si ricorda che i trigger vengono eseguiti al verificarsi di certe condizioni definite dal
Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere
Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.
Fondamenti di Teoria delle Basi di Dati
Fondamenti di Teoria delle Basi di Dati Riccardo Torlone Parte 1: Introduzione Obiettivi La conoscenza della teoria delle basi di dati? No (o non solo) Piuttosto: Come si può affrontare un problema in
Linguaggio SQL seconda parte
Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle
2011 Politecnico di Torino 1
SQL per le applicazioni Esercitazione PHP e MySQL Svolgimento D B M G Passi di risoluzione creazione e popolamento della base di dati Creazione di un script SQL Passo 2 creazione di una query d interrogazione
Linee guida per la programmazione di transazioni in PL/SQL
Linee guida per la programmazione di transazioni in PL/SQL Giuseppe Berio Giuseppe Berio DI - Unito 1 Esempio La transazione deve registrare l evasione di un ordine, rappresentato su più tabelle specializzate
CORSO ACCESS 2000 PARTE VI
Le Query Le Query selezionano dati, da una o più tabelle in un database, che soddisfano determinati requisiti e visualizzano i risultati in un foglio dati. I dati richiesti vengono visualizzati in un recordset
Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor
Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è
SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))
SQL PER LA DEFINIZIONE DI BASI DI DATI 1 SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA
SQL PER LA DEFINIZIONE DI BASI DI DATI
SQL PER LA DEFINIZIONE DI BASI DI DATI SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML
SQL (STRUCTURED QUERY LANGUAGE)
SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura
Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive
Basi di dati attive Paolo Atzeni Stefano Ceri Basi di dati attive BD con componente per la gestione di regole Evento- Condizione-Azione (regole di produzione): eventi: normalmente modifiche della base
Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf
Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I
MODULO 2. Query normali e parametriche Query di:
MODULO 2 TITOLO DBMS e SQL In questo Modulo si affronta lo studio dei DBMS Access e MySQL. In particolare per Access, si descrive come progettare, impostare e modificare gli strumenti di lavoro (tabelle,
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operazioni di aggiornamento operazioni di inserimento: insert eliminazione: delete modifica: update di una o più ennuple di una
Spiegazioni esercizio Gestione Tabella con PHP e MySQL
Spiegazioni esercizio Gestione Tabella con PHP e MySQL foglio_di_stile.css (foglio di stile esterno) Questo file contiene: 1. la struttura generale delle quattro pagine web dinamiche: index.php, inserisci.php,
Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati
Sommario - Progettazione di un database - Join - Valore NULL - Operatori aggregati Progettazione di un database - In un database c'è una marcata distinzione tra i valori in esso contenuti e le operazioni
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
Interrogazioni in SQL
Interrogazioni in SQL Corso di Basi di Dati 4 dicembre 2013 1 Interrogazioni sullo schema aziendale 1. Ottenere i nomi dei dipartimenti dislocati in piú sedi. 2. Ottenere il numero di supervisori. 3. Produrre
Filtri. Microsoft Access. Filtri. Filtri
Filtri Microsoft Access Filtri, query Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo requisito Per applicare un filtro a una tabella è
PROGETTAZIONE DI DATABASE Linguaggio SQL
PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti
Caratteristiche dei linguaggi per Database
IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;
ESERCIZI SQL. Esercizio 1
ESERCIZI SQL 2 Esercizio 1 3 Esercizio 1 4 Esercizio 1 Si specifichino le seguenti interrogazioni SQL sulla base di dati relazionale AZIENDA. Si mostri il risultato di ciascuna interrogazione. 1. Si restituisca
Le query di comando e di servizio in Access
Le query di comando e di servizio in Access In questa parte sono presentate alcune query di Access che permettono di: creare nuove tabelle, aggiungere o eliminare righe in una tabella, modificare il contenuto
Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma
Stored Procedures Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Progetto di Applicazioni Software Stored Procedure e User Defined
Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.
Si consideri il seguente schema relazionale, relaivo ad una base di dati per gestire la programmazione cinematografica giornaliera in un certo insieme di cinema: CINEMA(CodC, Nome, Indirizzo, Tel, NSale)
ESEMPIO DI TRIGGER PER IL CONTROLLO DELLE PROPRIETÀ COPERTURA DI UNA GERARCHIA (ARGOMENTO SVOLTO IN CLASSE IL 25 MAGGIO 2011)
ESEMPIO DI TRIGGER PER IL CONTROLLO DELLE PROPRIETÀ COPERTURA DI UNA GERARCHIA (ARGOMENTO SVOLTO IN CLSE IL 25 MAGGIO 2011) Dato il seguente schema E/R consideriamo solo le due gerarchie relative a MANAGER/SEGRETARIA/IMPIEGATO
DATABASE PER IL WEB. Programmazione Web 1
DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca
