SQL QUERY: Le interrogazioni del database

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

Lezione 6. Algebra e Calcolo Relazionale

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie:

BASI DATI: algebra relazionale

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

Operazioni Relazionali. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

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

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Basi di dati (database)

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

Structured Query Language

Parte III. L algebra relazionale

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

PIL Percorsi di Inserimento Lavorativo

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

Interrogazioni nidificate

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

L ALGEBRA RELAZIONALE (2) Lezione del 28/10/2008 Prof. Mario Bochicchio

Basi di Dati: Corso di laboratorio

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

Le basi di dati. Base di dati = dati + DBMS.

<Nome Tabella>.<attributo>

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

Modulo 8 I data base Unità 5 Le Query

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Microsoft Access. Obiettivo della lezione. Useremo Access per interrogare una base di dati (query)

Algebra relazionale e interrogazioni

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"

ALGEBRA RELAZIONALE. L algebra relazionale

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

Elena Baralis 2007 Politecnico di Torino 1

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

Sommario. Introduzione... 13

Il modello relazionale dei dati. modello relazionale 1

Precorsi di matematica

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

Access. P a r t e t e r z a

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

Basi di Dati: Corso di laboratorio

Sperimentazioni di Fisica I mod. A Lezione 4

DISPENSA ACCESS (OFFICE 2010 BETA)

Operatori di base. σ F (r) = {t t r. F(t) = true} SELEZIONE σ F (r)

Alessandra Raffaetà. Esercizio: Cinema

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

SQL - Structured Query Language

RELAZIONI E BASI DI DATI

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

01 - Elementi di Teoria degli Insiemi

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

Operazioni sui database

01 - Elementi di Teoria degli Insiemi

Algebra relazionale: operazioni

Ordinare dati. Microsoft Access. Ordinare dati. Ordinare dati. Ordinare dati. Ordinare dati. Query (II), filtri. L ordinamento crescente:

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

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

Filtri. Microsoft Access. Filtri. Filtri

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO Regole di derivazione

Corso di Informatica

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Manuale SQL. Manuale SQL - 1 -

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003

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

Database 3 a puntata. Pablo Genova I. I. S. Angelo Omodeo Mortara Indirizzo Tecnico-Economico A. S.

CORSO ACCESS 2000 PARTE VI

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

DataBase Management System - DBMS

Elena Baralis 2007 Politecnico di Torino 1

ESERCITAZIONI ACCESS

Scritto da Maria Rispoli Domenica 09 Gennaio :07 - Ultimo aggiornamento Martedì 01 Marzo :11

Interrogazioni nidificate

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

Scritto da Maria Rispoli Domenica 09 Gennaio :07 - Ultimo aggiornamento Martedì 01 Marzo :11

LA CODIFICA DELL INFORMAZIONE

Informatica per Statistica Riassunto della lezione del 06/12/2013

Relazioni. Microsoft Access. Relazioni. Relazioni

Equivalenza di Espressioni Algebriche

Il modello Relazionale.

Tabelle esempio: Impiegato/Dipartimento

Il Modello Concettuale Enità-Relazione (ER)

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

01 - Elementi di Teoria degli Insiemi

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

Il linguaggio SQL: query innestate

Esercitazione 3 SQL 2

Progetto Matematica in Rete - Insiemi - Insiemi

Ripasso Concetti Pratica in Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 3

MODULO 2. Query normali e parametriche Query di:

User Tools: DataBase Manager

PORTE LOGICHE. Si effettua su due o più variabili, l uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1.

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

Università degli Studi del Piemonte Orientale Facoltà di Scienze M.F.N. Precorso di Matematica APPUNTI (preparati da Pier Luigi Ferrari)

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

2.2a: MODELLO RELAZIONALE. (1 Struttura)

Le basi di dati. Lez. 3: Il Modello Relazionale

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

1 Combinazioni lineari.

La strutturazione dei database: Il modello relazionale (3/3)

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Sistemi di Elaborazione delle Informazioni (C.I. 15) Basi di dati Introduzione teorica

Transcript:

