SQLShack (Magyar)

Ez a cikk teljes áttekintést ad példákkal az SQL Külső összekapcsolás, beleértve a teljes, jobb és bal külső összekapcsolást, valamint lefedi az SQL bal és jobb külső összekapcsolás közötti összefüggést.

Elengedhetetlen annak megértése, hogy az adatokat többszörösből szerezzük be. táblázatok. Lehet, hogy egy kezdőnek nincs elképzelése a Csatlakozásokról az SQL Server-ben. Ebben a tippben áttekintjük az SQL-csatlakozásokat, megtanuljuk az SQL OUTER JOIN-t, annak szintaxisát, példáit és használati eseteit.

Relációs adatbázis-rendszerben a legjobb gyakorlat követni az alapelveket a normalizálás, amelyben alapvetően nagy táblákat osztunk fel a kisebb táblákra. A select utasításban az összekapcsolások segítségével lekérhetjük az adatokat ezekből a táblákból. Csatlakozhatunk a táblákhoz, és ezekből a táblákból megszerezhetjük a szükséges mezőket az eredményhalmazban. Ezeknek a tábláknak rendelkezniük kell valamilyen közös területtel, amely kapcsolatba hozható egymással. Előfordulhat, hogy az adatokat több adatbázisra osztva találja meg, és néha ez egy nagyon összetett struktúra is. A Joins segítségével a több táblázatból, adatbázisból származó adatokat felhasználóbarát módon egyesíthetjük, és ezeket az adatokat az alkalmazásban képviselhetjük.

Az SQL JOIN-t a következő kép segítségével képviselhetjük.

Sok SQL Join típust tudunk használni az SQL Server rendszerben. A következő képen láthatja az SQL csatlakozások kategóriáit

Fedezzük fel az SQL Outer Join elemet a következő szakasz részleteiben.

Az SQL OUTER JOIN áttekintése

Az SQL OUTER JOIN segítségével táblák közötti sorokat illesztünk egymáshoz. Lehet, hogy egyezési sorokat szeretnénk kapni párosítatlan sorokkal együtt az egyik vagy mindkét táblázatból. A következő három típusú SQL OUTER JOINS van.

  1. SQL teljes külső csatlakozás
  2. SQL bal oldali külső csatlakozás
  3. SQL jobb külső csatlakozás

Fedezzük fel az SQL Outer Join egyes példáit.

SQL Full Outer Join

Az SQL Full Outer Join szolgáltatásban mindkét táblázat összes sora szerepel . Ha vannak páratlan sorok, akkor azok NULL értékeket mutatnak.

A példákkal hatékonyan megértjük. Hozzunk létre egy mintatáblát, és illesszünk be abba adatokat.

Mindkét táblázat hivatkozhat az alábbi adatmodellre.

Adjon be adatokat az Alkalmazottak táblába a következő szkript segítségével.

Adatok beszúrása a Részlegek táblába

Logikai kapcsolatot képviselhetünk két tábla között egy Venn-diagram segítségével. A Venn-diagram több átfedő kört tartalmaz, és mindegyik kör egy entitást vagy táblázatot képvisel. A Venn-diagram közös vagy átfedő területe a két táblázat közötti közös értékeket képviseli.

Például a következő képernyőképen két átfedő kör van. Minden kör nehezményezi a táblázatot (Alkalmazottak és Osztályok). A következő példa segítségével értsük meg a TELJES Külső Csatlakozást.

Mindkét táblában van egy közös mezőnk (EmpID); ezért ehhez az oszlophoz csatlakozhatunk a táblához. A következő lekérdezésben meghatároztuk a TELJES KÜLÖNÖS CSATLAKOZÁS osztályok és az Alkalmazottak közötti táblázatot mindkét táblázat EMPID oszlopában.

1
2
3

SELECT *
FROM Alkalmazott
TELJES KÜLSŐ CSATLAKOZÁS Osztályok BE Employee.EmpID = Departments.EmpID;

Az SQL Full Outer Join következõ sorokat ad a kimenetben

  • Sorok egyeztetése mindkét tábla között
  • Mindkét táblázat páratlan sorai (NULL értékek) )

Végezzük el ezt a lekérdezést, hogy visszatérjen a Teljes Külső Csatlakozás lekérdezés kimenetéhez. A következő kimenetet kapjuk.

