G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Avanzati versione 2.0 Questo lavoro è concesso in uso secondo i termini.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Biglietti e Ritardi: schema E/R
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
G. Mecca – – Università della Basilicata Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Concetti Fondamentali versione.
Modello Concettuale dei Dati: Concetti Fondamentali
Algebra Relazionale Concetti Fondamentali
SQL-92 Concetti Fondamentali
Tecnologie di Sviluppo per il Web
Modello Concettuale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Progettazione e Forme Normali
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
Algebra Relazionale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
Frontespizio Economia Monetaria Anno Accademico
SQL.
Programmazione Procedurale in Linguaggio C++
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Programmazione 1 9CFU – TANTE ore
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 16/10/2002.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
sql: esempi di linguaggio sql nell'implementazione mysql
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Basi di Dati e Sistemi Informativi
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
SQL Interrogazioni. 2 Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation.
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
Programmazione Procedurale in Linguaggio C++
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Transcript della presentazione:

G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Avanzati versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 G. Mecca - - Basi di Dati Concetti Avanzati m Raggruppamenti Clausole GROUP BY e HAVING Forma Generale della SELECT m Nidificazione Uso nel DML e DDL Nidificazione, Viste e Potere Espressivo m Esecuzione di una Query SQL SQL-92 >> Sommario

3 G. Mecca - - Basi di Dati Interrogazioni con Raggruppamenti Nucleo della SELECT SELECT, FROM, [WHERE] m Clausola aggiuntiva [ORDER BY] m Ulteriori clausole aggiuntive [GROUP BY] [HAVING] SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

4 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m GROUP BY operatore di raggruppamento m Sintassi GROUP BY m Semantica raggruppamento della tabella divisione in gruppi delle ennuple raggruppamento sulla base dei valori comuni per gli attributi di raggruppamento SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

5 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti Esempio: raggruppamento della tabella studenti per ciclo (GROUP BY ciclo) gruppo A ciclo=laurea tr. gruppo B ciclo=laurea sp.

6 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 333RossiMarialaurea tr.1null 222NeriPaololaurea tr.2null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti Esempio: raggruppamento della tabella studenti per ciclo e anno (GROUP BY ciclo, anno) gruppo A laurea tr., 1 gruppo B laurea tr., 2 gruppo C laurea tr., 3 gruppo D laurea sp., 1

7 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 333RossiMarialaurea tr.1null 222NeriPaololaurea tr.2null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti Esempio: raggruppamento della tabella studenti per matricola (GROUP BY matr) una ennupla per ogni gruppo

8 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Caratteristiche dei gruppi collezioni di ennuple valori comuni per gli attributi di raggruppam. m Operazioni interessanti sui gruppi funzioni aggregative analisi della distribuzione di valori tra i gruppi es: numero di studenti per ciclo o per anno OLAP (On Line Analytical Processing) SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

9 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Interrogazioni con raggruppamento attributi di raggruppamento (nella GROUP BY) proiezioni su attributi di raggruppamento e funzioni aggregative applicate al gruppo (nella SELECT) condizioni sui gruppi (che coinvolgono funzioni aggregative) (nella HAVING) SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

10 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Esempio: numero di studenti per ciclo SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT ciclo, count(*) FROM Studenti GROUP BY ciclo; Semantica: - viene valutata la clausola FROM - viene effettuato il raggruppam. secondo la GROUP BY - viene valutata la clausola SELECT per ciascun gruppo (ogni gruppo contribuisce ad UNA sola ennupla del ris.) ciclocount(*) laurea tr.4 laurea sp.2

11 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Esempio: numero di studenti per ciclo (continua) SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT count(*) FROM Studenti GROUP BY ciclo; count(*) 4 2

12 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Vincoli sintattici sulla SELECT se cè una GROUP BY, solo gli attributi di raggruppamento possono comparire nella SELECT SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT ciclo, count(*) FROM Studenti GROUP BY ciclo; SELECT count(*) FROM Studenti GROUP BY ciclo; SELECT anno, count(*) FROM Studenti GROUP BY ciclo;

