Interrogare una base di dati: algebra relazionale e...

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

Transcript of Interrogare una base di dati: algebra relazionale e...

Page 1: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Interrogare una base di dati:

algebra relazionale e SQL

Savino CastagnozziGiorgio Macauda

Michele MeomartinoSalvatore Picerno

Massimiliano Sartor

Page 2: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Contesto didattico

� Il seguente materiale didattico è stato realizzato allo scopo di illustrare le modalità di interrogazione di una base di dati, attraverso l’analisi degli aspetti principali dell’Algebra relazionale e l’uso del linguaggio SQL agli studenti appartenenti ad una classe V ITI indirizzo informatico.

� Prerequisiti: conoscenza del Modello relazionale, del concetto di relazione, di istanza di relazione, delle basi dell’insiemistica.

Page 3: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Elenco degli argomenti (1)

� Richiamo del concetto di relazione

� Introduzione all’algebra relazionale

� Elenco degli operatori relazionali

� L’operatore di proiezione

� La proiezione senza duplicati

� L’operatore di selezione

� La composizione di operatori

� Gli operatori di intersezione, unione e differenza

Page 4: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Elenco degli argomenti (2)

� Il prodotto cartesiano

� L’operatore di giunzione (join)

� Cenni sull’outer join

� Introduzione al linguaggio SQL

� I sottolinguaggi di SQL

� Il comando SELECT

� Analogie con gli operatori σ e π� Analogie con il prodotto cartesiano e join

� Il raggruppamento ( GROUP BY )

� La clausola HAVING

Page 5: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Pianificazione del modulo

Questo ciclo di lezioni verrà presentato a circa metà del I quadrimestre, dopo aver concluso la progettazione concettuale.

La durata prevista per l’algebra relazionale è di sette lezioni per un totale di dodici ore.

La durata prevista per SQL è di cinque lezioni per un totale di nove ore.

Sono esclusi da questo conteggio le ore di laboratorio (8) e di verifica (4).

Page 6: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Richiamo del concetto di Relazione

� Un’istanza di relazione è un insieme di elementi omogenei complessi (tuple)

� Esempio:

●(Rossi, 71523, PI, 1980)

●(Bianchi, 67459, LU, 1981)

●(Bianchi, 79856, LI, 1980)

●(Verdi, 75649, PI, 1981)

●(Carli, 66649, PI, 1981)

Page 7: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Algebra Relazionale

� Un insieme di operatori che

◦ sono definiti sulle relazioni

◦ producono come risultato una relazione

� Gli operatori possono essere combinati per formare espressioni complesse

� La loro esecuzione è di tipo procedurale

Page 8: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Operatori dell’Algebra Relazionale

I principali operatori primitivi sono:

� Unione;

� Intersezione;

� Differenza;

� Proiezione;

� Selezione;

� Prodotto cartesiano.

Page 9: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Proiezione: l’operatore π

� L’operatore di proiezione applicato ad una relazione R mi restituisce tutti gli elementi di R, considerandone però solo gli attributi specificati da π

Πnome,nascita

Page 10: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Una visione tabellare

Nome Nascita

Rossi 1980

Bianchi 1981

Bianchi 1980

Verdi 1981

Carli 1981

Πnome,nascita

Nome Matricola Provincia Nascita

Rossi 71523 PI 1980

Bianchi 67459 LU 1981

Bianchi 79856 LI 1980

Verdi 75649 PI 1981

Carli 66649 PI 1981

Page 11: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Proiezione: gestione duplicati

Πnome

Nome Matricola Provincia Nascita

Rossi 71523 PI 1980

Bianchi 67459 LU 1981

Bianchi 79856 LI 1980

Verdi 75649 PI 1981

Carli 66649 PI 1981

Nome

Rossi

Bianchi

Verdi

Carli

Page 12: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Selezione: l’operatore σ

� L’operatore di selezione applicato ad una relazione R mi restituisce solo gli elementi di R che soddisfano la condizione specificata da σ

σnascita=1981

●(Bianchi, 67459, LU, 1981)

●(Verdi, 75649, PI, 1981)

●(Carli, 66649, PI, 1981)

Page 13: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Una visione tabellare

Nome Matricola Provincia Nascita

Rossi 71523 PI 1980

Bianchi 67459 LU 1981

Bianchi 79856 LI 1980

Verdi 75649 PI 1981

Carli 66649 PI 1981

Nome Matricola Provincia Nascita

Bianchi 67459 LU 1981

Verdi 75649 PI 1981

Carli 66649 PI 1981

σnascita=1981

Page 14: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Composizione di operatori

Gli operatori possono essere composti:

●(Bianchi, 1981)

●(Verdi, 1981)

●(Carli, 1981)

πnome,nascita σnascita=1981

Page 15: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Una visione tabellare

Nome Nascita

Bianchi 1981

Verdi 1981

Carli 1981

πnome,nascita σnascita=1981

Nome Matricola Provincia Nascita

Rossi 71523 PI 1980

Bianchi 67459 LU 1981

Bianchi 79856 LI 1980

Verdi 75649 PI 1981

Carli 66649 PI 1981

Page 16: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Il linguaggio SQL

� SQL è un linguaggio di interrogazione per database progettato per

