Interrogazioni con Raggruppamenti

Documenti analoghi
Basi di Dati. Concetti Avanzati

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

SQL: SCRIVERE INTERROGAZIONI E ANNIDARLE. Patrizio Dazzi a.a

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

BASI di DATI. SQL: concetti fondamentali

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati. Dettagli e Approfondimenti

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Introduzione. Introduzione

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

SQL: ALTRE FORME DI JOIN, FUNZIONI AGGREGATIVE, ESPRESSIONI. Patrizio Dazzi a.a

Basi di Dati SQL-92. Dettagli e Approfondimenti

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

4/16/07. Algebra Relazionale. Introduzione. La Base di Dati di Esempio

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

STRUCTURED QUERY LANGUAGE (SQL) E INTERROGAZIONI. Patrizio Dazzi a.a

Interrogazioni nidificate

Interrogazioni nidificate

SQL Esempi /10/2017 Basi di dati - SQL 1

Basi di Dati. Progettazione Logica

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

BASE DI DATI. Progettazione logica. Informatica Umanistica Università di Pisa

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

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

Basi di dati: appello 14/07/06

Basi di Dati Corso di Laura in Informatica Umanistica

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

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

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

SQL /10/2016 Basi di dati - SQL 1

Sistemi di Elaborazione delle Informazioni

Basi di dati I Prova di autovalutazione 30 ottobre 2014

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Basi di dati I 8 settembre 2011 Tempo a disposizione: un ora e trenta minuti. Libri chiusi.

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Interrogazioni Interrogazioni in SQL } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sinta

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

Lezioni di Laboratorio sui Data Base

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

Monday, January 24, 2011 SQL

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Structured Query Language

Informatica Grafica. Basi di dati parte 2

Esempio di database relazionale con l utilizzo del prodotto MySQL

SQL - Structured Query Language

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

ESERCIZI SQL. Esercizio 1

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

SQL - Structured Query Language

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: "outer join"

Basi di dati: appello 04/07/06

Basi di dati Corso di Laurea in Informatica Umanistica

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

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

Basi di Dati: Corso di laboratorio

Basi di dati: appello 07/02/06

Basi di Dati: Corso di laboratorio

Basi di dati - Laboratorio

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

5.1- Le operazioni: esempi

Interrogazioni in SQL SQL1 1

Operatori aggregati: COUNT

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Corso di Basi di Dati

Linguaggio SQL seconda parte

SQL: "storia" 31/05/2006 2

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

Interrogazioni complesse. SQL avanzato 1

Laboratorio di Basi di Dati

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

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati e SQL

SQL Esercizi DML Blocco 1

Esercitazione 4 SQL.

Basi di dati I Esercizi proposti il 24 ottobre 2016

Interrogazioni semplici

Caratteristiche dei linguaggi per Database

Esame di Basi di Dati SOLUZIONE APPELLO 05/09/2011

Basi di Dati - Informatica umanistica Esercitazione (Lab)

Basi di Dati Corso di Laura in Informatica Umanistica

Manuale SQL. Manuale SQL - 1 -

Basi di Dati. Esercitazione SQL. 17 novembre 2011

Corso di Basi di Dati

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

Transcript:

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

Interrogazioni con Raggruppamenti Nucleo della SELECT SELECT, FROM, [WHERE] Clausola aggiuntiva [ORDER BY] Ulteriori clausole aggiuntive [GROUP BY] [HAVING] 3 Clausole GROUP BY e HAVING GROUP BY operatore di raggruppamento Sintassi GROUP BY <attributi di raggruppamento> Semantica raggruppamento della tabella divisione in gruppi delle ennuple raggruppamento sulla base dei valori comuni per gli attributi di raggruppamento 4 2

Clausole GROUP BY e HAVING Esempio: raggruppamento della tabella studenti per ciclo (GROUP BY ciclo) Studenti matr cognome nome ciclo anno relatore Mario 333 444 Neri Paolo Maria Palla 2 3 gruppo A ciclo= CV gruppo B ciclo= 5 Clausole GROUP BY e HAVING Esempio: raggruppamento della tabella studenti per ciclo e anno (GROUP BY ciclo, anno) Studenti matr 333 cognome Neri nome Mario Maria Paolo ciclo anno 2 relatore gruppo A, gruppo B, 2 444 Palla 3 CV gruppo C, 3 gruppo D, 6 3

Clausole GROUP BY e HAVING Esempio: raggruppamento della tabella studenti per matricola (GROUP BY matr) Studenti matr cognome nome ciclo anno relatore Mario 333 444 Neri Maria Paolo Palla 2 3 una ennupla per ogni gruppo CV 7 Clausole GROUP BY e HAVING Caratteristiche dei gruppi collezioni di ennuple valori comuni per gli attributi di raggruppam. 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 ) 8 4

Clausole GROUP BY e HAVING 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) 9 Clausole GROUP BY e HAVING Esempio: numero di studenti per ciclo SELECT ciclo, count(*) FROM Studenti GROUP BY ciclo; ciclo count(*) 4 2 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.) 0 5

Clausole GROUP BY e HAVING Esempio: numero di studenti per ciclo (continua) SELECT count(*) FROM Studenti GROUP BY ciclo; count(*) 4 2 Clausole GROUP BY e HAVING Vincoli sintattici sulla SELECT se c è una GROUP BY, solo gli attributi di raggruppamento possono comparire nella SELECT SELECT ciclo, count(*) FROM Studenti GROUP BY ciclo; SELECT count(*) FROM Studenti GROUP BY ciclo; SELECT anno, count(*) FROM Studenti GROUP BY ciclo; 2 6

Clausole GROUP BY e HAVING Esempio: distribuzione per anno degli studenti della laurea triennale SELECT anno, count(*) as numstud FROM Studenti WHERE ciclo= GROUP BY anno; 3 Clausole GROUP BY e HAVING I passo: WHERE ciclo= matr 333 444 cognome Neri nome Mario Maria Paolo Palla ciclo anno 2 3 relatore risultato finale: SELECT anno, count(*) as numstud anno numstud II passo: GROUP BY anno matr cognome nome Mario ciclo anno relatore 2 3 2 333 Maria Neri Paolo 2 444 Palla 3 4 7

Clausole GROUP BY e HAVING Esempio: distribuzioni delle medie,solo per i corsi con più di 2 esami non è possibile usare la WHERE HAVING: condizioni aggregate su gruppi SELECT corso, avg(voto) as votomedio FROM Esami GROUP BY corso HAVING count(voto)>2; 5 Esami Clausole GROUP BY e HAVING studente risultato finale corso corso PR PR PR PR IN IN voto 27 2 24 20 28 votomedio 26 26 lode true true I passo: raggruppamento secondo la GROUP BY II passo: selezione dei gruppi secondo la HAVING III passo: proiezione e rid. secondo la SELECT 6 8

Forma Generale della SELECT Forma generale della SELECT SELECT [DISTINCT] <risultato> FROM <join o prodotti cartesiani> [WHERE <condizioni>] [GROUP BY <attributi di raggruppamento>] [HAVING <condizioni sui gruppi>] [ORDER BY <attributi di ordinamento>] 7 Forma Generale della SELECT 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 Nota sulla semantica tutti i valori NULL normalmente vengono raggruppati assieme 8 9

Forma Generale della SELECT 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 l eventuale GROUP BY raggruppamento delle ennuple della tabella viene valutata l eventuale HAVING selezione dei gruppi della tabella >> 9 Forma Generale della SELECT 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 20 0

Forma Generale della SELECT Esempio: medie in ordine decrescente degli studenti della laurea specialistica che hanno sostenuto almeno due esami SELECT matr, cognome, nome, avg(voto) FROM Studenti JOIN Esami ON matr=studente WHERE ciclo= GROUP BY matr, cognome, nome HAVING count(*)>=2 ORDER BY avg(voto) DESC; 2 Forma Generale della SELECT Studenti Esami matr cognome nome ciclo relat studente corso voto lode Mario PR 27 333 Maria true Neri Paolo IN 24 444 Palla PR 2 20 CV 28 PR IN true 22

Forma Generale della SELECT Passo : FROM Studenti JOIN Esami ON matr=studente matr cognome nome ciclo relat studente corso voto lode Mario PR 27 Mario IN 24 Neri Paolo true PR 2 20 28 PR IN true 23 Forma Generale della SELECT Passo II: WHERE ciclo= matr cognome nome ciclo relat studente corso voto lode PR 2 20 28 PR IN true Passo III: GROUP BY matr, cognome, nome matr cognome nome ciclo relat studente corso voto lode PR 2 20 28 PR IN true 24 2