Láthatunk néhány rekordot NULL értékekkel is. Értsük meg ezt egy jobb módon egy Venn-diagram segítségével.

A következő képernyőképen a következő információkat láthatja

  • EmpID 1, 2,3,4,5 , 6,10 létezik mind az Alkalmazottak, mind az Osztályok táblában. A Teljes Külső Csatlakozás lekérdezés kimenetében mindezeket a sorokat megkapjuk az adatokkal mindkét táblából.
  • Az EmpID 7, 8, 9 létezik az Employee táblában, de a Departments táblában nem. Nem tartalmaz egyező sorokat a részlegek táblázatában; ezért; NULL értékeket kapunk ezekhez a rekordokhoz

Bemutatás céljából helyezzünk be még egy rekordot a Departments táblákba . Ebben a lekérdezésben beillesztjük az EmpID 11-et, amely nem létezik az Alkalmazottak táblába.

Futtassa újra az SQL teljes külső csatlakozás lekérdezést. A következő képen kap egy további sort NULL értékekkel. Nincs alkalmazkodó sorunk az EmpID 11-hez az alkalmazottak táblázatában.Emiatt NULL értékeket kapunk a kimenetben.

Összefoglalásképpen az SQL teljes külső csatlakozását ábrázolhatjuk a következő Venn-diagram segítségével. Megkapjuk azt, amit a kijelölt területen képvisel a Full Outer Join kimenetén.

SQL FULL OUTER JOIN and WHERE záradék

Hozzáadhatunk egy WHERE záradékot egy SQL FULL OUTER JOIN-hoz, hogy a két Join tábla között sorokat kapjunk, amelyeknek nincsenek egyező adataik.

A következő lekérdezésben hozzáadunk egy where záradékot csak NULL értékű rekordokat mutat.

1
2
3
4
5

SELECT *
Munkavállalótól
TELJES KÜLSŐ CSATLAKOZÁS Osztályok BE Employee.EmpID = Departments.EmpID
WHERE Employee.EmpID NULL
VAGY Departments.EmpID NULL;

Hajtsa végre ezt a parancsot, és tekintse meg a kimenetet. Csak azokat a sorokat adja vissza, amelyek nem egyeznek sem az Alkalmazottak, sem az Osztályok táblában.

SQL LEFT OUTER JOIN

SQL bal oldali külső csatlakozás esetén a következő sorokat kapjuk a kimenetünkben.

  • Ez megadja a megfelelő tábla kimenetét mindkét táblázat között
  • Ha egyetlen rekord sem egyezik a bal oldali táblából azokat a rekordokat is megjeleníti, amelyek NULL értékekkel rendelkeznek

A következő kód végrehajtásával adja vissza az SQL LEFT OUTER JOIN kimenetet

1
2
3

KIVÁLASZT * “855a9d8a79”>

A következő képen láthatjuk, hogy NULL értékeink vannak az EmpID 7,8 és 9 esetén. Ezek az EmpID nem léteznek a jobb oldalon Osztálytábla.

Meg kell jegyeznünk a táblázat elhelyezését a Join utasításban. Jelenleg a bal oldalon van egy Employee táblázat, a jobb oldalon pedig a Departments táblázat.

Írjuk át a lekérdezést, és cseréljük le a táblák pozícióját a lekérdezésben. Ebben a lekérdezésben a Department tábla bal helyzetben van, ezért a Bal bal külső csatlakozásnak ellenőriznie kell a táblázat értékeit, és NULL értéket kell visszaadnia az esetleges eltérés esetén.

A következő képernyőképen: lásd, hogy csak egy NULL érték az EmpID 11-hez. Ez azért van, mert az EmpID 11 nem érhető el az Alkalmazottak táblában.

Mint Összefoglaló módon az SQL Left Outer Join-t ábrázolhatjuk a következő Venn-diagram segítségével. A kiemelt területet az SQL Left Outer Join kimenetében kapjuk meg.

SQL Right OUTER JOIN

Az SQL Right Outer Join programban a következő sorokat kapjuk a kimenetünkben.

  • Ez megadja a két táblázat közötti egyező sor kimenetét
  • Ha egyetlen rekord sem egyezik a megfelelő tábla, azokat a rekordokat NULL értékekkel is megjeleníti

A jobb oldali külső csatlakozás kimenetének megszerzéséhez hajtsa végre a következő lekérdezést

1
2
3

