Recomandat, 2021

Alegerea Editorului

Diferența dintre intrarea în stânga, dreapta și complet în afară

Anterior am discutat despre diferențele dintre Inner Join și Outer Join, unde am descoperit tipurile de Outer Join. External Join este cel care păstrează tuplele în rezultatul care ar fi fost pierdute în timpul operației Join. În acest articol; vom discuta diferențele dintre tipurile de Îmbătrânire exterioară. Există trei tipuri de Îmbinare exterioară; Înlăturarea exterioară la stânga, Alăturarea exterioară la dreapta și conectarea completă la exterior. Intrarea în stânga, la dreapta și complet în afară diferă în planul de execuție și rezultatele obținute. Putem omite un Cuvânt exterior de la Stânga, Dreapta și Întregul Înalt Alăturați-vă. Să examinăm diferențele dintre Împreună, Stânga, Dreapta și Completă, cu ajutorul graficului de comparație prezentat mai jos.

Diagramă de comparație

Bazele comparațieiÎnainte de intrarea în exteriorDreptul exterior se alăturăIntregul exterior se alătură
De bazăToate tabelele tabelului stâng rămân în rezultat.Toate tichetele mesei drepte rămân în rezultat.Toate masele din stânga și din dreapta rămân în rezultat.
Extensie NULLTipurile de tabele din stânga care nu au o tuplă potrivită în tabelul din dreapta sunt extinse cu valoarea NULL pentru atributele tabelului drept.Tipurile de tabele dreapta care nu au o trupă potrivită în tabelul stâng sunt extinse cu valoarea NULL pentru atributele tabelului stâng.
Tuplurile din stânga, precum și tabela dreaptă, care nu are tupluri de potrivire în tabelul din dreapta și din stânga, sunt extinse cu valoare NULL pentru atributele tabelelor din dreapta și din stânga.

Definiția stânga Outer Alăturați-vă

Să presupunem că avem, " Table_A Left External Join_B ". Așa că Table_A este tabelul nostru stâng, așa cum se pare că a lăsat operația de îmbarcare la stânga și Table_B este tabelul nostru drept .

Inițial, legătura interioară ar fi aplicată pe Table_A și Table_B care va returna toate nodurile potrivite din tabelele A și B.

Apoi, va returna toate tuplurile de la Table_A care nu au o mână potrivită în Table_B. Astfel că tuplurile rezultate ar fi căptușite cu valori NULL pentru atributele tabelului drept.

Prin urmare, rezultatul obținut de la intrarea în exteriorul stânga păstrează toate tuplurile de la masa stângă și numai tuplurile potrivite de la masa dreaptă.

Să ne discutăm despre exemplul din stânga exterioară; avem două tabele de mai jos, tabelul pentru studenți și tabelul departamentului .

Acum, vom aplica Alăturarea de la stânga la exterior, pe tabelul studenților și departamentelor.

SELECT * FROM Departamentul Student LEFT OUTOUN JOIN
ON Student. Student_ID = Departament.Student_ID

În interogarea de mai sus, tabelul Student este tabelul stâng și tabelul Departamentul este tabelul potrivit. Deci, în funcție de intrarea în afara stânga, rezultatul trebuie să aibă toate tuplurile din tabelul Student și numai tuplurile potrivite din tabelul Departamentului.

Observați rezultatul obținut de la intrarea în exteriorul stânga; are toate tuplurile de la masa studenților, împreună cu tuplele potrivite din tabelul Student și Departamentul. Studentul lui Jimmy, Joseph Harry de la masa studenților nu era prezent în tabelul Departamentului. Prin urmare, valorile atributului tabelului Departamentului pentru Jimmy, Joseph Harry sunt extinse la NULL.

Definiția dreptului exterior de intrare

Să presupunem că avem, " Table_A Right Outer Join Table_B ". Așa că Table_A este tabelul nostru stâng, așa cum se pare că a lăsat operația Alăturarea din dreapta dreapta și Table_B este tabelul nostru drept .

Ca și în cazul Înălțimii exterioare stângi, inițial, asamblarea interioară ar fi aplicată pe Table_A și Table_B care va returna toate nopții de potrivire din tabelele A și B.

Apoi, va returna toate tuplurile de la Table_B care nu au o nucă de potrivire în Table_A. Astfel că tuplurile rezultate ar fi căptușite cu valori NULL pentru atributele tabelului stâng.