Forma Generale della SELECT Passo IV: HAVING count(*) >= 2 matr cognome nome ciclo relat studente corso voto lode PR 2 20 28 PR IN true Passo V: SELECT matr, cognome, nome, avg(voto) matr cognome nome avg(voto) 20,5 29,66 Passo VI: ORDER BY avg(voto) DESC matr cognome nome avg(voto) 29,66 20,5 25 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate SELECT Nidificate la clausola WHERE di una SELECT contiene un altra SELECT 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.) 26 3

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Condizioni su valori semplici confrontano il valore di un attributo con il risultato di una SELECT scalare operatori: >, <, =, >=, <=, <>, LIKE, IS NULL SELECT scalare SELECT che restituisce un unica ennupla con un un unico attributo tipicamente: funzione aggregativa 27 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Esempio: lo studente con la matricola più alta SELECT matr, cognome, nome FROM Studenti WHERE matr = (SELECT max(matr) max(matr) FROM Studenti); per ogni ennupla di Studenti, il valore della matricola viene confrontato con il numero 28 4

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate 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 ANY un elemento qualsiasi della collezione ; es: = ANY, oppure IN ALL tutti gli elementi della collezione ; es: > ALL 29 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Esempio: lo studente con la matricola più alta (senza funzioni aggregative) SELECT matr, cognome, nome FROM Studenti WHERE matr >= ALL (SELECT matr FROM Studenti); per ogni ennupla di Studenti, il valore della matricola viene confrontato con tutte le matricole matr 333 444 5

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Sintatticamente no ORDER BY nelle SELECT nidificate 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 3 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Nota: Le interrogazioni nidificate possono sostituire i join Esempio: voti riportati in corsi della laurea triennale SELECT voto FROM Esami WHERE corso = ANY (SELECT cod stessa semantica del join cod PR FROM Corsi WHERE ciclo= ); 32 6

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Nota: Le interrogazioni nidificate possono sostituire intersezione e differenza Esempio: cognome e nome dei professori ordinari che non hanno tesisti SELECT cognome, nome FROM Professori WHERE qualifica= ordinario AND cod <> ALL (SELECT DISTINCT relatore FROM Studenti ); relatore 33 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate Metodologicamente i join si realizzano applicando i join le op. insiemistiche si realizzano applicando gli op. insiemistici 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 34 7

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Interrogazioni Nidificate 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 35 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Utilizzo nel DML e nel DDL Utilizzo nel DML nella DELETE, nella UPDATE e nella INSERT, clausola WHERE completa Utilizzo nel DDL vincoli di ennupla CHECK (<condizione>) <condizione>: sintassi e semantica identica alla condizione della clausola WHERE 36 8

SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Utilizzo nel DML e nel DDL Esempio: è possibile sostenere esami solo per i corsi per cui c è un docente 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>=8 and voto<=), CHECK (not lode or voto=), PRIMARY KEY (studente, corso)); Vincolo di ennupla aggiuntivo CHECK (corso = ANY (SELECT cod FROM Corsi WHERE docente IS NOT NULL)) 37 SQL-92 >> Concetti Avanzati >> Interrogazioni Nidificate Nidificazione, Viste, Potere Espressivo Terzo utilizzo delle viste esprimere interrogazioni altrimenti inesprimibili 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) 38 9

SQL-92 >> Concetti Avanzati >> Viste e Potere Espressivo Nidificazione, Viste, Potere Espressivo Soluzione con le viste CREATE VIEW StudentiConMedia AS SELECT matr, cognome, nome, avg(voto) as media FROM Esami JOIN Studenti on studente=matr GROUP BY matr, cognome, nome; StudentiConMedia matr 333 444 cognome Neri nome Mario Paolo Maria Palla media 20,7 24,5 25,8 9,6 SELECT matr, cognome, nome FROM StudentiConMedia WHERE media = (SELECT max(media) FROM StudentiConMedia); 26 26 39 SQL-92 >> Concetti Avanzati >> Viste e Potere Espressivo Nidificazione, Viste, Potere Espressivo Un ulteriore esempio numero medio di docenti appartenenti alle facoltà 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; 40 20

SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Esecuzione di una Query SQL Processo di valutazione di una query la query viene inviata al DBMS interattivamente o da un applicazione il DBMS effettua l analisi sintattica del codice SQL il DBMS effettua le verifiche sulle autorizzazioni di accesso il DBMS esegue il processo di ottimizzazione della query 4 SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Ottimizzazione delle Interrogazioni Processo di ottimizzazione scelta di una strategia efficiente per la valutazione della query Piano di esecuzione di una query scelta dell ordine di applicazione degli operatori algebrici necessari strategia di calcolo del risultato di ciascun operatore algebrico attraverso le strutture di accesso disponibili 42 2

SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Un Esempio Studiamo la seguente interrogazione: Nomi e cognomi dei tesisti di Christian Vieri iscritti alla laurea specialistica SELECT Studente.nome, Studente.cognome FROM Docente, Studente WHERE Docente.codice=Studente.relatore AND Studente.ciclo = AND Docente.cognome = Vieri ; 43 SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Forma standard Un Esempio Albero degli operatori della query SELECT S.nome, S.cognome FROM Docente AS D, Studente AS S WHERE D.codice=S.relatore AND S.ciclo = AND D.cognome = Vieri ; S π S.nome, S.cognome σ D.codice=S.relatore AND S.ciclo= AND D.cognome= Vieri π S.nome, S.cognome ( σ D.codice=S.relatore (S X D) ) AND S.ciclo= AND D.cognome= Vieri X D 44 22

SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Non è l unico possibile Un Esempio π S.nome, S.cognome π S.nome, S.cognome σ D.codice=S.relatore AND S.ciclo= AND D.cognome= Vieri X σ S.ciclo= AND D.cognome= Vieri D.codice=S.relatore S Piano A D S D Piano B 45 SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Altri Piani di Esecuzione π S.nome, S.cognome σ S.ciclo= π S.nome, S.cognome D.codice=S.relatore D.codice=S.relatore σ D.cognome = Vieri σ S.ciclo= σ D.cognome = Vieri S Piano C D S Piano D D 46 23

SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Ottimizzazione delle Interrogazioni Per effettuare l ottimizzazione vengono valutati molti diversi piani di esecuzione alternativi l ottimizzatore 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) 47 SQL-92 >> Concetti Avanzati >> Esecuzione di una Query SQL Ottimizzazione delle Interrogazioni query SQL Analizzatore Sintattico forma standard della query Generatore dei Piani di Esecuzione piano di esec. ottimizzato Esecutore risultato Valutatore di Costo Ottimizzatore Statistiche sulla base di dati 48 24

SQL-92 >> Sommario Concetti Avanzati Raggruppamenti Clausole GROUP BY e HAVING Forma Generale della SELECT Nidificazione Uso nel DML e DDL Nidificazione, Viste e Potere Espressivo Esecuzione di una Query SQL 49 SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); 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 Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); 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>=8 and voto<=), CHECK (not lode or voto=), PRIMARY KEY (studente, corso)); CREATE TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); 50 25

SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento Corsi T Esami T codice CHAR(3) titolo VARCHAR(20) PK Numeri T corso CHAR(3) PK, FK ciclo CHAR(20) numero CHAR(9) PK studente INTEGER PK, FK docente CHAR(4) FK docente CHAR(4) PK, FK voto INTEGER lode BOOL Professori T cod CHAR(4) PK Studenti matr INTEGER cognome VARCHAR(20) nome VARCHAR(20) T PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(5) facolta CHAR(0) ciclo CHAR(20) Tutorato T anno INTEGER studente INTEGER PK, FK relatore CHAR(4) FK tutor INTEGER PK, FK 5 SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento Professori cod cognome Totti nome Francesco qualifica ordinario facolta Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente Studenti matr cognome nome Mario ciclo anno relatore Neri Paolo 2 333 Maria 444 Palla 3 CV Corsi cod PR titolo Programmazione I ciclo docente Algoritmi e Str. Dati CV IN Informatica Teorica ADP 52 26

SQL-92 >> Concetti Avanzati >> Base di Dati di Riferimento Tutorato studente tutor Numeri professore numero 09720545 34723456 333 097205227 444 ADP 097205363 ADP 33823456 Esami studente corso PR voto 27 lode true IN 24 PR 2 20 28 PR IN true 53 27