Corsi di Laurea in Biotecnologie
(primo anno interfacoltà)
Corso integrato di Matematica,
Informatica e Statistica
Informatica di base
Linea 1
Daniela Besozzi
Dipartimento di Informatica e Comunicazione
Università degli Studi di Milano
Ottava lezione di laboratorio
Interrogazione di una base di dati
Informatica di base – Linea 1
2
Prima parte
Cosa vuol dire fare
“un’interrogazione”
Informatica di base – Linea 1
3
I concetti principali dei DB
•
•
•
•
•
La logica booleana (AND, OR, NOT)
Entità e attributi (nome, dominio)
Tabelle fisiche e tabelle logiche
Chiave candidata/primaria/esterna
Le operazioni sulle tabelle:
–
–
–
–
selezione
proiezione
prodotto
join
• Relazioni fra tabelle
Informatica di base – Linea 1
4
Le query (o interrogazioni)
• Le operazioni di lettura o scrittura di dati da
un DB vengono dette query
– le query permettono di generare tabelle logiche
• In particolare, ci occuperemo di capire come si
possono realizzare le operazioni di:
– selezione
– proiezione
– join
Informatica di base – Linea 1
5
Il linguaggio SQL
• Per specificare una query, si usano dei
linguaggi appositi:
– SQL (=Structured Query Language)
• E’ stato studiato appositamente per essere
facilmente comprensibile:
– appare simile al linguaggio naturale
– ma NON è un linguaggio naturale
• ha un sintassi formale
Informatica di base – Linea 1
6
La composizione guidata di query
• Molti applicativi per gestire database rendono
disponibili strumenti di supporto alla
creazione di query:
– oggi ne vedremo alcuni
• Idea:
– chi è esperto scrive direttamente in SQL (fa prima)
– chi non è esperto si lascia aiutare
dall’applicazione:
• il risultato è comunque una query in SQL
Informatica di base – Linea 1
7
La proiezione
• In SQL l’operazione per “selezionare” alcuni
valori da tabelle è detta SELECT
• La parola FROM indica da quali tabelle
vogliamo andare a prendere i risultati
SELECT nome, cognome FROM Studenti
 effettua la proiezione di studenti sugli attributi
nome e cognome
Informatica di base – Linea 1
8
La selezione
• Si utilizza lo stesso costrutto “SELECT FROM”
della proiezione, ma in aggiunta si specifica
una clausola WHERE
SELECT * FROM Esami WHERE crediti > 3
 il simbolo * indica di selezionare tutti gli attributi
Informatica di base – Linea 1
9
Selezione e proiezione
• La combinazione delle due operazioni si
ottiene in modo naturale in SQL:
SELECT nomeEsame FROM Esami
WHERE crediti>3
 effettua la selezione degli esami con più di 3
