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

Documenti analoghi
Queries su più tabelle

<Nome Tabella>.<attributo>

Tabelle esempio: Impiegato/Dipartimento

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

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

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

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

QL (Query Language) Alice Pavarani

Structured Query Language

Corso sul linguaggio SQL

SQL: le funzioni di aggregazione

Tabelle esempio: Impiegato/Dipartimento

Select From Where...

Interrogazioni in SQL SQL. Interrogazioni in SQL. Sintassi. Significato dell interrogazione. Notazione

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

IL LINGUAGGIO SQL LE BASI

Linguaggio SQL seconda parte

Sistemi di Elaborazione delle Informazioni

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

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

A.A. 2018/2019. Funzioni di Aggregazione e Raggruppamenti in SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Interrogazioni in SQL SQL. Interrogazioni in SQL. Cenni sull implementazione

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

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

Corso di Basi di Dati

SQL - Structured Query Language

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - Funzioni Aggregate e GROUP BY

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

Interrogazioni semplici

Lezioni di Laboratorio sui Data Base

Basi di Dati. S Q L Lezione 2

Interpretazione delle query nidificate

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

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

Caratteristiche dei linguaggi per Database

Il linguaggio SQL: raggruppamenti

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

Corso di. Basi di Dati I. 8. Esercitazioni in SQL: Interrogazioni nidificate

Filtri. Microsoft Access. Filtri. Filtri

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Basi di dati - Laboratorio

SQL /10/2016 Basi di dati - SQL 1

SQL - Sottointerrogazioni correlate

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"

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

OPERATORI LOGICI: AND, OR, NOT

Manuale SQL. Manuale SQL - 1 -

Interrogazioni complesse. SQL avanzato 1

Basi di Dati: Corso di laboratorio

Operatori aggregati. Gli operatori di aggregazione NON sono rappresentabili in Algebra Relazionale. conteggio, minimo, massimo, media, somma

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

Il linguaggio SQL - Interrogazioni -

Basi di dati I 28 gennaio 2014 Compito A Tempo a disposizione: un ora e quarantacinque minuti.

Corso sul linguaggio SQL

ALGEBRA RELAZIONALE. L algebra relazionale

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

Il linguaggio SQL: raggruppamenti

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

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

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

SQL - Sottointerrogazioni

SQL Esercizi DML Blocco 1

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

ISBN Titolo CasaEd AnnoEd

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

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

Le query di comando e di servizio in Access

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

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Basi di Dati: Corso di laboratorio

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

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

ESERCITAZIONI ACCESS

Corso di Basi di Dati A.A. 2015/2016

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

SQL - Structured Query Language

Operatori aggregati. Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella

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

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

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

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Corso di Informatica Medica

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio

Laboratorio di Basi di Dati

Il linguaggio SQL: query innestate

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

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

Basi di Dati: Corso di laboratorio

8 SQL : Check, Asserzioni,Viste

Il linguaggio SQL: query innestate

Alessandra Raffaetà. Qualificazione: notazione con il punto

Transcript:

: SQL (3) Tabelle multiple, variabili, operatori di aggregazione QUERIES SU PIU TABELLE Queries su più tabelle 17 mar 010 Dia 3 17 mar 010 Dia 4 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 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 Per avere la prova basta eseguire la seguente query: *, Dipartimento; 17 mar 010 Dia 5 17 mar 010 Dia 6 I1 IMPIEGATO DIPARTIMENTO D1 D Il numero totale di righe è il prodotto del numero delle righe presenti nelle tabelle input, cioè 40, in quanto ha 8 righe Dipartimento ha 5 righe. D3 I D4 D5 Il numero totale di colonne è la somma del numero delle colonne nelle tabelle input, cioè 9, in quanto ha 6 colonne Dipartimento ha 3 colonne. 1

