Diferența dintre intrarea internă și intrarea exterioară

Anonim

Inner Join vs External Join

Intrarea internă și Outer join sunt două dintre metodele de îmbinare SQL utilizate în procesarea interogărilor pentru baze de date. Acestea aparțin familiei de clauze de aderare (alte două fiind Adunările Stânga și Dreapta). Cu toate acestea, există un "Self Join" care poate fi folosit pentru situații specializate. Scopul Join este să combine câmpurile care folosesc valorile comune la cele două tabele. Aceste îmbinări combină înregistrări din mai multe tabele dintr-o bază de date. Creează seturi rezultate, care pot fi salvate ca alt tabel.

Ce este Inner Join?

Funcția de conectare SQL cea mai frecvent utilizată este Inner Join. Acesta poate fi considerat ca un tip implicit utilizat în aplicații. Intrarea internă utilizează join-predicate pentru a combina două tabele. Presupunând că cele două tabele sunt A și B, atunci predicatul join va compara rândurile lui A și B pentru a afla toate perechile care satisfac predicatul. Valorile coloanelor tuturor rândurilor îndeplinite ale tabelelor A și B sunt combinate pentru a crea rezultatul. Acesta poate fi privit ca prima luând intrarea în cruce (produsul cartezian) a tuturor înregistrărilor și apoi returnând numai înregistrările care satisface predicatul join. Cu toate acestea, în realitate, produsul cartezian nu este calculat deoarece este foarte ineficient. În schimb, se utilizează join join sau join-merge merge.

Ce este Outer Join ?

Spre deosebire de, Inner join, join external păstrează toate înregistrările chiar dacă nu poate găsi o înregistrare potrivită. Asta înseamnă că unirea exterioară are nevoie de o înregistrare pentru a găsi o înregistrare potrivită pentru ca ea să apară în rezultat. În schimb, acesta va returna toate înregistrările, însă înregistrările de neegalat vor avea valori nula. Îmbinările exterioare sunt împărțite în trei subcategorii. Acestea sunt o conexiune exterioară la stânga, o conexiune exterioară dreaptă și o conexiune exterioară completă Această diferențiere se bazează pe tabelul tabelului din stânga, din tabelul din dreapta sau din cele două tabele care se păstrează atunci când se găsesc înregistrări de neegalat. Îmbinările exterioare la stânga (cunoscute și sub numele de simplă îmbinare stânga) păstrează toate înregistrările tabelului stâng. Aceasta înseamnă că, chiar dacă înregistrările de potrivire a numărului sunt zero, atunci vor fi înregistrate în tabelul de rezultate, dar vor avea valori nula pentru toate coloanele lui B. Cu alte cuvinte, toate valorile din tabelul stâng sunt returnate cu valori potrivite din dreapta tabel (sau valorile nula atunci când nu sunt comparabile). Dacă valorile din mai multe rânduri din tabelul stâng sunt potrivite cu un singur rând din tabelul din dreapta, rândul din tabelul din dreapta va fi repetat după cum este necesar. Extensia dreaptă exterioară este aproape asemănătoare cu cea a exteriorului exterior al stângii, dar tratamentul meselor este venerat. Aceasta înseamnă că rezultatul va avea toate rândurile de tabelă de drept cel puțin o dată cu valori de tabelă stânga potrivite (și valori nula pentru valori corecte de neegalat). Intregul exterior exterior este mai cuprinzător decât ambele conexiuni exterioare la stânga și la dreapta. Rezultă combinarea efectului aplicării atât a stângii cât și a celei drepte exterioare unite.

Care este diferența dintre Inner Join și Outer Join?

Inner Join nu păstrează rândurile de neegalat în rezultatul, dar asocierea exterioară va păstra toate înregistrările de la cel puțin o masă (în funcție de ce element extern a fost utilizat). Deci, comportamentul de a nu prezenta informații pe rânduri de neegalat în tabelul de rezultate este nedorit, trebuie să utilizați întotdeauna una dintre articulațiile exterioare (în locul unei îmbinări interioare). Intrarea internă nu poate produce un rezultat dacă nu se găsește niciun rezultat. Dar asamblarea exterioară va produce întotdeauna o masă rezultantă, chiar dacă nu există rânduri potrivite. Intrarea internă va întoarce întotdeauna tabelele cu valori (dacă sunt returnate). Dar legăturile exterioare pot duce la tabele cu valori nula.