04 - lezione-03

Transcript

04 - lezione-03
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