13 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Esempio: distribuzione per anno degli studenti della laurea triennale SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT anno, count(*) as numstud FROM Studenti GROUP BY anno; WHERE ciclo=laurea tr.

14 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 333RossiMarialaurea tr.1null 222NeriPaololaurea tr.2null 444PincoPallalaurea tr.3FT II passo: GROUP BY anno annonumstud risultato finale: SELECT anno, count(*) as numstud matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 333RossiMarialaurea tr.1null 222NeriPaololaurea tr.2null 444PincoPallalaurea tr.3FT I passo: WHERE ciclo=laurea tr.

15 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING m Esempio: distribuzioni delle medie,solo per i corsi con più di 2 esami non è possibile usare la WHERE HAVING: condizioni aggregate su gruppi SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT corso, avg(voto) as votomedio FROM Esami HAVING count(voto)>2; GROUP BY corso

16 G. Mecca - - Basi di Dati Clausole GROUP BY e HAVING SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti corsovotomedio PR126 ASD26 risultato finale studentecorsovotolode 111PR127false 88888PR130false 77777PR121false 111INFT24false 88888INFT30true 222ASD30true 77777ASD20false 88888ASD28false Esami I passo: raggruppamento secondo la GROUP BY II passo: selezione dei gruppi secondo la HAVING III passo: proiezione e rid. secondo la SELECT

17 G. Mecca - - Basi di Dati Forma Generale della SELECT m Forma generale della SELECT SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

18 G. Mecca - - Basi di Dati Forma Generale della SELECT m Se la GROUP BY manca tutte le ennuple ottenute dopo la WHERE vengono considerate un unico gruppo in questo caso le funzioni aggregative producono un unico valore e non sono ammessi attributi ordinari nella SELECT m Nota sulla semantica tutti i valori NULL normalmente vengono raggruppati assieme SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

19 G. Mecca - - Basi di Dati Forma Generale della SELECT m Una semantica operazionale viene valutata la clausola FROM join o prodotti cartesiani >> unica tabella viene valutata la clausola WHERE selezione delle ennuple della tabella viene valutata leventuale GROUP BY raggruppamento delle ennuple della tabella viene valutata leventuale HAVING selezione dei gruppi della tabella >> SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

20 G. Mecca - - Basi di Dati Forma Generale della SELECT m Una semantica operazionale (continua) viene valutata la clausola SELECT proiezioni, espressioni e funzioni aggregative ridenominazioni eventuale eliminazione di duplicati viene valutata la clausola ORDER BY ordinamenti finali SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti

21 G. Mecca - - Basi di Dati Forma Generale della SELECT m Esempio: medie in ordine decrescente degli studenti della laurea specialistica che hanno sostenuto almeno due esami SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti SELECT matr, cognome, nome, avg(voto) FROM Studenti JOIN Esami ON matr=studente HAVING count(*)>=2 GROUP BY matr, cognome, nome WHERE ciclo=laurea sp. ORDER BY avg(voto) DESC;

22 G. Mecca - - Basi di Dati Forma Generale della SELECT SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomeciclorelat 111RossiMariolaurea tr.null 333RossiMarialaurea tr.null 222NeriPaololaurea tr.null 444PincoPallalaurea tr.FT 77777BrunoPasqualelaurea sp.FT 88888PincoPietrolaurea sp.CV Studenti studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami

23 G. Mecca - - Basi di Dati Forma Generale della SELECT SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomeciclorelatstudentecorsovotolode 111RossiMariolaurea tr.null111PR127false 111RossiMariolaurea tr.null111INFT24false 222NeriPaololaurea tr.null222ASD30true 77777BrunoPasqualelaurea sp.FT77777PR121false 77777BrunoPasqualelaurea sp.FT77777ASD20false 88888PincoPietrolaurea sp.VC88888ASD28false 88888PincoPietrolaurea sp.VC88888PR130false 88888PincoPietrolaurea sp.VC88888INFT30true Passo 1: FROM Studenti JOIN Esami ON matr=studente

