Raccomandato, 2024

Scelta Del Redattore

Differenza tra l'unione esterna sinistra, destra e completa

In precedenza abbiamo discusso le differenze tra Inner Join e Outer Join, dove abbiamo esaminato i tipi di outer join. Outer Join è colui che conserva le tuple nel risultato che sarebbe stato perso durante l'operazione Join. In questo articolo; discuteremo le differenze tra i tipi di outer join. Esistono tre tipi di outer join; Join esterno sinistro, Join esterno destro e Join esterno completo. Il join esterno sinistro, destro e completo differisce nel loro piano di esecuzione e i risultati ottenuti. Possiamo omettere una parola esterna da Left, Right e Full Outer Join. Esaminiamo le differenze tra Left, Right e Full outer Join con l'aiuto della tabella di confronto mostrata sotto.

Grafico comparativo

Base per il confrontoLeft Outer JoinGiusto outer joinFull Outer Join
Di baseTutte 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 NULLLe 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.

Osserva il risultato ottenuto da Left Outer Join; ha tutte le tuple del tavolo Studente insieme alle tuple corrispondenti sia del tavolo Studente che del Dipartimento. La student_id di Jimmy, Joseph Harry del tavolo Student non era presente nel tavolo Dipartimento. Quindi, i valori degli attributi della tabella Dipartimento per Jimmy, Joseph Harry sono estesi a NULL.

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.

Osservare il risultato ottenuto dall'unione esterna destra; ha tutte le tuple del tavolo Dipartimento insieme alle tuple corrispondenti sia del tavolo Studente che del Dipartimento. Gli Student_ID 10536 e 00954, della tabella Dipartimento, non sono presenti nella tabella Studente. Pertanto, il valore dell'attributo Nome per Student_ID 10536 e 00954 viene esteso a NULL.

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.

Osservare il risultato ottenuto dall'unione esterna completa; ha tutte le tuple dal tavolo Studente e Dipartimento insieme alle tuple corrispondenti sia del tavolo Studente che del Dipartimento. La student_id di Jimmy, Joseph Harry cioè 10026, 02256, 56362, rispettivamente, della tabella Studente, non era presente nella tabella Dipartimento. Quindi, i valori degli attributi della tabella Dipartimento per Jimmy, Joseph Harry sono estesi a NULL . Gli ID_Persone 10536 e 00954, della tabella Dipartimento, non sono presenti nella colonna Student_ID della tabella Studente. Pertanto, il valore dell'attributo dell'attributo Name per Student_ID 10536 e 00954 viene esteso a NULL .

Differenze chiave tra Join esterno sinistro, destro e completo

  1. 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.
  2. 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.

Top