SELECT *
FROM Employee
JOBB KÜLSŐ CSATLAKOZÁS Osztályok ON Employee.EmpID = Departments.EmpID

A következő képen láthatja, hogy az összes megfelelő sort egy sor NULL értékkel együtt kapjuk. A null érték sor EmpID 11-es, mert nem létezik az Alkalmazottak táblában. Azt is észreveheti, hogy a Department részlege a megfelelő helyen van a Join-ban. Emiatt nem kapunk olyan értékeket az Employee táblából (bal pozíció), amelyek nem egyeznek a Department táblával (jobb oldal).

Amint azt korábban kiemeltük, a táblázat pozíciója fontos a JOIN utasításban. Ha megváltoztatjuk a táblázat pozícióit, akkor más kimenetet kapunk. A következő lekérdezésben a Departments (Bal) és az Alkalmazottak tábla (Right) van.

1
2
3
4

SELECT *
FROM Departments
JOBB KÜLSŐ CSATLAKOZÁS Munkavállaló ON Departments.EmpID = Employee.EmpID

A fenti jobb lekérdezés táblázati pozícióinak cseréje után észlelheti a jobb oldali külső csatlakozás különbségét.

Összefoglalásképpen az SQL Right Outer Join-t ábrázolhatjuk a következő Venn-diagram segítségével. Kiemelt területet kapunk az SQL Right Outer Join kimenetén.

Az unió az SQL Left Outer Join és az SQL Right Outer között Csatlakozás

Az előző példákban különféle példákkal vizsgáltuk az SQL bal oldali külső csatlakozást és az SQL jobb külső csatlakozást. Mind az SQL bal oldali külső csatlakozás, mind az SQL jobb külső csatlakozás eredményét egyesíthetjük. Ez adja az SQL Full Outer Join kimenetét.

Végezze el a következő lekérdezést az SQL Full Outer Join alternatívájaként.

1
2
3
4
5
6
7

KIVÁLASZTÁS *
Munkavállalótól
BAL KÜLSŐ CSATLAKOZÁS Osztályok BE Employee.EmpID = Departments.EmpID
UNION ALL ALL
SELECT *
FROM Employee
JOBB KÜLSŐ CSATLAKOZÁS Osztályok ON Employee.EmpID = Departments.EmpID

A következő kimenetben az összeset megkapjuk rekordok egyeztetése, a bal oldali és a jobb oldali táblák feloldása. Hasonló az SQL Full Outer Join kimenetéhez.

Következtetés

Ebben a cikkben feltártuk az SQL Outer Join és annak típusait, példákkal együtt. Remélem, hasznosnak találta ezt a cikket. Nyugodtan adjon visszajelzést az alábbi megjegyzésekben.

  • Szerző
  • Legutóbbi bejegyzések
MCSA tanúsítvánnyal és Microsoft tanúsítvánnyal rendelkező oktatóként Gurgaonban, Indiában, 13 éves tapasztalattal, Rajendra számos nagyvállalatnál dolgozik, elsősorban a teljesítmény optimalizálására, figyelemmel kísérésére, magas rendelkezésre állására, katasztrófa utáni helyreállítási stratégiákra és megvalósításra összpontosítva. Több száz mérvadó cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git és kapcsolódó technológiákról, amelyeket eddig több mint 10 millió olvasó nézett meg.
Az egyik legnagyobb ingyenes online cikkgyűjtemény készítője egyetlen témában, 50 részes sorozatával az SQL Server Always On Availability Groups-on. Az SQL Server közösséghez való hozzájárulása alapján különféle díjakkal ismerték el, köztük a rangos “Az év legjobb szerzője” címet 2020-ban és 2021-ben folyamatosan az SQLShacknél.
Raj mindig érdekli az új kihívásokat, így ha tanácsadásra van szüksége segítséget nyújt az írásaiban szereplő bármely témában, elérhető a [email protected] címen
Rajendra Gupta összes üzenetének megtekintése

Rajendra Gupta legújabb üzenetei (lásd az összeset)
  • Munkamenet időkorlátjai az SQL Server rendszerben Csoportok – 2021. február 8.
  • Apróbb és nagyobb verzió frissítések végrehajtása az AWS RDS SQL Server számára – 2021. január 29.
  • AWS RDS PostgreSQL példányok telepítése – 2021. január 27.

Write a Comment

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük