<Nome Tabella>.<attributo>

Documenti analoghi
Tabelle esempio: Impiegato/Dipartimento

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Tabelle esempio: Impiegato/Dipartimento

Structured Query Language

Linguaggio SQL seconda parte

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

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

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Caratteristiche dei linguaggi per Database

Il linguaggio SQL: raggruppamenti

Corso di Basi di Dati

Manuale SQL. Manuale SQL - 1 -

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Basi di Dati: Corso di laboratorio

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

SQL - Sottointerrogazioni correlate

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Interrogazioni semplici

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Estensioni del linguaggio SQL per interrogazioni OLAP

RELAZIONI E BASI DI DATI

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Elena Baralis 2007 Politecnico di Torino 1

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

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

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

SQL - Structured Query Language

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

Filtri. Microsoft Access. Filtri. Filtri

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

Elena Baralis 2007 Politecnico di Torino 1

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

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

Basi di Dati. S Q L Lezione 2

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

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di Dati: Corso di laboratorio

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

SQL - Sottointerrogazioni

Basi di Dati: Corso di laboratorio

Lezione 6. Algebra e Calcolo Relazionale

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Interrogazioni nidificate

Alessandra Raffaetà. Qualificazione: notazione con il punto

ALGEBRA RELAZIONALE. L algebra relazionale

Operatori aggregati: COUNT

Esempi SQL con Access. Orazio Battaglia

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

CORSO ACCESS 2000 PARTE VI

Interrogazioni nidificate

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

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Le query di comando e di servizio in Access

Elena Baralis 2007 Politecnico di Torino 1

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di Dati. S Q L Lezione 4

Monday, January 24, 2011 SQL

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

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

Il linguaggio SQL: le viste

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

SQL e algebra relazionale

Introduzione a Matlab

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

DISPENSA ACCESS (OFFICE 2010 BETA)

ESERCITAZIONI ACCESS

ESAME 16/02/2016 (A) Prof. C. DE MAIO

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Laboratorio di Basi di Dati

SQL QUERY: Le interrogazioni del database

Esempio di database relazionale con l utilizzo del prodotto MySQL

DATABASE CLIENTIRAPPRESENTANTI

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Elementi di Informatica A. A. 2016/2017

Tipi di sottoquery SQL

Basi di Dati: Corso di laboratorio

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO e SCHEMA FISICO Costruzione delle tabelle

BASE DI DATI. Esercitazione: Campionato italiano 2015/2016 Raggruppamenti Nidificazione. Informatica Umanistica Università di Pisa

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, La normalizzazione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Corso di Basi di Dati

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

Excel 3. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

MODULO 2. Query normali e parametriche Query di:

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

Esercitazione 3 SQL 2

Corso di Basi di Dati

Database. Idoneità Informatica, CdS Economia e Commercio

Data warehouse in Oracle

Database Modulo 4 RELAZIONI TRA TABELLE

Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1. Data warehouse in Oracle