24 G. Mecca - - Basi di Dati Forma Generale della SELECT SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomeciclorelatstudentecorsovotolode 77777BrunoPasqualelaurea sp.FT77777PR121false 77777BrunoPasqualelaurea sp.FT77777ASD20false 88888PincoPietrolaurea sp.VC88888ASD28false 88888PincoPietrolaurea sp.VC88888PR130false 88888PincoPietrolaurea sp.VC88888INFT30true Passo II: WHERE ciclo=laurea sp. Passo III: GROUP BY matr, cognome, nome matrcognomenomeciclorelatstudentecorsovotolode 77777BrunoPasqualelaurea sp.FT77777PR121false 77777BrunoPasqualelaurea sp.FT77777ASD20false 88888PincoPietrolaurea sp.VC88888ASD28false 88888PincoPietrolaurea sp.VC88888PR130false 88888PincoPietrolaurea sp.VC88888INFT30true

25 G. Mecca - - Basi di Dati Forma Generale della SELECT SQL-92 >> Concetti Avanzati >> Interrogazioni con Raggruppamenti matrcognomenomeciclorelatstudentecorsovotolode 77777BrunoPasqualelaurea sp.FT77777PR121false 77777BrunoPasqualelaurea sp.FT77777ASD20false 88888PincoPietrolaurea sp.VC88888ASD28false 88888PincoPietrolaurea sp.VC88888PR130false 88888PincoPietrolaurea sp.VC88888INFT30true Passo IV: HAVING count(*) >= 2 Passo V: SELECT matr, cognome, nome, avg(voto) matrcognomenomeavg(voto) 77777BrunoPasquale20, PincoPietro29,66 Passo VI: ORDER BY avg(voto) DESC matrcognomenomeavg(voto) 88888PincoPietro29, BrunoPasquale20,5

26 G. Mecca - - Basi di Dati Interrogazioni Nidificate m SELECT Nidificate la clausola WHERE di una SELECT contiene unaltra SELECT m Due possibili utilizzi condizioni basate su valori semplici (SELECT che restituiscono un singolo valore) condizioni basate su collezioni (SELECT ordinarie che restituiscono insiemi di ennup.) SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

27 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Condizioni su valori semplici confrontano il valore di un attributo con il risultato di una SELECT scalare operatori: >, =,, LIKE, IS NULL m SELECT scalare SELECT che restituisce ununica ennupla con un un unico attributo tipicamente: funzione aggregativa SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

28 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Esempio: lo studente con la matricola più alta SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate SELECT matr, cognome, nome FROM Studenti WHERE matr = (SELECT max(matr) FROM Studenti); max(matr) per ogni ennupla di Studenti, il valore della matricola viene confrontato con il numero 88888

29 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Condizioni su valori non scalari (collezioni) confrontano il valore di un attributo con il risultato di una SELECT generica (collezione di ennuple) operatori: ordinari combinati con ANY, ALL m ANY un elemento qualsiasi della collezione; es: = ANY, oppure IN m ALL tutti gli elementi della collezione; es: > ALL SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

30 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Esempio: lo studente con la matricola più alta (senza funzioni aggregative) SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate SELECT matr, cognome, nome FROM Studenti WHERE matr >= ALL (SELECT matr FROM Studenti); matr per ogni ennupla di Studenti, il valore della matricola viene confrontato con tutte le matricole

31 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Sintatticamente no ORDER BY nelle SELECT nidificate m Semantica ogni volta che è necessario verificare la condizione, viene calcolato il risultato della SELECT interna il processo si può ripetere a più livelli in pratica: memorizzazione in una tabella temporanea SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

32 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Nota: Le interrogazioni nidificate possono sostituire i join m Esempio: voti riportati in corsi della laurea triennale SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate SELECT voto FROM Esami WHERE corso = ANY (SELECT cod FROM Corsi WHERE ciclo=laurea tr.); cod PR1 ASD stessa semantica del join

