SQL külső csatlakozás

Sql Kulso Csatlakozas



Magától értetődik, hogy az összekapcsolás a relációs adatbázisok egyik legjobban azonosítható jellemzője. Az összekapcsolások lehetővé teszik számunkra, hogy egy vagy több tábla adatait összekapcsoljuk egy kapcsolódó feltétel alapján, hogy koherens adatműveletet hozzunk létre.

Az SQL-ben különféle típusú csatlakozások léteznek, amelyek mindegyike egyedi módon kezeli a résztvevő táblákból vagy a kapott készletből származó adatokat. Az SQL-ben az egyik leggyakoribb csatlakozási típus a KÜLSŐ JOIN.







Az OUTER JOIN az SQL-ben lekéri az összes egyező sort az érintett táblákból, valamint a páratlan sorokat az egyik vagy mindkét táblából. Hasznos lehet, ha NULL értékeket vagy hiányzó készleteket tartalmazó táblázatokkal foglalkozik.



Vizsgáljuk meg tovább, mit csinálnak ezek az összekapcsolások, hogyan működnek, és hogyan használhatjuk őket egy SQL adatbázisban.



Követelmények:

Ebben az oktatóanyagban a MySQL 8.0-val fogunk dolgozni, és a Sakila mintaadatbázist használjuk. Használjon azonban bármilyen más adatkészletet, amelyet alkalmazhatónak tart.





A külső csatlakozások típusai

A KÜLSŐ CSATLAKOZÁSOK három fő típusa létezik az SQL-ben. Az ilyen típusú KÜLSŐ CSATLAKOZÁSOK a következők:

  1. Balra a OUTER JOINS

  2. BAL KÜLSŐ CSATLAKOZÁSOK esetén az összekapcsolás a bal oldali tábla összes sorát lekéri, a jobb oldali táblából pedig csak a megfelelő sorokat. Ha a jobb oldali táblából nincsenek egyező sorok, az összekapcsolás a NULL értékeket adja vissza a jobb oldali tábla oszlopaihoz.



  3. Jobb KÜLSŐ CSATLAKOZÁSOK

  4. Ez hasonló a RIGHT OUTTER JOIN-hez. Azonban lekéri az összes sort a jobb oldali táblázatból, de csak a megfelelő sorokat a bal oldali táblából. Ha a bal oldali táblából nincsenek egyező sorok, az összekapcsolás tartalmazza a bal oldali tábla oszlopainak NULL értékeit.

  5. TELJES KÜLSŐ CSATLAKOZÁSOK

  6. Végül megvannak a TELJES KÜLSŐ CSATLAKOZÁSOK. Ez a fajta illesztés egyesíti a JOBB és BAL külső illesztéseket. Ennek eredményeként az összekapcsolás lekéri az összes sort, ha egyezés van a bal vagy a jobb oldali táblázatban. Ha nincs egyezés, az összekapcsolás a tábla oszlopainak NULL értékeit adja vissza, de nincs egyezés.

Az SQL OUTER JOIN szintaxisa

A következő egy SQL OUTER JOIN szintaxisát fejezi ki. Érdemes azonban szem előtt tartani, hogy a szintaxis a cél adatbázis-motortól függően kissé eltérhet.

A következő egy általános szerkezet:

Oszlopok KIVÁLASZTÁSA
táblázatból1
[BAL | JOBBRA | TELJES] OUTER JOIN tábla2
ON tábla1.oszlop_neve = tábla2.oszlop_neve;

Az OUTER JOIN szintaxisa az SQL-ben meglehetősen magától értetődő.

Példák:

Nézzünk meg néhány használati mintát arra vonatkozóan, hogyan alkalmazhatjuk a különböző típusú KÜLSŐ CSATLAKOZÁSOKAT az SQL-ben.

Mint említettük, a demonstrációhoz a Sakila mintaadatbázist fogjuk használni. Ebben az esetben az „ügyfél” és a „fizetés” táblákat használjuk.

1. példa: LEFT OUTER JOIN

Kezdjük egy KÜLSŐ CSATLAKOZÁSSAL. Tegyük fel, hogy le akarjuk kérni az összes ügyfélinformációt a fizetési információival együtt, ha rendelkezésre állnak.

Ez alkalmazhatóvá teszi a LEFT OUTTER JOIN-t, mivel szeretnénk minden ügyfélinformációt (bal oldalon) és fizetési információt, ha rendelkezésre áll (jobbra).

Ha az ügyfél nem fizetett, az összekapcsolás a fizetéssel kapcsolatos oszlopok NULL értékeit mutatja.

Egy példa a következő:

KIVÁLASZTÁS
c.customer_id,
c.first_name,
c.last_name,
p. összeg,
p.fizetési_dátum
TÓL TŐL
ügyfél c
LEFT OUTER JOIN fizetés p
TOVÁBB
c.customer_id = p.customer_id;

Az adott lekérdezésben a „customer_id”, „first_name” és „last_name” oszlopokat a „customer” táblából adjuk meg. Az összeget és a „fizetés_dátumát” is feltüntetjük a „fizetés” táblázatban.

Ezután egy LEFT OUTER JOIN-t hajtunk végre a „customer” és a „payment” táblák között a „customer_id” alapján.

Ezek mind az ügyfelek (akár befizetés történt, akár nem), fizetési adataikkal együtt (ha vannak).

Egy példa kimenet a következő:

2. példa: JOBB KÜLSŐ CSATLAKOZÁS

Most pedig térjünk át a JOBBRA KÜLSŐ CSATLAKOZÁSRA. Tegyük fel, hogy ebben az esetben szeretnénk megadni az összes fizetési információt és a kapcsolódó ügyfelet, ha van ilyen.

Ebben az esetben, ha egy ügyfél fizet, a csatlakozás megjeleníti az ügyfél adatait. Ha egy fizetéshez nincs társított ügyfél, akkor az ügyfélhez kapcsolódó oszlopok NULL értékeit jeleníti meg.

KIVÁLASZTÁS
c.customer_id,
c.first_name,
c.last_name,
p. összeg,
p.fizetési_dátum
TÓL TŐL
ügyfél c
RIGHT OUTER JOIN fizetés p
TOVÁBB
c.customer_id = p.customer_id;

Az így kapott készlet a következő:

3. példa: TELJES KÜLSŐ CSATLAKOZÁS

A TELJES KÜLSŐ CSATLAKOZÁS viszont lekéri az összes ügyfélinformációt és fizetést. Ez magában foglalja az összes ügyfelet és az összes fizetést, és a NULL értékeket mutatja, ahol nincs egyezés a táblák között.

KIVÁLASZTÁS
c.customer_id,
c.first_name,
c.last_name,
p. összeg,
p.fizetési_dátum
TÓL TŐL
ügyfél c
TELJES KÜLSŐ JOIN fizetés p
TOVÁBB
c.customer_id = p.customer_id;

Érdemes szem előtt tartani, hogy a MySQL natívan nem támogatja a TELJES KÜLSŐ CSATLAKOZÁST. Egy kis jiujitsu varázslatot kell végrehajtania a LEFT JOIN, UNION és RIGHT JOIN segítségével. Elég bosszantó, tehetjük hozzá.

Következtetés

Ebben az oktatóanyagban mindent megtudtunk a KÜLSŐ CSATLAKOZÁSOKRÓL. Megtanultuk, hogy mi az OUTER JOIN az SQL-ben, milyen típusú OUTER JOINS, és milyen példákat mutatunk be az ilyen típusú OUTER JOINS használatára.