Il linguaggio SQL: query innestate

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Transcript:

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 Postiglione Università degli Studi di Salerno Queries su più tabelle Per formulare un interrogazione su più tabelle, la clausola dovrà contenere l elenco di tutte le tabelle coinvolte Sul prodotto cartesiano delle tabelle verranno applicate le condizioni contenute nella clausola WHERE # 2 Prof Alberto Postiglione Università Salerno Come funziona una query su più tabelle Come funziona una query su più tabelle Una Query su più tabelle si riduce ad una query su una sola tabella in quanto SQL effettua il prodotto cartesiano di tutte le tabelle coinvolte nella query Infatti, il Prodotto Cartesiano crea un unica, grande, tabella, data dal prodotto di quelle di partenza Su tale grande tabella si applicano le condizioni della clausola WHERE. Alla fine viene creata la tabella di risposta selezionando i campi presenti nella clausola I1 I2 IMPIEGATO DIPARTIMENTO D1 D2 D3 D4 D5 Per avere la prova basta eseguire la seguente query: *, ; # 3 Prof Alberto Postiglione Università Salerno # 4 Prof Alberto Postiglione Università Salerno Come funziona una query su più tabelle Operatore punto Il numero totale di righe è il prodotto del numero delle righe presenti nelle tabelle input, cioè 40, in quanto ha 8 righe ha 5 righe. Il numero totale di colonne è la somma del numero delle colonne nelle tabelle input, cioè 9, in quanto ha 6 colonne ha 3 colonne. Per indicare gli attributi di ogni tabella si usa la notazione < Tabella>.<attributo> E necessario utilizzare l operatore punto per identificare la tabelle da cui provengono i campi solo se c è ambiguità, cioè se nell interrogazione si fa riferimento a nomi presenti in più tabelle. In caso di assenza di ambiguità è possibile usare il solo nome del campo, senza dichiarare la tabella di appartenenza # 5 Prof Alberto Postiglione Università Salerno # 6 Prof Alberto Postiglione Università Salerno 1

Tabelle esempio: / (,,, Ufficio,, ) Anna Giuseppe Mario Bianco Bianchi Neri (, Indirizzo, ) Ricerca Ufficio 75 20 16 20 20 10 Indirizzo Via Tito Livio, 27 Via Tito Livio, 2 Via Segre, 9 P.le Lavater, 3 Via Venosa, 6,00 36.000,00,00 73.000,00 46.000,00 Venezia Napoli Genova QUERY 23 - Tabelle Multiple, e città di lavoro di tutti gli impiegati.,.,., WHERE. =.; NOME e COGNOME appartengono alla tabella IMPIEGATO Anna Giuseppe Mario Bianco Bianchi Neri CITTA appartiene alla tabella DIPARTIMENTO # 7 Prof Alberto Postiglione Università Salerno # 8 Prof Alberto Postiglione Università Salerno Uso di ALIAS (Nomi alternativi) USO DI VARIABILI Atzeni, cap. 4.2.2 Uso di variabili ALIAS: nome alternativo dato ad una tabella MOTIVAZIONI (Alias come Pseudonimo) Far riferimento ad una tabella evitando di scrivere per intero il suo nome ogni volta che ne viene richiesto l uso (Alias come nome di variabile) Far riferimento a più esemplari della stessa tabella, quando l interrogazione prevede di accedere in momenti successivi alla stessa tabella (quando per esempio una tabella va confrontata con se stessa) # 10 Prof Alberto Postiglione Università Salerno QUERY 23bis - Alias su Tabelle, e città di lavoro di tutti i dipendenti I.,, D. AS I, AS D WHERE I. = D.; Anna Giuseppe Mario Bianco Bianchi Neri QUERY 24 - Variabili, e Stipendio di chi guadagna più di Neri. In questo caso la query corrisponde ad un confronto da effettuare all interno della stessa tabella. Dobbiamo assegnare due nomi (ALIAS) differenti alla stessa tabella, in modo da poter confrontare elementi appartenenti alla stessa tabella come se fossero due tabelle differenti. # 11 Prof Alberto Postiglione Università Salerno # 12 Prof Alberto Postiglione Università Salerno 2

WHERE QUERY 24 - Variabili I2., I2., I2.[] I1, I2 I1. = AND I1. = Neri AND I2.[] > I1.[] 73.000,00 46.000,00 OPERATORI AGGREGATI E INTERROGAZIONI CON RAGGRUPPAMENTO Atzeni, cap. 4.2.3, 4.2.4 # 13 Prof Alberto Postiglione Università Salerno Operatori Aggregati Operatori Aggregati Una Query normalmente è applicata all intera tabella, ma ne analizza una riga per volta, estraendo tutte quelle che verificano le condizioni della WHERE Es: Si vuole conoscere il numero di matricola di tutti gli studenti che abitano a Napoli. Se ci sono 100 studenti di Napoli, la risposta sarà una tabella con 100 righe # 15 Una Query aggregata estrae un risultato che dipende da un insieme di righe. Il risultato è un valore che non è posseduto da una riga in particolare Es: Si vuole conoscere il numero di studenti che abitano a Napoli Se ci sono 100 studenti di Napoli, la risposta sarà il numero 100. Prof Alberto Postiglione Università Salerno Le Queries con operatori aggregati sono delle estensioni delle normali interrogazioni Un interrogazione con un operatore aggregato viene eseguita in 2 momenti successivi: 1. (Selezione di righe) Viene prima eseguita la query considerando le parti e WHERE, procedendo una riga alla volta selezionando quelle che rispondono alle condizioni della clausola Where. 2. (Applicazione della funzione sulle righe selezionate) Sulla tabella risultante viene poi applicato l operatore aggregato # 16 Prof Alberto Postiglione Università Salerno QUERY 25 - COUNT QUERY 25bis - COUNT Numero di Dipendenti del Count (*) WHERE = "; 2 Numero di Dipendenti del (metodo alternativo) WHERE Count ([]) = "; 2 # 17 Prof Alberto Postiglione Università Salerno # 18 Prof Alberto Postiglione Università Salerno 3

# 19 QUERY 26 - COUNT ATTENZIONE: Count (<nome campo>) conta il numero di righe con valore NON NULLO del campo specificato, che non necessariamente corrisponde al numero di righe selezionate tramite la clausola WHERE Numero totale di Dipendenti Count (*) 8 Prof Alberto Postiglione Università Salerno # 20 QUERY 26 bis e 26ter - COUNT Numero totale di Dipendenti Alternativa num. 1 (26bis) Count () Alternativa num. 2 (26ter) - ERRATA Count (Ufficio) 8 6 Ogni Dipendente (sia impiegato che dirigente) ha un Ci sono alcuni dipendenti che non sono assegnati ad un ufficio (i dirigenti) Prof Alberto Postiglione Università Salerno Operatori Aggregati QUERY 27 - SUM FUNZIONI di aggregazione su un insieme di tuple COUNT SUM AVG Ammettono come argomento solo espressioni numeriche o di tempo MAX MIN Richiedono che sull espressione sia definito un ordinamento (per cui si possono applicare anche a Caratteri, ad esempio) Somma degli stipendi del Sum ([]) AS [Stipendio Totale] WHERE =""; Stipendio Totale Si noti che per inserire uno spazio bianco nel nome di un campo bisogna racchiudere l intero nome tra una coppia di parentesi quadre. # 21 Prof Alberto Postiglione Università Salerno # 22 Prof Alberto Postiglione Università Salerno QUERY 28 - MIN, MAX, AVG Stipendi minimo, massimo e medio fra quelli di tutti i Dipendenti Min ([]), Max ([]), Avg ([]) 36.000,00 Expr1001 Expr1002 50.625,00 QUERY 29 MAX su testo del Dipendente che, in ordine alfabetico, è in ultima posizione Max () # 23 Prof Alberto Postiglione Università Salerno # 24 Prof Alberto Postiglione Università Salerno 4

