Grafico comparativo
Base per il confronto | Left Outer Join | Giusto outer join | Full Outer Join |
---|---|---|---|
Di base | Tutte le tuple del tavolo sinistro rimangono nel risultato. | Tutte le tuple del tavolo giusto rimangono nel risultato. | Tutte le tuple da sinistra e da destra rimangono nel risultato. |
Estensione NULL | Le tuple della tabella sinistra che non hanno una tupla corrispondente nella tabella destra sono estese con il valore NULL per gli attributi della tabella giusta. | Le tuple della tabella destra che non hanno una tupla corrispondente nella tabella sinistra sono estese con il valore NULL per gli attributi della tabella sinistra. | Le tuple di sinistra e quella di destra che non hanno le tuple corrispondenti nella tabella destra e sinistra rispettivamente sono estese con il valore NULL per gli attributi delle tabelle destra e sinistra. |
Definizione di Join esterno sinistro
Supponiamo di avere " Table_A Left Outer Join Table_B ". Quindi Table_A è la nostra tabella sinistra come appare a sinistra dell'operazione Left Outer Join e Table_B è la nostra tabella giusta .
Inizialmente, il join interno verrebbe applicato su Table_A e Table_B che restituiranno tutte le tuple corrispondenti dalla tabella A e B.
Successivamente, restituirà tutte le tuple da Table_A che non hanno una tupla corrispondente in Table_B. In questo modo, le tuple risultanti verranno riempite con valori NULL per gli attributi della tabella giusta.
Quindi, il risultato ottenuto da Left Outer Join mantiene tutte le tuple dal tavolo sinistro e solo le tuple corrispondenti dalla tabella di destra.
Parliamo di Left Outer Join con un esempio; abbiamo due tabelle sotto, Tabella degli studenti e Tabella dei dipartimenti .
Ora applichiamo Left Outer Join, su Student e Department Table.
SELEZIONA * Dallo Studente LEFT ESTERNO UNITO Dipartimento
SU Studente. Student_ID = Department.Student_ID
Nella query sopra, tabella Studente è la tabella sinistra e la tabella Dipartimento è la tabella giusta. Quindi, secondo Left Outer Join, il risultato deve avere tutte le tuple dalla tabella Studente e solo le tuple corrispondenti dalla tabella Dipartimento.
Definizione di Right Outer Join
Supponiamo di avere " Table_A Right Outer Join Table_B ". Quindi Table_A è la nostra tabella di sinistra come appare a sinistra dell'operazione Right Outer Join e Table_B è la nostra tabella giusta .
Come in Left Outer Join, inizialmente, il join interno verrebbe applicato su Table_A e Table_B che restituiscono tutte le tuple corrispondenti dalla tabella A e B.
Successivamente, restituirà tutte le tuple da Table_B che non hanno una tupla corrispondente in Table_A. In questo modo, le tuple risultanti verranno riempite con valori NULL per gli attributi della tabella sinistra.
Quindi, il risultato ottenuto dall'unione esterna destra mantiene tutte le tuple dal tavolo destro e solo le tuple corrispondenti dalla tabella sinistra.
Cerchiamo di discutere Right Outer Join con un esempio; sopra abbiamo due tavoli, tabella degli studenti e tabella dei dipartimenti.
Ora applicheremo Right Outer Join alla tabella Studente e alla tabella Dipartimento.
SELEZIONA * Dallo Studente DIRITTO ESTERNO UNITO Dipartimento
SU Studente. Student_ID = Department.Student_ID
Nella query sopra, Tabella studenti è la nostra tabella sinistra e la tabella dipartimento è la nostra tabella giusta. In base all'operazione Right Outer Join, il risultato deve includere tutte le tuple dalla tabella Department e solo le tuple corrispondenti da Student Table.
Definizione di join esterno completo
Supponiamo di avere " Table_A Full Outer Join Table_B ". Quindi Table_A è la nostra tabella sinistra come appare a sinistra dell'operazione Full Outer Join e Table_B è la nostra tabella giusta .
Full Outer Join è la combinazione di entrambi, Left Outer Join e Right Outer Join . Inizialmente, applica inner join su Table_A e Table_B per recuperare tuple corrispondenti da entrambe le tabelle. Quindi estende quelle tuple di Table_A con NULL che non ha una tupla corrispondente in Table_B. Inoltre, estende quelle tuple da Table_B con NULL che non ha una tupla corrispondente in Table_A.
Quindi, Full Outer Join mantiene tutte le tuple sia a sinistra che a destra, insieme alle tuple corrispondenti di entrambi i tavoli.
Cerchiamo di discutere di FULL Outer Join con un esempio; abbiamo due tabelle sopra, Tabella degli studenti e Tabella dei reparti .
Ora applicheremo Full Outer Join alla tabella Studente e alla tabella Dipartimento.
SELEZIONA * Dallo Studente FULL OUTER JOIN Department
SU Studente. Student_ID = Department.Student_ID
Nella query sopra, la tabella degli studenti è la nostra tabella di sinistra e la tabella dei reparti è la nostra tabella giusta. Secondo Full Outer Join, il risultato deve includere tutte le tuple di entrambi i tavoli.
Differenze chiave tra Join esterno sinistro, destro e completo
- Il risultato di Left Outer Join ha tutte le tuple del tavolo sinistro. Allo stesso modo, il risultato di Right Outer Join ha tutte le tuple del tavolo giusto. E il risultato di Full Outer Join ha tutte le tuple dal tavolo sia a sinistra che a destra.
- In Left Outer Join, le tuple della tabella sinistra che non hanno una tupla corrispondente nella tabella destra sono estese con valori Null per gli attributi della tabella giusta. L'opposto è il caso di Right Outer Join. E in Full Outer Join, le tuple delle tabelle sinistra e destra che non hanno tuple corrispondenti nelle tabelle destra e sinistra sono rispettivamente estese con NULL per gli attributi rispettivamente della tabella destra e sinistra.
Conclusione:
Prenditi cura delle posizioni dei nomi delle tabelle in una query. Poiché la posizione del nome della tabella nella query decide se la tabella verrà considerata come tabella di sinistra o tabella di destra.