Prin urmare, rezultatul obținut de la intrarea exterioară dreaptă păstrează toate tuplurile de la masa dreaptă și numai tuplurile potrivite din tabela stângă.

Să discutăm despre dreptul de a se uni cu un exemplu; mai sus avem două mese, tabelul de studenți și tabelul departamentului.

Acum, vom aplica dreptul de Outer Alăturați-vă la masă Student și tabel Departamentul.

SELECT * FROM Departamentul Student DREPTUL EXTERN
ON Student. Student_ID = Departament.Student_ID

În interogarea de mai sus, Student Table este tabelul nostru stâng și tabelul Departamentului este tabelul nostru drept. În funcție de operația de înscriere în dreapta, rezultatul trebuie să includă toate tuplurile din tabelul Departamentului și numai tuplele potrivite din tabelul Student.

Observați rezultatul obținut din îmbinarea exterioară dreaptă; are toate tuplurile din tabelul Departamentului, împreună cu tuplele potrivite din tabelul Student și Departamentul. Student_ID 10536 și 00954, din tabelul Departamentului, nu sunt prezenți în tabelul Student. Prin urmare, valoarea atributului Name for Student_ID 10536 și 00954 este extinsă la NULL.

Definiția Full Outer join

Să presupunem că avem, " Table_A Full Outer Join Table_B ". Deci Table_A este tabelul nostru stâng, așa cum pare să rămână din operația Full Outer Join, iar Table_B este tabelul nostru drept .

Full Outer Join este o combinație atât a celor din stânga cât și a celor din exterior . Inițial, se aplică o conexiune internă pe Table_A și Table_B pentru a prelua nivele de potrivire din ambele tabele. Apoi se extinde acele tupluri din Table_A cu NULL care nu au o nucă potrivită în Table_B. În plus, se extinde acele tupluri de la Table_B cu NULL care nu au o tuplă de potrivire în Table_A.

Prin urmare, Full Outer Join păstrează toate tuplurile din stânga, precum și din tabelul din dreapta, împreună cu tuplele potrivite ale ambelor mese.

Să discutăm despre FULL Outer Join cu un exemplu; avem două mese de mai sus, tabelul de studenți și tabelul departamentului .

Acum, vom aplica Full Outer Alăturați-vă la masă pentru studenți și tabelul Departamentului.

SELECT * FROM Departamentul Student FULL OUTER JOIN
ON Student. Student_ID = Departament.Student_ID

În interogarea de mai sus, Tabelul pentru studenți este tabelul nostru stâng și tabelul Departamentului este tabelul nostru corect. În funcție de Full Outer Join, rezultatul trebuie să includă toate tuplurile din ambele mese.

Observați rezultatul obținut din îmbinarea exterioară completă; are toate tuplurile din tabelul Student și Departamentul, împreună cu tuplele potrivite din tabelul Student și Departamentul. Studentul lui Jimmy, Joseph Harry, adică 10026, 02256, 56362 respectiv, din tabelul Student, nu a fost prezent în tabelul Departamentului. Prin urmare, valorile atributului tabelului Departamentului pentru Jimmy, Joseph Harry sunt extinse la NULL . Student_ID 10536 și 00954 din tabelul Departamentului nu sunt prezente în coloana Student_ID din tabelul Student. Prin urmare, valoarea atributului atribut Name pentru Student_ID 10536 și 00954 este extinsă la NULL .

Diferențele cheie între intrarea stângă, dreapta și complet în afară

  1. Rezultatul alăturării din stânga exterioară are toate tuplurile tabelului stâng. În mod similar, rezultatul obținut de Îndepărtarea de la dreapta are toate tuplurile mesei drepte. Iar rezultatul Full Outer Join are toate tuplurile de pe tabela stanga si dreapta.
  2. În intrarea în stânga exterioară, tuplurile tabelului stâng care nu au o tuplă potrivită în tabelul din dreapta sunt extinse cu valori Null pentru atributele tabelului din dreapta. Opus este cazul pentru dreptul de intrare exterioară. Și în Full Outer Join, tuplurile din tabelele din stânga și din dreapta care nu au o mulțime potrivită în tabelele din dreapta și din stânga sunt extinse cu NULL pentru atributele tabelei din dreapta și din stânga respectiv.

Concluzie:

Aveți grijă de pozițiile numelor de tabele dintr-o interogare. Deoarece poziția numelui de tabel în interogare decide dacă tabela ar fi considerată tabelă stânga sau tabelă dreaptă.

Top