QUERY 30 - Aggregati su 2 tabelle Nomi di Attributi e operatori aggregati Stipendio più alto fra quelli dei Dipendenti che lavorano in un con sede a WHERE Max ([]),. =. AND.='', e Stipendio del Dipendente che guadagna più di tutti NON E POSSIBILE mischiare nella clausola nomi di attributi con operatori aggregati perchè Il risultato di una è normalmente un insieme di righe Un operatore aggregato (Count, Sum, ) estrae un unico valore da un insieme di righe già selezionato dalla. Nelle queries precedenti abbiamo sempre usato operatori aggregati OPPURE nomi di campi! Se in una Query c è un qualsiasi operatore aggregato (Sum, Count, ) non abbiamo utilizzato nomi di campi presi singolarmente, se non come argomenti dell operatore # 25 Prof Alberto Postiglione Università Salerno # 26 Prof Alberto Postiglione Università Salerno Nomi di Attributi e operatori aggregati Non è cioè possibile scrivere la query un questo modo:,, Max (Stipendio) ; Questa query NON INDIVIDUA lo stipendio massimo e poi seleziona il nome e il cognome dell impiegato corrispondente. Quando incontreremo le Queries Innestate (Subqueries) vedremo come sarà possibile rispondere a questa interrogazione Raggruppamento Gli esempi visti fino ad ora operano su tutte le righe di una tabella A volte è necessario applicare un operatore aggregato a sottoinsiemi di righe raggruppati in base ad un valore comune presente in uno o più campi E cioè necessario ripartire le righe in sottoinsiemi omogenei ed applicare gli operatori aggregati ai singoli gruppi. # 27 Prof Alberto Postiglione Università Salerno # 28 Prof Alberto Postiglione Università Salerno Raggruppamento Basta aggiungere in coda alla --WHERE la clausola GROUP BY GROUP BY A 1, A k HAVING Ψ A 1, A k è un insieme di campi che devono comparire anche nella clausola Ψ è una clausola opzionale che si applica ai gruppi (permette di selezionarne solo un sottoinsieme) La query raggrupperà tutte le righe che presentano gli stessi valori sui campi A 1, A k QUERY 31 - GROUP BY Per ogni si vuole conoscere il totale degli stipendi pagati, Sum([]) AS Totale GROUP BY Totale 153.000,00 82.000,00 # 29 Prof Alberto Postiglione Università Salerno # 30 Prof Alberto Postiglione Università Salerno 5

Come funziona una query con GROUP BY 1) Viene prima eseguita la query come se non ci fosse la clausola GROUP BY, Nell esempio è come se venisse effettuata la query(31bis), [],00 36.000,00,00 73.000,00 46.000,00 Come funziona una query con GROUP BY 2) Le righe vengono poi raggruppate mettendo assieme tutte quelle con uguale valore degli attributi che compaiono nella clausola GROUP BY Nell esempio il valore in base a cui raggruppare è il nome del 73.000 80.000 36.000 46.000 # 31 Prof Alberto Postiglione Università Salerno # 32 Prof Alberto Postiglione Università Salerno Come funziona una query con GROUP BY 3) Viene applicato l operatore aggregato ad ognuno dei sottoinsiemi individuati Nel nostro esempio, l operatore è SUM e si applica ad ognuno dei 4 sottoinsiemi individuati 73.000 80.000 36.000 46.000 Totale 153.000,00 82.000,00 GROUP BY - HAVING La lista dei campi della clausola deve essere un sottoinsieme di quella della clausola GRUOP BY. Se siamo interessati solamente ad alcuni dei sottoinsiemi utilizziamo il predicato HAVING # 33 Prof Alberto Postiglione Università Salerno # 34 Prof Alberto Postiglione Università Salerno QUERY 32 - HAVING GROUP BY - HAVING e spesa complessiva dei Dipartimenti che spendono più di 100.000 euro in stipendi, Sum ([]) GROUP BY HAVING Sum([])>100000 Expr1001 153.000,00 Nota: HAVING può anche essere usato senza GROUP BY. In questo caso la tabella si considera come un unico grande raggruppamento. HAVING presenta espressioni che contengono campi solo se questi sono argomenti di operatori aggregati # 35 Prof Alberto Postiglione Università Salerno # 36 Prof Alberto Postiglione Università Salerno 6

QUERY 33 - HAVING Tutti i Dipartimenti in cui la media degli stipendi dei dipendenti che lavorano nell ufficio 20 è superiore a 25.000 euro WHERE Ufficio = 20 GROUP BY HAVING Avg([])>25000; # 37 Prof Alberto Postiglione Università Salerno 7