◦ leggere,

◦ modificare

◦ gestire dati memorizzati in un sistema basato sul modello relazionale

◦ creare e modificare schemi di database

◦ creare e gestire strumenti di controllo ed accesso ai dati.

Page 17: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

I linguaggi “dentro” SQL

� DDL◦ (Data Definition Language, linguaggio di definizione dei dati).

◦ Consente di descrivere la struttura delle tabelle e di tutti gli elementi di supporto (come indici, vincoli, trigger, viste ecc.).

◦ Viene utilizzato per realizzare lo schema logico del database.

� DML ◦ (Data Manipulation Language, linguaggio per la manipolazione dei dati).

◦ Operazioni di inserimento, modifica e cancellazione dei dati.

� DCL ◦ (Data Control Language, linguaggio di controllo dei dati).

◦ Limiti sui dati (permessi di accesso, vincoli di integrità).

� QL ◦ (Query Language, linguaggio di interrogazione)

◦ Interrogare il database al fine di individuare i dati che corrispondono ai parametri di ricerca dell’utente.

Page 18: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

SELECT

� Per estrarre informazioni dalla base di dati si utilizza l’istruzione SELECT.

� La sintassi completa dell’istruzione SELECT è complessa perché l’istruzione implementa varie funzionalità.

Page 19: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

SELECT (proiezione)SELECT [DISTINCT]

<Campo1> [AS “Alias1”],

<Campo2> [AS “Alias2”],

<CampoN> [AS “AliasN”]

FROM <Tabella1>, <Tabella2>, … <TabellaN>

�DISTINCT - Questa opzione permette di ottenere solo tupledifferenti tra loro.

�<Campo> - Elenco dei campi da estrarre.

�<Tabella> - Tabella in cui sono contenuti i campi da estrarre.

�“Alias” - Etichetta da assegnare al campo nella selezione (facoltativa).

�* Sostituendolo ai nomi dei campi implica la selezione di tutti i campi della tabella specificata.

Page 20: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

SELECT (restrizione)� Per estrarre informazioni dal DB, limitate da una condizione:

SELECT [DISTINCT]

<Campo1>, <Campo2>, … <CampoN>

FROM <Tabella>

[WHERE <Condizione>]

� <Condizione> - Indica la condizione che devono soddisfare le tuple estratte. All’interno di questa espressione è possibile specificare:

� nomi dei campi della tabella;

� operatori di confronto, come =, <>, >, >=, <=, <;

� operatori logici come NOT, AND, OR;

� l’operatore LIKE;

� la parola chiave IS NULL o IS NOT NULL.

Page 21: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Funzioni di aggregazione sui dati

� COUNT([DISTINCT] <Campo>) ◦ Conta il numero di elementi del campo indicato.

� MIN(<Campo>) ◦ Restituisce il valore minimo del campo indicato.

� MAX(<Campo>) ◦ Restituisce il valore massimo del campo indicato.

� SUM([DISTINCT] <Campo>) ◦ Calcola e restituisce la somma dei valori presenti

nel campo indicato.

� AVG([DISTINCT] <Campo>) ◦ Calcola e restituisce la media aritmetica dei

valori presenti nel campo indicato.

Page 22: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Raggruppamento

� Spesso si ha necessità in una query di avere contemporaneamente dati aggregati e dati non aggregati

� GROUP BY raggruppa le righe sulla base del valore di uno o più attributi, in genere per effettuare calcoli aggregati su dati omogenei.

Page 23: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Raggruppamento (esempio)Nome Matricola Provincia Nascita Materia Voto

Bianchi 67459 LU 1981 FRA 68

Carli 66649 PI 1981 FRA 94

Verdi 75649 PI 1981 FRA 76

Bianchi 67459 LU 1981 INF 98

Carli 66649 PI 1981 INF 98

Verdi 75649 PI 1981 INF 65

Bianchi 67459 LU 1981 ING 76

Bianchi 67459 LU 1981 ITA 78

Carli 66649 PI 1981 ITA 76

Bianchi 67459 LU 1981 MAT 44

Carli 66649 PI 1981 MAT 56

Verdi 75649 PI 1981 MAT 87

Page 24: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

HAVING

� Se ho bisogno di specificare delle condizioni sul risultato delle aggregazioni non posso usare condizioni nel WHERE

� Per restringere il risultato devo specificare una condizione che può considerare sia i campi sia il valore di funzioni di aggregazione: clausola HAVING.

Page 25: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Strumenti di verifica (1)

L’attività di verifica si suddivide in due fasi:

- Verifica dei concetti teorici tramite compito in classe, costituito da domande aperte, domande a risposta multipla ed esercizi nei quali gli studenti, partendo da una base dati ed un risultato atteso, dovranno produrre la giusta interrogazione in algebra relazionale e in SQL

Page 26: Interrogare una base di dati: algebra relazionale e SQLpages.di.unipi.it/milazzo/teaching/AA1213-TFA-LAB2... · Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi

Strumenti di verifica (2)

� Verifica delle competenze acquisite tramite esercitazioni pratiche in laboratorio in cui si richiede la creazione della base dati (utilizzando il DBMS Microsoft Access), e di una serie di interrogazioni in linguaggio SQL