33 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Nota: Le interrogazioni nidificate possono sostituire intersezione e differenza m Esempio: cognome e nome dei professori ordinari che non hanno tesisti SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate SELECT cognome, nome FROM Professori WHERE qualifica=ordinario AND cod <> ALL (SELECT DISTINCT relatore FROM Studenti ); relatore FT VC

34 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Metodologicamente i join si realizzano applicando i join le op. insiemistiche si realizzano applicando gli op. insiemistici m Quando può servire la nidificazione nei sistemi in cui non cè intersezione o diff. es: Access e MySQL condizioni nella WHERE su aggregati es: lo studente con la media più alta SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

35 G. Mecca - - Basi di Dati Interrogazioni Nidificate m Aspetti avanzati (cenni) è possibile fare riferimento ad ennuple della SELECT esterna nella SELECT interna regole di visibilità operatore EXISTS: verifica se una SELECT nidificata restituisce un risultato vuoto sostanzialmente servono per fare join non utilizzeremo questa forma SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

36 G. Mecca - - Basi di Dati Utilizzo nel DML e nel DDL m Utilizzo nel DML nella DELETE, nella UPDATE e nella INSERT, clausola WHERE completa m Utilizzo nel DDL vincoli di ennupla CHECK ( ) : sintassi e semantica identica alla condizione della clausola WHERE SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

37 G. Mecca - - Basi di Dati Utilizzo nel DML e nel DDL m Esempio: è possibile sostenere esami solo per i corsi per cui cè un docente SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate CREATE TABLE Esami ( studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso)); CHECK (corso = ANY (SELECT cod FROM Corsi WHERE docente IS NOT NULL)) Vincolo di ennupla aggiuntivo

38 G. Mecca - - Basi di Dati Nidificazione, Viste, Potere Espressivo m Terzo utilizzo delle viste esprimere interrogazioni altrimenti inesprimibili m Esempio: Studenti con la media più alta per calcolare la media di ciascuno studente serve un raggruppamento condizione nidificata sui gruppi non è possibile nidificare la HAVING (nidificazione solo nella WHERE) SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate

39 G. Mecca - - Basi di Dati Nidificazione, Viste, Potere Espressivo m Soluzione con le viste SQL-92 >> Concetti Avanzati >> Viste e Potere Espressivo CREATE VIEW StudentiConMedia AS SELECT matr, cognome, nome, avg(voto) as media FROM Esami JOIN Studenti on studente=matr GROUP BY matr, cognome, nome; SELECT matr, cognome, nome FROM StudentiConMedia WHERE media = (SELECT max(media) FROM StudentiConMedia); matrcognomenomemedia 111RossiMario20,7 222NeriPaolo24,5 333RossiMaria25,8 444PincoPalla19, BrunoPasquale PincoPietro26 StudentiConMedia

40 G. Mecca - - Basi di Dati Nidificazione, Viste, Potere Espressivo m Un ulteriore esempio numero medio di docenti appartenenti alle facoltà SQL-92 >> Concetti Avanzati >> Viste e Potere Espressivo SELECT avg(count(cod)) FROM Professori GROUP BY facolta; CREATE VIEW Facolta AS SELECT facolta, count(*) as numdocenti FROM Professori GROUP BY facolta; SELECT avg(numdocenti) FROM Facolta;

41 G. Mecca - - Basi di Dati Esecuzione di una Query SQL m Processo di valutazione di una query la query viene inviata al DBMS interattivamente o da unapplicazione il DBMS effettua lanalisi sintattica del codice SQL il DBMS effettua le verifiche sulle autorizzazioni di accesso il DBMS esegue il processo di ottimizzazione della query SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL

42 G. Mecca - - Basi di Dati Ottimizzazione delle Interrogazioni m Processo di ottimizzazione scelta di una strategia efficiente per la valutazione della query m Piano di esecuzione di una query scelta dellordine di applicazione degli operatori algebrici necessari strategia di calcolo del risultato di ciascun operatore algebrico attraverso le strutture di accesso disponibili SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL

43 G. Mecca - - Basi di Dati Un Esempio m Studiamo la seguente interrogazione: Nomi e cognomi dei tesisti di Christian Vieri iscritti alla laurea specialistica SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL SELECT Studente.nome, Studente.cognome FROM Docente, Studente WHERE Docente.codice=Studente.relatore AND Studente.ciclo = laurea sp. AND Docente.cognome = Vieri;

44 G. Mecca - - Basi di Dati Un Esempio m Forma standard SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL SELECT S.nome, S.cognome FROM Docente AS D, Studente AS S WHERE D.codice=S.relatore AND S.ciclo = laurea sp. AND D.cognome = Vieri; S D S. nome, S.cognome D.codice=S.relatore AND S.ciclo=laurea sp. AND D.cognome=Vieri X S. nome, S.cognome D.codice=S.relatore AND S.ciclo=laurea sp. AND D.cognome=Vieri (S X D) ) Albero degli operatori della query

45 G. Mecca - - Basi di Dati Un Esempio m Non è lunico possibile SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL S D S. nome, S.cognome D.codice=S.relatore AND S.ciclo=laurea sp. AND D.cognome=Vieri X Piano A S D S.ciclo=laurea sp. AND D.cognome=Vieri S. nome, S.cognome D.codice=S.relatore Piano B

46 G. Mecca - - Basi di Dati Altri Piani di Esecuzione SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL S D S.ciclo= laurea sp. S. nome, S.cognome D.codice=S.relatore Piano D D.cognome =Vieri S S.ciclo=laurea sp. S. nome, S.cognome D D.codice=S.relatore Piano C D.cognome =Vieri

47 G. Mecca - - Basi di Dati Ottimizzazione delle Interrogazioni m Per effettuare lottimizzazione vengono valutati molti diversi piani di esecuzione alternativi lottimizzatore dispone di statistiche sul contenuto della base di dati (dimensione delle tabelle, dimensione dei record, dimensione degli indici, selettività ecc.) sulla base delle statistiche viene stimato il costo di ciascun piano di esecuzione (numero di accessi ai blocchi su disco) SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL

48 G. Mecca - - Basi di Dati Ottimizzazione delle Interrogazioni SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Generatore dei Piani di Esecuzione Valutatore di Costo Analizzatore Sintattico query SQL risultato Statistiche sulla base di dati Ottimizzatore forma standard della query Esecutore piano di esec. ottimizzato

49 G. Mecca - - Basi di Dati Concetti Avanzati m Raggruppamenti Clausole GROUP BY e HAVING Forma Generale della SELECT m Nidificazione Uso nel DML e DDL Nidificazione, Viste e Potere Espressivo m Esecuzione di una Query SQL SQL-92 >> Sommario

50 G. Mecca - - Basi di Dati CREATE TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod) ); CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); CREATE TABLE Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer REFERENCES Studenti(matr), PRIMARY KEY (studente,tutor)); CREATE TABLE Esami ( studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso)); CREATE TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); CREATE TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento

51 G. Mecca - - Basi di Dati SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudentiT matr INTEGERPK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4)FK ProfessoriT cod CHAR(4)PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) EsamiT corso CHAR(3)PK, FK studente INTEGERPK, FK voto INTEGER lode BOOL CorsiT codice CHAR(3)PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4)FK NumeriT numero CHAR(9)PK docente CHAR(4)PK, FK

52 G. Mecca - - Basi di Dati SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti codtitolociclodocente PR1Programmazione Ilaurea tr.FT ASDAlgoritmi e Str. Datilaurea tr.CV INFTInformatica Teoricalaurea sp.ADP Corsi

53 G. Mecca - - Basi di Dati SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento studentetutor Tutorato studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami professorenumero FT FT VC ADP ADP Numeri

54 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.