DATABASE Corso Base Query Database - Corso Base Introduzione • Il database contiene l'insieme dei dati che sono stati introdotti in fase d'inserimento. • Dati di tabelle differenti sono relazionati mediante l'impiego dei concetti di chiave primaria e chiave esterna. • La ricerca di determinati dati che rispondano a particolari requisiti viene realizzato mediante l'impiego di ricerche. • L'esecuzione di ricerche nel database permette di ottenere l'estrazione di informazioni. Database - Corso Base 2 Tipologie e strumenti di ricerca • In OpenOffice Base le ricerche, a seconda della complessità, vengono realizzate mediante strumenti differenti. • Le principali tipologie di ricerca sono: – Semplici: la ricerca viene effettuata su una sola tabella e si basa su un'unica condizione; – Avanzate: la ricerca viene effettuata su una sola tabella ma possono essere inserite più di una condizione; – Complesse: la ricerca viene effettuata su una o più tabelle mediante l'impiego di diverse condizioni e criteri. Database - Corso Base 3 Ricerca Semplice • Esempio: ricercare tutti gli studenti che hanno il cognome “Lorrai”. • Si seleziona la tabella STUDENTE, e si esegue un doppio click su di essa. • Si accede allo strumento “Trova”. Database - Corso Base 4 Ricerca Semplice Database - Corso Base 5 Ricerca Semplice • La finestra di ricerca mostra il fatto che l'estrazione delle informazioni richieste può essere effettuata solamente all'interno della sola tabella STUDENTE. • Nel riquadro “Cerca” è possibile inserire una sola delle seguenti condizioni di ricerca: – Testo: nel casella a destra possiamo inserire il testo da ricercare nei campi della tabella selezionata; – Il contenuto di campo è NULL: si ricercano tutti i campi per cui non è stato inserito un valore; – Il contenuto di campo non è NULL: si ricercano tutti i campi valorizzati. Database - Corso Base 6 Ricerca Semplice • Nel riquadro “Area” si definisce dove utilizzare la condizione di ricerca: – Tutti i campi: la ricerca viene effettuata su tutti i campi dei record che compongono i dati della tabella. – Campo singolo: la ricerca viene effettuata su un solo campo, il quale viene definito mediante il menù a tendina posto sulla destra. • Nel riquadro “Impostazioni” si definisce come utilizzare la condizione di ricerca. É un'opzione utilizzabile solo se la ricerca da effettuare è di tipo “Testo”. Database - Corso Base 7 Ricerca Semplice • La ricerca degli studenti il cui cognome è “Lorrai” può quindi essere realizzata mediante le seguenti impostazioni: – Riquadro Cerca: selezioniamo l'opzione “Testo”, e nella casella a destra inseriamo la stringa “Lorrai”; – Riquadro Area: scegliamo l'opzione “Campo singolo”, e dal menù a tendina selezioniamo il campo “cognome”; – Riquadro Impostazioni: inseriamo come posizione il valore “intero campo”. • Premendo il bottone “Cerca” la ricerca viene avviata. Ogni valore trovato all'interno della tabella viene mostrato con un riquadro rosso. Database - Corso Base 8 Ricerca Semplice • Premendo nuovamente il bottone Cerca, il processo viene nuovamente avviato: – Se vengono trovati nuovi valori, il riquadro rosso si sposterà sul nuovo valore trovato; – Se non vengono trovati nuovi valori, il riquadro rosso non cambierà la sua posizione. Database - Corso Base 9 Ricerca Semplice Database - Corso Base 10 Ricerca Semplice • Esempio: ricercare gli studenti il cui cognome è “Lorrai” e il cui nome è “Mario”. • Questa tipologia di ricerca non può essere effettuata mediante una ricerca semplice, in quanto, pur essendo relativa ad una stessa tabella (STUDENTE), è caratterizzata da due criteri: 1) Il cognome deve essere “Lorrai” 2) Il nome deve essere “Mario” ● Database - Corso Base Tale ricerca rientra nella tipologia di ricerca avanzata. 11 Ricerca Avanzata • La ricerca avanzata in OpenOffice Base viene realizzata mediante lo strumento “Filtro”. • L'accesso a tale strumento viene effettuato mediante un bottone presente nel menù della finestra di visualizzazione dei dati di una qualsiasi tabella. Database - Corso Base 12 Ricerca Avanzata • Nella finestra è possibile inserire fino a un massimo di 3 criteri. • Per ogni criterio è necessario inserire il campo, la condizione e il valore di confronto. • L'operatore viene utilizzato per mettere in relazione i criteri inseriti. Database - Corso Base 13 Ricerca Complessa • Esempio: ricercare il nome e il cognome degli studenti della provincia di Cagliari. • Questa tipologia di ricerca non può essere effettuata nè tramite lo strumento Trova, nè tramite lo strumento Filtro. • La motivazione principale è data dal fatto che per essere portata a termine necessitano i dati di due tabelle: STUDENTE e COMUNE. • Tale ricerca rientra nella tipologia di ricerca complessa, la quale può essere realizzata solo mediante l'utilizzo di query. Database - Corso Base 14 Query • Le query sono lo strumento più potente per interrogare il database. • Permettono di estrarre informazioni utilizzando criteri complessi e utilizzando dati provenienti anche da tabelle differenti. • Le informazioni estratte vengono restituite sotto forma di un'unica tabella contente i campi selezionati dalle varie tabelle. Database - Corso Base 15 Query • Le query vengono utilizzate non solo per l'estrazione di dati dal database ma anche per effettuare operazioni di inserimento, modifica e cancellazione. • Ogni query viene scritta in linguaggio SQL in modo da renderla più comprensibile al DBMS. • Ogni DBMS possiede una propria sintassi SQL ma tutti si basano comunque su una sintassi base detta SQL ANSI. Database - Corso Base 16 Query • Il primo approccio alle query in OpenOffice Base può essere realizzato mediante l'impiego dello strumento “Ricerche”. • É uno strumento che permette di estrarre dati dal database mediante l'esecuzione di query SQL. • Permettono di eseguire istruzioni volte solamente alla visualizzazione di informazioni contenute nel database, senza effettuare alcuna modifica ai dati in esso contenuti. • Sono uno strumento di ricerca complessa. Database - Corso Base 17 Query Database - Corso Base 18 Query • OpenOffice Base fornisce tre modi per eseguire delle ricerche complesse sul database: – Crea query in vista struttura: permette la creazione di una query, attraverso l'uso di una interfaccia definita vista struttura, sollevando l'utente dal difficoltoso lavoro di scrittura della query. – Usa procedura guidata per la creazione di query: permette la creazione di una query attraverso l'uso di una procedura guidata. Anche in questo caso l'utente non si deve preoccupare di scrivere la query in linguaggio SQL. – Crea query in vista SQL: permette la creazione della query solo attraverso l'uso del linguaggio SQL. Database - Corso Base 19 Creazione query in vista struttura • Il primo passo consiste nel premere la voce “Creazione query in vista struttura...” dal menù “Ricerche”. • Tramite la finestra visualizzata aggiungiamo tutte le tabelle necessarie per ottenere le informazioni da estrarre. Database - Corso Base 20 Creazione query in vista struttura • La scelta delle tabelle da inserire nella query è un passo fondamentale per la corretta riuscita della ricerca. • Nel nostro esempio la ricerca da eseguire prevede di trovare il nome e il cognome degli studenti della provincia di Cagliari. – Il nome e il cognome degli studenti sono contenuti nella tabella STUDENTE; – La provincia di un comune è contenuta nella tabella COMUNE; – La relazione tra le due tabelle è data dalla chiave esterna comune contenuta nella tabella STUDENTE. Database - Corso Base 21 Creazione query in vista struttura • Le tabelle da inserire sono quindi STUDENTE e COMUNE. Il collegamento tra le due viene realizzato in maniera automatica da OO Base. Database - Corso Base 22 Join tra due tabelle Tabella STUDENTE matricola nome cognome data_di_nascita comune 1399 Mario Lorrai 23/01/1960 2 1265 Franco Atzeni 01/12/1952 3 7698 Sandra Piras 15/09/1977 2 OO Base, al fine di eseguire la query, deve realizzare un operazione di unione dei dati delle due tabelle, realizzata tramite l'impiego della chiave esterna comune. Database - Corso Base Tabella COMUNE codice nome provincia 1 Roma RO 2 Cagliari CA 3 Milano MI 23 Join tra due tabelle: risultato Tabella STUDENTE Tabella COMUNE matricola nome cognome data_di_nascita comune codice nome provincia 1399 Mario Lorrai 23/01/1960 2 1 Roma RO 1265 Franco Atzeni 01/12/1952 3 2 Cagliari CA 7698 Sandra Piras 15/09/1977 2 3 Milano MI JOIN matricola nome cognome data_di_nascita codice nome 1399 Mario Lorrai 23/01/1960 2 Cagliari CA 1265 Franco Atzeni 01/12/1952 3 Milano 7698 Sandra Piras 15/09/1977 2 Cagliari CA Database - Corso Base provincia MI 24 Join tra due tabelle • L'operazione di Join permette di ottenere un unico tabellone che contiene i dati di entrambe le tabelle. • Nella tabella virtuale ottenuta non vengono riportati i dati delle tabelle per cui non è possibile stabilire un collegamento: i dati del comune di Roma non vengono riportati perchè non vi è nessun studente di Roma. • Esistono diverse tipologie di Join in funzione delle quali si possono ottenere risultati differenti. Database - Corso Base 25 Creazione query in vista struttura • Nella finestra di creazione di una query in vista struttura è possibile inserire la lista dei campi contenente le informazioni da estrarre. • É possibile selezionare qualsiasi campo delle due tabelle inserite. Database - Corso Base 26 Creazione query in vista struttura • Ogni campo selezionato può essere caratterizzato con un insieme di opzioni: – Alias: stringa con cui sostituire il nome del campo da visualizzare nella tabella dei risultati; – Tabella: menù a tendina da cui selezionare il nome della tabella da cui proviene il campo, utile in caso di omonimia; – Ordine: menù a tendina per stabilire l'ordine con cui visualizzare i record della tabella dei risultati; – Visibile: checkbox per indicare se rendere visibile il campo nella tabella dei risultati; – Funzione: funzioni applicabili al campo; – Criteri: condizioni per filtrare i record da ottenere. Database - Corso Base 27 Creazione query in vista struttura Database - Corso Base 28 Creazione query in vista struttura • Sono stati selezionati tre campi: – nome: attributo nome della tabella STUDENTE; – cognome: attributo cognome della tabella STUDENTE; – provincia: attributo provincia della tabella COMUNE. • Premendo il bottone cerchiato in rosso nell'immagine mostrata nella diapositiva precedente, viene eseguita la query. • La tabella contenente la lista dei record relativa ai risultati ottenuti viene visualizzata immediatamente al di sotto del menù. Database - Corso Base 29 Creazione query in vista struttura • La ricerca chiedeva però la visualizzazione del nome e del cognome solo degli studenti della provincia di Cagliari. • É necessario usare l'opzione Criteri per il campo provincia. Database - Corso Base 30 Creazione query in vista struttura • Deselezionando la checkbox relativa alla opzione Visibile impediamo che il campo venga visualizzato nella tabella dei risultati. • Inserendo 'CA' oppure ='CA' nel campo relativo alla opzione Criteri visualizziamo solamente i record degli studenti della provincia di Cagliari. Database - Corso Base 31 Creazione query in vista struttura • Le azioni delle query di ricerca non hanno alcun effetto sui dati originari, in quanto essi rimangono memorizzati nelle rispettive tabelle. • Le query visualizzano solo una parte dei record presentandoli in formato tabella. Database - Corso Base 32 Criteri applicabili sui campi • Attraverso l'opzione Criteri, associato ad ogni campo, è possibile definire condizioni molto più complesse del semplice ='CA' visto nell'esempio. • Gli operatori utilizzabili per definire i criteri sono: – – – – = : visualizza tutti i record che rispondono a quel criterio; < : visualizza tutti i record di valore minore al criterio; > : visualizza tutti i record di valore maggiore al criterio; <= : visualizza tutti i record di valore minore o uguale al criterio; – >= : visualizza tutti i record di valore maggiore o uguale al criterio; – <> : visualizza tutti i record diversi dal criterio; Database - Corso Base 33 Criteri applicabili sui campi – LIKE : operatore logico utilizzato per definire particolari criteri di ricerca per i campi di tipo testuale. Tramite esso si è in grado di definire criteri di uguaglianza parziale. Viene usato insieme ad altri due operatori: • * : è un carattere jolly e viene utilizzato per indicare una parte di campo. Più precisamente esso indica qualsiasi stringa con 0 o più caratteri. Ad esempio LIKE 'C*', applicato al campo nome della tabella STUDENTE, restituisce tutti i record degli studenti il cui nome inizia con la lettera 'C': Carlo, Carla, Carletto, C; • ? : è un carattere jolly che indica qualsiasi stringa composta da un solo carattere. Ad esempio LIKE 'Carl?', restituisce tutti i record degli studenti il cui nome inizia con 'Carl' e finisce con un qualsiasi altro carattere: Carlo, Carla; Database - Corso Base 34 Criteri applicabili sui campi – AND : è un operatore logico tramite il quale si indica che due criteri devono essere verificati contemporaneamente. Ad esempio, considerando il campo relativo ad un voto d'esame, per restituire tutti gli esami con voti compresi tra 20 e 27 si indica nel seguente modo >=20 AND <=27. – OR : è un operatore logico tramite il quale si indica che almeno uno dei due criteri deve essere verificato. Ad esempio, se si scrive <=20 OR >=27, vengono visualizzati tutti gli esami sostenuti con voto minore o uguale a 20 oppure con voto maggiore o uguale a 27. Database - Corso Base 35 Criteri applicabili sui campi • Per i campi la cui tipologia di dato è un booleano (Sì/No), nei criteri è necessario indicare: – 1 per ottenere tutti i record il cui corrispondente campo assume valore 'Sì'; – 0 per ottenere tutti i record il cui corrispondente campo assume valore 'No'; Database - Corso Base 36 Esempio 1 Database - Corso Base 37 Risultato Esempio 1 • Visualizza il nome, cognome e la provincia degli studenti che sono della provincia di Cagliari oppure della provincia di Milano. • L'operatore OR stabilisce che per restituire il corrispondente record almeno uno dei due criteri deve essere soddisfatto. Database - Corso Base 38 Esempio 2 Database - Corso Base 39 Risultato Esempio 2 • Visualizza il nome, cognome e la provincia degli studenti che sono sia della provincia di Cagliari, sia della provincia di Milano. • La lista è vuota perchè è impossibile che i due criteri siano verificati contemporaneamente. • Uno studente può essere di una sola provincia. Database - Corso Base 40 Esempio 3 Database - Corso Base 41 Risultato Esempio 3 • Visualizza matricola, nome, cognome degli studenti il cui cognome finisce con la lettera “i”. Database - Corso Base 42 Esempio 4 Database - Corso Base 43 Risultato Esempio 4 • Visualizza matricola, nome, cognome degli studenti il cui nome finisce con la lettera “a” e il cognome con la lettera “i”. • Non ci sono studenti che che soddisfano l'insieme dei criteri descritti. Database - Corso Base 44 Esempio 5 Database - Corso Base 45 Risultato Esempio 5 • Visualizza matricola, nome, cognome degli studenti il cui nome finisce con la lettera “a” o il cognome con la lettera “i”. • Per mettere in OR logico due criteri relativi a due campi differenti, è necessario inserirli su righe diverse. Database - Corso Base 46