Appunti della lezione di Database del 20 ottobre 2016 (mattina) Studenti: D Amuri Giuseppe, De Luca Federico Professore: Mario Bochicchio SQL QUERY: Le interrogazioni del database Per effettuare un interrogazione del database bisogna avere una procedura sistematica che, dato un problema, ci consente di trovare una soluzione e verificarla in diversi casi di test in modo da appurare che sia una soluzione generale e non particolare. Esempio Una lista di clienti è una query sull entità di tipo di cliente, ma non ci basta una sola query perché avremmo bisogno di vedere i clienti in ordine di nome, di luogo, di residenza, di data di nascita, ecc. Le query devono rispondere ottimamente qualunque sia il criterio di filtraggio e devono essere robuste: ad esempio esiste la possibilità di, non conoscendo username e password, ma inserendo righe di codice in modo opportuno, poter entrare in un database (SQL INJECTION). Bisogna quindi fare attenzione nel momento in cui si scrive una query perché qualcuno potrebbe iniettarvi dei pezzi aggiuntivi. La connessione tra le pagine e il database avviene attraverso un certo numero di query: questo codice deve essere robusto, verificato, sviluppato attraverso procedure precise e rigorose basate sul concetto dell algebra relazionale. Le query sono formule matematiche scritte in algebra relazionale. Il modo migliore per scrivere una query è capire l algebra che c è dietro.

Uno schema viene trasformato in tabella in base al tipo di cardinalità della relazione. Queste tabelle d ora in poi saranno chiamate relazioni. L algebra relazionale è un algebra insiemistica in cui gli insiemi sono rappresentati non da diagrammi di Venn, ma da tabelle, in questo senso si dice che un database è un insieme di relazioni (R i ) e vincoli o constrains ( C j ): DB = {R i ; C j } I vincoli sono una serie di regole che utilizzeremo per far sì che i nostri dati restino coerenti, cioè che il database resti un database. Le caratteristiche principali sono: assenza di ridondanza, minima quantità di NULL, unicità di rappresentazione dell informazione, ecc. L oggetto di base dell algebra relazionale, come detto, è la relazione o tabella. Oltre alle relazioni abbiamo un certo numero di operatori: come nell algebra ci sono i numeri {1,2,3, } e li combiniamo tra di loro attraverso degli operatori {+,, }, così in quella relazionale esistono operatori unari e binari. Un ulteriore modello è quello dell algebra booleana dove esistono operatori unari e binari (ad esempio l operatore not applicato ad un bit 0 fornisce come risultato 1, mentre and applicato a 1 e 0 fornisce 0). ALGEBRA RELAZIONALE Tutte le tabelle che vengono fuori dall algebra relazionale sono calcolate, cioè vengono create come il risultato di un espressione, pertanto sono solo viste, non vengono memorizzate e non occupano spazio. Operatori unari Per quanto riguarda gli operatori unari dell algebra relazionale: 1. Il primo tra tutti gli operatori che ci interessano è quello di select. Si scrive come: σ <c> (R) Questo operatore estrae o seleziona dalla tabella R una nuova tabella fatta dalle stesse colonne della tabella R e dalle sole righe che soddisfano la condizione C (fare riferimento cap. 4 e cap. 8 del libro). Esempio Seleziona σ <CLIENT.CITY="LECCE"> (CLIENT). Cosa viene fuori da questa espressione? Avremo una nuova tabella chiamata R avente le stesse colonne della tabella clienti e un sottoinsieme delle righe.

2. Il secondo operatore è project, così come la select riduce il numero di righe, la project riduce il numero di colonne estraendone solo alcune. Si scrive come: π <col1, col2, > (R) Questo operatore prende un numero selezionato o ridotto delle colonne della tabelle di partenza. 3. Il terzo operatore è rename, serve a rinominare determinati attributi. Questo produce una nuova tabella in cui le colonne si chiamano in un altro modo. Si scrive come: ρ <col1 as new1, col2 as new2, > (R) Operatori binari Il secondo gruppo di operatori sono di tipo insiemistico. Questi richiedono che gli oggetti siano union-compatible, cioè che abbiano le stesse colonne o che si chiamino nella stessa maniera. Le operazioni che conosciamo sono: 1. Unione: denotata con R S. Posso fare quest operazione solo se la prima e la seconda tabella hanno le stesse colonne, ciò è garantito dalla union-compatible. Lo loro unione è una nuova tabella virtuale in cui ci sono tutte le righe della prima tabella e tutte quelle della seconda. 2. Intersezione: denotata con R S. Se ho due righe con gli stessi nomi di colonna, fare l intersezione degli elementi presenti sia in R che in S significa selezionare gli elementi comuni. La chiave primaria deve garantire che ogni riga sia univocamente definita dato che la teoria dell algebra relazionale dice che tutti i dati devono essere diversi. 3. Differenza: denotata con R S = R (R S). È il set di tutti gli elementi che sono inclusi in R ma non in S. 4. Prodotto cartesiano: R S. Questa operazione genera l insieme di tutte le possibili coppie T {(r i, s j )}. Immaginiamo che R ed S siano dei concetti o idee, la capacità di creare corrispondenze tra queste genera dei nuovi concetti applicativi. Si intuisce, però, che l insieme di tutte le coppie possibili è troppo grande (alcune non hanno senso e non servono), perciò eliminiamo le connessioni inutili utilizzando l operazione di join. 5. Join: R <C> S = σ <C> (R C) è l operazione chiave dei database. È ciò che facciamo quando scriviamo SELECT, FROM, WHERE. La selezione è la possibilità di estrarre solo alcune colonne da una tabella potendo esprimere la condizione. In altre parole fare la join di due tabelle dal punto di vista dell algebra relazionale significa attaccare tutti gli elementi corrispondenti.

