Belső csatlakozás vs külső csatlakozás
A belső összekapcsolás és a külső összekapcsolás az adatbázisok lekérdezéseinek feldolgozásához használt SQL-illesztési módszerek közül kettő. A csatlakozási záradékok családjába tartoznak (a másik kettő a bal és a jobb csatlakozás). Van azonban egy Self Join, amely speciális helyzetekben használható. A Join célja a mezők kombinálása a két tábla közös értékeivel. Ezek az összekapcsolások több tábla rekordjait egyesítik egy adatbázisban. Eredő halmazokat hoz létre, amelyek egy másik táblaként menthetők.
Mi az az Inner Join?
A leggyakrabban használt SQL Join művelet az Inner Join. Ez tekinthető az alkalmazásokban használt alapértelmezett csatlakozási típusnak. A belső összekapcsolás a join-predikátumot használja két tábla kombinálásához. Feltételezve, hogy a két tábla A és B, akkor az összekapcsolási predikátum összehasonlítja A és B sorait, hogy megtudja az összes olyan párt, amely kielégíti az predikátumot. Az eredmény létrehozásához az A és B táblák összes kielégített sorának oszlopértékeit kombinálja. Úgy tekinthetjük, hogy először veszi az összes rekord keresztillesztését (derékszögű szorzat), majd csak azokat a rekordokat adja vissza, amelyek kielégítik az összekapcsolási predikátumot. A valóságban azonban a derékszögű szorzatot nem számítják ki, mert nagyon nem hatékony. Ehelyett a rendszer hash csatlakozást vagy rendezés-egyesítést használ.
Mi az a külső csatlakozás?
A belső csatlakozással ellentétben a külső összekapcsolás minden rekordot megőrzi, még akkor is, ha nem talál megfelelő rekordot. Ez azt jelenti, hogy a külső csatlakozásnak szüksége van egy rekordra, hogy megtalálja a megfelelő rekordot, hogy megjelenjen az eredményben. Ehelyett az összes rekordot visszaadja, de a páratlan rekordoknak null értéke lesz. A külső csatlakozások három alkategóriára oszthatók. Ezek bal külső csatlakozás, jobb külső csatlakozás és teljes külső csatlakozás. Ez a megkülönböztetés azon alapul, hogy melyik tábla (bal oldali tábla, jobb oldali tábla vagy mindkét tábla) sora marad meg, ha páratlan rekordokat talál. A bal oldali külső csatlakozások (más néven egyszerűen baloldali csatlakozások) a bal oldali tábla összes rekordját megőrzik. Ez azt jelenti, hogy még akkor is, ha az egyező rekordok száma nulla, akkor is lesznek rekordok az eredménytáblázatban, de a B minden oszlopában nulla lesz. Más szóval, a bal oldali táblázat összes értéke a jobb oldali illesztett értékekkel tér vissza. táblázat (vagy null értékek, ha nincs párosítva). Ha a bal oldali táblázat több sorából származó értékeket a jobb oldali táblázat egyetlen sorával egyezteti, a jobb oldali táblázat sora szükség szerint megismétlődik. A jobb oldali csatlakozás nagyjából hasonlít a bal oldali csatlakozáshoz, de a táblák kezelését tiszteletben tartják. Ez azt jelenti, hogy az eredményben a jobb oldali tábla összes sora legalább egyszer szerepelni fog egyező bal oldali táblaértékekkel (és null értékekkel a nem egyeztetett jobboldali értékek esetén). A teljes külső csatlakozás átfogóbb, mint a bal és a jobb oldali külső csatlakozások. Ez azt eredményezi, hogy a bal és a jobb oldali külső összeillesztés hatását kombinálja.
Mi a különbség a belső csatlakozás és a külső csatlakozás között?
A belső összekapcsolás nem tartja meg a páratlan sorokat az eredményben, de a külső összekapcsolás megtartja legalább egy tábla összes rekordját (attól függően, hogy melyik külső összekapcsolást használta). Tehát nem kívánatos az a viselkedés, hogy az eredménytábla páratlan sorain nincs információ, mindig a külső illesztések egyikét kell használnia (a belső összekapcsolás helyett). Előfordulhat, hogy a belső összekapcsolás nem hoz eredményt, ha nem található egyezés. De a külső összekapcsolás mindig eredménytáblázatot eredményez, még akkor is, ha nincsenek megfelelő sorok. A belső összekapcsolás mindig értékeket tartalmazó táblákat ad vissza (ha visszaadta). A külső összekapcsolások azonban null értékekkel rendelkező táblázatokat eredményezhetnek.