crediti e poi fa la proiezione sull’attributo
nomeEsame
Informatica di base – Linea 1
10
Prodotto
• Il prodotto viene calcolato automaticamente
quando vengono selezionate più tabelle con la
clausola FROM
SELECT nome, cognome, nomeEsame
FROM Professori, Esami
Informatica di base – Linea 1
11
Il join
• Selezioniamo alcune righe dopo aver fatto il
prodotto:
SELECT nome, cognome, nomeEsame
FROM Docenti, Esami
WHERE Docenti.Identificativo = Esami.docente
Informatica di base – Linea 1
12
Seconda parte
Primo esercizio
Informatica di base – Linea 1
13
OpenOffice Base
• Scarica il file “EsDB1.odb” dal sito del corso e
aprilo con OpenOffice Base
• Esplora il DB e l’applicazione OpenOffice Base:
– cerca di capire quali funzionalità sono disponibili
– visualizza struttura e contenuto delle quattro
tabelle
Informatica di base – Linea 1
14
Le relazioni
• Trova il comando per visualizzare le relazioni
fra le tabelle
• Cosa vuol dire il simbolo a forma di chiave?
• Prova a guardare il contenuto delle tabelle,
tenendo sott’occhio anche le relazioni:
– capisci meglio la struttura della base di dati
adesso?
Informatica di base – Linea 1
15
Modificare i dati
• Prova ad effettuare le seguenti modifiche
direttamente sulle tabelle:
– aggiungi un nuovo studente nella tabella Studenti
– modifica il cognome di un docente
– rimuovi un esame sostenuto
• Un modo alternativo: usa un formulario
(sfrutta la procedura guidata) per modificare
l’indirizzo di uno studente
Informatica di base – Linea 1
16
Estrazione dati mediante query
(tramite “procedura guidata”)
• Facciamo insieme la prima query usando la
“procedura guidata” a disposizione nell’area
“Ricerche” del database:
– vogliamo estrarre nome e cognome degli studenti
• significa fare una proiezione sulla tabella Studenti,
relativamente agli attributi (campi) Nome e Cognome
– seguiamo passo per passo la procedura guidata,
compilando i campi richiesti e clickando su
“Avanti”
…(continua)
Informatica di base – Linea 1
17
Estrazione dati mediante query
(tramite “procedura guidata”)
(continua)
– visualizziamo la query in SQL
– diamo un nome alla query per distinguerla dalle altre
• es. NomeCognomeStudenti
– al termine, esportiamo i dati estratti dal DB in un
foglio di calcolo:
• click col tasto destro sulla ricerca “NomeCognomeStudenti”
• copia e incolla la tabella appena generata nel foglio di
calcolo (OpenOffice Calc)
• copia e incolla anche l’SQL
Informatica di base – Linea 1
18
Estrazione dati mediante query
(tramite “procedura guidata”)
• Esegui gli stessi passi per:
– effettuare una selezione dei corsi con più di 3
crediti (ordina per nome)
– effettuare il prodotto tra la tabella corsi e la
tabella professori
Informatica di base – Linea 1
19
Estrazione dati mediante query
(tramite “vista struttura”)
• Facciamo insieme la prima query usando
“Crea ricerca in vista struttura” :
– vogliamo selezionare il nome dei corsi tenuti da
ogni docente
– aggiungiamo alla ricerca le tabelle Corsi e
Professori
– selezioniamo i campi delle due tabelle che ci
interessano, cioè quelli che vogliamo avere nella
vista che stiamo generando
Informatica di base – Linea 1
20
Estrazione dati mediante query
(tramite “vista struttura”)
– lanciamo “Esegui ricerca”
– salviamo la query effettuata e diamogli un nome
riconoscibile
– esportiamo i dati e l’SQL nel foglio di calcolo
• osserva l’SQL: che tipo di operazione su tabelle è stata
effettuata?
Informatica di base – Linea 1
21
Estrazione dati mediante query
(tramite “vista struttura”)
• Usa la stessa procedura per:
– selezionare i voti ottenuti dagli studenti con
cognome “Bianchi”
• bisogna impostare come criterio per il cognome:
=‘Bianchi’ (NON con le doppie virgolette)
– selezionare il nome del corso degli esami sostenuti
dagli studenti con cognome “Bianchi”
– selezionare il nome dei docenti, il nome del corso
e il voto d’esame degli studenti con cognome
“Bianchi”
Informatica di base – Linea 1
22
Usare le funzioni nelle query
• Calcola la media dei voti degli studenti con
cognome “Bianchi”:
– prima imposta la query (come hai fatto con le
altre)
• puoi sfruttare una delle ricerche già effettuate (quale?)
– poi inserisci l’apposita funzione nella colonna dei
voti
• N.B. se hai fatto la query partendo dalle tabelle fisiche,
dovrai impostare anche una funzione “Gruppo” per i
campi (diversi dal campo “voto”) che hai incluso
Informatica di base – Linea 1
23
Terza parte
Secondo esercizio
Informatica di base – Linea 1
24
Un altro database
• Scarica e apri il file “EsDB2.odb”
• Scopi dell’esercizio:
– lasciarvi capire, senza spiegazione, come è stata
strutturata l’informazione nel DB
• guarda con attenzione le tabelle e le relazioni
– imparare a formulare le interrogazioni sulla base
delle informazioni che si vogliono estrarre
– capire come la query effettuata viene tradotta in
SQL
Informatica di base – Linea 1
25
Un altro database - note
• Due note su questo database (che capirete
solo dopo aver osservato le relazioni):
– la tabella “Volumi” contiene i dati relativi alle
diverse copie fisiche di ogni libro
– per come è organizzata la base di dati, ogni libro
può avere un solo autore
Informatica di base – Linea 1
26
DB e fogli di calcolo
• Anche in questo caso, per ogni query
effettuata, salva la tabella generata e l’SQL in
un foglio di calcolo
– SUGGERIMENTO: prima di impostare la query,
cerca di capire quali tabelle dovrai usare
(guardando le relazioni fra le tabelle)
• Formatta opportunamente il foglio di calcolo
Informatica di base – Linea 1
27
Query da fare su EsDB2
1. Trova il titolo dei libri il cui autore è Amado
2. Trova il titolo dei libri in prestito all’utente Annoni
3. Trova lo stato di conservazione e il codice biblioteca
dei libri editi dalla Feltrinelli in stato di
conservazione “mediocre” o “fortemente rovinato”
– bisogna impostare tre criteri:
• uno per la Denominazione della CasaEditrice
• due per lo StatoConservazione (inserirli uno sotto
l’altro)
Informatica di base – Linea 1
28
Query da fare su EsDB2
4. Trova, per ogni utente, il numero di libri che ha
attualmente in prestito
– bisogna impostare due funzioni:
• una di conteggio per il campo InPrestitoA
• una di gruppo per il campo Cognome
Informatica di base – Linea 1
29