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