Esempio Join di due tabelle: Questa notazione senza righe è ciò che d ora in poi chiameremo modello relazionale (insieme di tabelle più insieme di vincoli), in cui specifichiamo i vincoli di chiave primaria (sottolineata), di chiave esterna (ID_c) e vincoli di integrità referenziale (freccia celeste). Operatore Join Analizziamo l operatore join attraverso uno scenario: supponiamo di avere Mario Rossi con indirizzo Lecce e Giorgio Bianchi con indirizzo Milano, nel nostro autosalone abbiamo la macchina 1 che è una Fiat Tipo che ha il prezzo di 10mila. Inizialmente nel DB non c è scritto nulla ma nel momento in cui viene venduta ci aggiungiamo le informazioni riguardanti Mario Rossi con la data di acquisto. Fare il prodotto cartesiano delle due tabelle significa avere tutte le combinazioni o coppie possibili. Se adesso ci facciamo sopra una selezione sulla condizione di join, cioè vogliamo selezionare solo le righe Prodotto.ID_c = Cliente.ID_c vedremo solo le coppie che soddisfano la corrispondenza. La join è una nuova tabella, che per il momento indichiamo come Cliente-Prodotto, contenente tutte le colonne del cliente c1, c2, c3 e tutte le colonne del prodotto p1, p2, p3 che soddisfano la condizione di join, ovvero che la chiave esterna di una tabella deve essere uguale alla corrispondente chiave primaria dell altra tabella (se non ho venduto nessuna macchina la tabella di join sarà vuota).

In algebra relazionale l operazione di join è scritta in questo modo: Cliente <Prodotto.ID_c=Cliente.ID_c> (Prodotto) Unire le tabelle significa prendere le coppie degli elementi corrispondenti. Come si scrive questa cosa all interno di una select? Possiamo ad esempio scrivere: SELECT FROM WHERE Cliente.nome, Prodotto.nome Cliente JOIN Prodotto ON Prodotto.ID_c = Cliente.ID_c 1 (significa di prendili tutti), oppure Prodotto.nome = Fiat Tipo (questa è un ulteriore condizione per cercare tutti i clienti che hanno comperato una fiat tipo). Vediamo ora la join dal punto di vista insiemistico:

Tipi di join Grazie a questi concetti di base dell algebra relazionale (più altri che aggiungeremo nelle lezioni successive) possiamo effettuare qualunque tipo di query. Tramite l algebra relazionale se l informazione è nel database possiamo estrarla grazie a questi operatori. Potremo aggiungere, inoltre, alcune varianti dell operazione di join che non sono strettamente necessarie ma sono utili: 1. Natural join { } è l operazione che si fa quando all interno di una condizione si specifica esattamente cosa è scritto nel vincolo di integrità referenziale, cioè è la join tra due tabelle quando esiste solo una colonna con lo stesso nome. 2. Theta join {θ} è l operazione che generalizza il concetto di operatore relazionale, cioè quelli che mettono in relazione due termini ( <,, ==,, >). Quest operazione non si limita alla join (o equi-join) che verifica solo l uguaglianza tra gli elementi, ma usa un operatore relazionale diverso per ottenere criteri di ordinamento più ampi (mette in confronto due tabelle per vedere tutti gli elementi a seconda della particolare relazione considerata). Ulteriori varianti interessanti dell operatore join, dal punto di vista insiemistico, sono: 1. Left outer join {= } è l operazione che prende tutti gli elementi dell insieme R e solo i corrispondenti dell insieme S. 2. Right outer join { =} è l operazione che prende tutti gli elementi dell insieme S e solo i corrispondenti dell insieme R. 3. Full outer join {= =} è l operazione che prende tutti gli elementi di entrambi gli insiemi, se ci sono delle corrispondenze le mette sulla stessa riga, altrimenti troveremo un NULL (a destra o a sinistra, mai da entrambe le parti). Ricapitolazione: Select considera solo alcune righe; Project considera solo alcune colonne; Unione, intersezione e differenza sono i medesimi concetti elementari di teoria degli insiemi; Join mette in relazioni oggetti che stanno in tabelle diverse, crea una nuova tabella con tutte le colonne di entrambe le tabelle inziali ma solo le righe dove è presente una corrispondenza. Questa è l operazione principe dell algebra relazionale.