Operatore punto Per indicare gli attributi di ogni tabella si usa la notazione < Tabella>.<attributo> 17 mar 010 Dia 7 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 17 mar 010 Dia 8 Tabelle esempio: /Dipartimento (, Cognome, Dipartimento, Ufficio, Stipendio annuo, Città) Cognome Dipartimento Ufficio Stipendio annuo Città Anna Bianco Amministrazione 75 40.000,00 Venezia Bianchi Produzione 0 36.000,00 Torino Direzione Neri Distribuzione 16 45.000,00 Napoli Giuseppe Verdi Amministrazione 0 40.000,00 Roma Lorenzo Gialli Direzione 73.000,00 Genova Marco Produzione 0 46.000,00 Roma Mario Amministrazione 10 45.000,00 Dipartimento (, Indirizzo, Città) Dipartimento Indirizzo Città Amministrazione Via Tito Livio, 7 Direzione Via Tito Livio, Distribuzione Via Segre, 9 Roma Produzione P.le Lavater, 3 Torino Ricerca Via Venosa, 6 QUERY 3 - Tabelle Multiple 17 mar 010 Dia 9, Cognome e città di lavoro di tutti gli impiegati.,.cognome, Dipartimento.Città, Dipartimento WHERE.Dipartimento = Dipartimento.; NOME e COGNOME appartengono alla tabella IMPIEGATO Anna Giuseppe Lorenzo Marco Mario Cognome Bianco Bianchi Neri Verdi Gialli Città Torino Roma Torino CITTA appartiene alla tabella DIPARTIMENTO USO DI VARIABILI Atzeni, cap. 4.. Uso di ALIAS (Nomi alternativi) ALIAS: nome alternativo dato ad una tabella 17 mar 010 Dia 11 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) 17 mar 010 Dia 1 QUERY 3bis - Alias su Tabelle, Cognome e città di lavoro di tutti i dipendenti I., Cognome, D.Città AS I, Dipartimento AS D WHERE I.Dipartimento = D.; Cognome Città Anna Bianco Bianchi Torino Neri Roma Giuseppe Verdi Lorenzo Gialli Marco Torino Mario

QUERY 4 - Variabili 17 mar 010 Dia 13 QUERY 4 - Variabili 17 mar 010 Dia 14, Cognome 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. I., I.Cognome, I.[Stipendio annuo] I1, I WHERE I1. = AND I1.Cognome = Neri AND I.[Stipendio annuo] > I1.[Stipendio annuo] Lorenzo Marco Cognome Gialli Stipendio annuo 73.000,00 46.000,00 Operatori di AGGREGAZIONE Atzeni, cap. 4..3, 4..4 Operatori Aggregati 17 mar 010 Dia 16 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 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 il numero di studenti che abitano a Napoli Se ci sono 100 studenti di Napoli, la risposta sarà il numero 100. Operatori Aggregati 17 mar 010 Dia 17 Le Queries con operatori aggregati sono delle estensioni delle normali interrogazioni Un interrogazione con un operatore aggregato viene eseguita in 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..(Applicazione della funzione sulle righe selezionate) Sulla tabella risultante viene poi applicato l operatore aggregato 17 mar 010 Dia 18 QUERY 5 - COUNT Numero di Dipendenti del Dipartimento Produzione Count (*) WHERE Dipartimento= Produzione"; 3

17 mar 010 Dia 19 QUERY 5bis - COUNT QUERY 6 - COUNT 17 mar 010 Dia 0 Numero di Dipendenti del Dipartimento Produzione (metodo alternativo) WHERE Count ([Cognome]) Dipartimento= Produzione"; Numero di tutti i Dipendenti Count (*) 8 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 QUERY 6 bis e 6ter - COUNT Numero totale di Dipendenti Alternativa num. 1 (6bis) Count (Cognome) Alternativa num. (6ter) - ERRATA Count (Ufficio) 8 6 17 mar 010 Dia 1 Ogni Dipendente (sia impiegato che dirigente) ha un Cognome Ci sono alcuni dipendenti che non sono assegnati ad un ufficio (i dirigenti) Riepilogo Operatori Aggregati 17 mar 010 Dia 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) QUERY 7 - SUM Somma degli stipendi del Dipartimento Amministrazione Sum ([Stipendio annuo]) AS [Stipendio Totale] WHERE Dipartimento="Amministrazione"; 17 mar 010 Dia 3 QUERY 8 - MIN, MAX, AVG 17 mar 010 Dia 4 Stipendi minimo, massimo e medio fra quelli di tutti i Dipendenti Min ([Stipendio annuo]), Max ([Stipendio annuo]), Avg ([Stipendio annuo]) Stipendio Totale 15.000,00 36.000,00 Expr1001 Expr100 50.65,00 Si noti che per inserire uno spazio bianco nel nome di un campo bisogna racchiudere l intero nome tra una coppia di parentesi quadre. 4

QUERY 9 MAX su testo 17 mar 010 Dia 5 Cognome del Dipendente che, in ordine alfabetico, è in ultima posizione Max (Cognome) Verdi QUERY 30 - Aggregati su tabelle Stipendio più alto fra quelli dei Dipendenti che lavorano in un Dipartimento con sede a WHERE 17 mar 010 Dia 6 Max ([Stipendio annuo]), Dipartimento Dipartimento. =.Dipartimento AND Dipartimento.Città='' 17 mar 010 Dia 7 Nomi di Attributi e operatori aggregati, Cognome 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 17 mar 010 Dia 8 Nomi di Attributi e operatori aggregati Non è cioè Cognome, possibile, scrivere Max la (Stipendio) query un questo modo: ; 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 5