Selezione |
genera una tabella temporanea contenente alcuni o tutti i campi dei record di una o più tabelle collegate. |
Esempi di Selezioni:
SELEZIONA i campi Cognome dalla tabella Alunni
produce una tabella temporanea contenente solo i cognomi di tutti gli alunni
SELEZIONA tutti i campi dalla tabella Alunni che frequentano la classe 1A
produce una tabella temporanea contenente tutti campi dei record degli alunni appartenenti alla
classe specificata
Join Naturale o equi-join |
è una selezione tra due tabelle collegate aventi una proprietà in comune. Il risultato è costituito da tutti i record di entrambe le tabelle il cui attributo comune ha lo stesso valore. |
Si considerino la tabelle Studenti:
IDStudente | Cognome | Nome | Data Nascita | ... |
1 | Rossi | Ugo | 01/01/1990 | ... |
2 | Verdi | Gino | 02/01/1990 | ... |
3 | Bianchi | Luca | 03/01/1990 | ... |
... | ... | ... | ... | ... |
e la tabella classi frequentate:
IDClasse | Anno Scol. | Sigla | Esito | Media | IDStudente |
1 | 2006/2007 | 1A | Promosso | 7.50 | 1 |
2 | 2007/2008 | 2A | Promosso | 7.75 | 1 |
3 | 2008/2009 | 3A | Promosso | 7.50 | 1 |
4 | 2007/2008 | 1B | Promosso | 6.50 | 2 |
5 | 2008/2009 | 2B | Promosso | 6.50 | 2 |
... | ... | ... | ... | ... | ... |
Le due tabelle hanno in comune la proprietà IDStudente, pertanto l'equi-join produce una tabella con i record formati dai campi della prima e i campi della seconda tabella aventi lo stesso valore del campo IDStudente.
Il risultato è:
IDStudente | Cognome | Nome | ... | IDClasse | AS | Sigla | ... |
1 | Rossi | Ugo | ... | 1 | 06/07 | 1A | ... |
1 | Rossi | Ugo | ... | 2 | 07/08 | 2A | ... |
1 | Rossi | Ugo | ... | 3 | 08/09 | 3A | ... |
2 | Verdi | Gino | ... | 4 | 07/08 | 1B | ... |
2 | Verdi | Gino | ... | 5 | 08/09 | 2B | ... |
... | ... | ... | ... | ... | ... | ... | ... |
join esterno |
si distingue in: left join: è una selezione tra due tabelle correlate che produce una tabella i cui record sono tutti quelli della prima tabella seguiti dai campi della seconda tabella che hanno lo stesso valore dell'attributo in comune. right join: produce una nuova tabella in cui sono presenti tutti i record della seconda tabella e, a ognuno di essi, seguono i campi della prima tabella che hanno lo stesso valore dell'attributo in comune. |
Esempio:
Si considerino le due tabelle Genitori e Figli, aventi in comune l'attributo ID.
La relazione è di grado 1:N (un genitore ha più figli).
L'equi join produce una tabella con i record formati dal genitore e dal figlio, ma se una persona non ha figli non è presente nel risultato.
Il left join invece elenca comunque tutte le persone presenti nella tabella Genitori e aggiunge i campi dei record prelevati dalla tabella Figlio solo quando trova due record (Genitore e Figlio) con lo stesso valore del campo ID.
Il right join, invece, produrrebbe una tabella i cui record sarebbero tutti quelli tabella Figli seguiti dai campi di tutti i record corrispondenti della tabella Genitori.
Nel risultato, ad esempio, potrebbe essere presente il figlio anche se nella tabella Genitori non è specificato il genitore.