Anteprima
Vedrai una selezione di 5 pagine su 20
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3), Albano-Ghelli-Orsini Pag. 1 Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3), Albano-Ghelli-Orsini Pag. 2
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3), Albano-Ghelli-Orsini Pag. 6
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3), Albano-Ghelli-Orsini Pag. 11
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 3), Albano-Ghelli-Orsini Pag. 16
1 su 20
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

CLAUSOLA FROM

  • Trova gli studenti iscritti a inf con cognome Rossi
SELECT * FROM STUD WHERE C='ROSSI' AND CDL='INF';
  • Trova gli studenti iscritti a inf, N_C, media esami
SELECT AVG(V), N_C FROM (SELECT * FROM STUD WHERE CDL='INF') S1 JOIN ESUP ON S1.MAT=E.CAND GROUP BY S1.MAT, N_C

CLAUSOLA WHERE

  • Trova tutti gli studenti che sono nati lo stesso giorno di mat='123'
SELECT * FROM STUD WHERE DN= (SELECT DN FROM STUD WHERE MAT='123')
  • Trova tutti gli studenti che sono nati lo stesso giorno di mat='123' e della stessa provincia di mat='124'
SELECT * FROM STUD WHERE DN= (SELECT DN FROM STUD WHERE MAT='123') AND PR= (SELECT PR FROM STUD WHERE MAT='124')

CLAUSOLA HAVING

Quanti STUD ci sono nelle stesse province di mat='123'

SELECT COUNT *FROM STUDGROUP BY PRHAVING PR = ( SELECT PR FROM STUD WHERE MAT='123')

ESERCIZIO

Per ogni studente che ha fatto + di 2 esami, mostra il suo voto max

SELECT MAX(VOTO)FROM STUD JOIN ESUP ON MAT=CANDGROUP BY MATHAVING COUNT(*) > 2

Per ogni studente che ha fatto + di 2 esami (mostra nome e cognome) e che ha un voto max maggiore del voto max di 'Mario Rossi'

SELECT N,CFROM STUD JOIN ESUP ON MAT=CANDGROUP BY MAT,N,CHAVING COUNT(*) > 2 AND MAX(V) > ( SELECT MAX(V) FROM ESUP WHERE MAT='123')

VALORI MANCANTI

Se ho una somma x1+x2+...+xn con alcuni valori NULL, il risultato è un NULL. Lo stesso con valore sconosciuto.

In SQL ci sono alcune funzioni come SUM, AVG, MAX, MIN, COUNT.

SELECT AVG(X) FROM E_SUP WHERE MAT='123'

In queste operazioni il database esclude i valori null perciò ha difficoltà a gestirli.

SELECT SUM(V)/COUNT(*) FROM E_SUP WHERE MAT='123' -- con valore NULL da ammettere

LEZIONE 19

19/05/2022

Richiamo sulle Nested correlated query lezione precedente

  • Trova gli studenti che hanno almeno un collega che ha preso lo stesso voto dell’alunno in uno stesso esame
MAT N C DN ______________________________________[V] D V CANDSelect *From STUD S1 join ESOPWhere exists ( Select * From STUD S2 join ESOP on Mat=Cand Where S1.MAT S2.MAT AND E2.NE = E1.NE and E2.V = E1.V )*Doppio ciclo FOR*QUERY FOR ALL - In SQL ma esiste l’operatore ∀ ("per ogni"): bisogna trasformarlo con l’operatore esistenziale EXISTS∀ x . p ⇔ ¬∃ x . ¬ p
  • Trova tutti gli studenti che hanno dato tutti gli esami di Torno Vista

SI TRASFORMA IN

  • Trova gli studenti per i quali non esiste un esame che non era stato superato da Torno Vista
  1. Ciclo per gli studenti TRIPLO
  2. Ciclo per gli esami CICLO FOR
  3. Esecuzione query
Comincia la dichiarazioneNOME := VARCHAR(10);AUX NUMBER(3,0);BOOLEAN; -> Uscere tabelle non è possibile (IN ORACLE)ERR1 EXCEPTION; -> eccezioni

-- ESECUZIONE

BEGIN -> Comincia programmazione

  • { CODICE SQL (EX. QUERY) }DECLARE -> Comincia la dichiarazioneNOME := VARCHAR(10);AUX NUMBER(3,0);BOOLEAN; -> Uscere tabelle non è possibile (IN ORACLE)ERR1 EXCEPTION; -> eccezioni

Ho a disposizione 2 temporizzazioni per controllare quando viene eseguito l'INSERT → BEFORE o AFTER

parte il trigger prima dell'inserimento

dopo l'inserimento

Trigger → meccanismo di attivazione del codice

CREATE TRIGGER NumchiusoBEFORE INSERT ON STUDENTEFOR EACH ROWContatore NUMBER;Numchiuso EXCEPTION;BEGIN SELECT COUNT(*) INTO Contatore FROM STUDENTI WHERE CDL = :NEW.CDL; IF Contatore = 220 THEN RAISE Numchiuso END IF;EXCEPTION WHEN Numchiuso THEN RAISE_APPLICATION_ERROR (-20001 , 'Ateneo Chiuso')END;

"ogni volta che viene lanciato un INSERT sulla tabella codici, parte in automatico il trigger"

* con :NEW (solo nei trigger) è una variabile di tipo Tupla che sta per essere scritto (quindi contiene la Tupla, Ex.: :new.mat)

Il rischio di violare il numchiuso comunque c'è, ad esempio se viene creata prima la tabella con dati inseriti e poi avviare il trigger.

NOW è una garanzia sul vincolo admin può disattivarlo.

Regole di Business VS Vincoli Dinamici

regole secondo cui funziona l'organizzazione

Ex: politiche di scelta di un magazzino

regole sull'evoluzione di un sistema che non devono essere violate.

Dettagli
A.A. 2021-2022
20 pagine
SSD Scienze matematiche e informatiche MAT/05 Analisi matematica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher vincenzobucciero01 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Maratea Antonio.