PostgreSQL Illesztési típusok: Belső, Külső, Bal, Jobb

⚡ Okos összefoglaló

PostgreSQL Az illesztések két vagy több tábla sorait kérik le és kombinálják egy megosztott kulcs használatával, és belső illesztéseket tartalmaznak, mint például a theta, az EQUI és a natural, valamint külső illesztéseket, amelyek lefedik a bal, jobb és teljes eredményeket.

  • 🔗 Kombájn: Több tábla oszlopainak egyesítését teszi lehetővé egy közös kulcs alapján.
  • 🎯 Belső összekapcsolás: A belső illesztések csak azokat a sorokat adják vissza, amelyekben teljesül az illesztési feltétel.
  • ⬅️ Bal csatlakozás: A LEFT OUTER JOIN függvény minden bal oldali táblabeli sort megőrz, és NULL értékeket ad a nem egyező jobb oldali sorokhoz.
  • ➡️ Jobb csatlakozás: A RIGHT OUTER JOIN függvény minden jobb oldali tábla sorát megőrzi, a nem egyező bal oldali sorokhoz pedig NULL értékeket ad.
  • 🔵 Teljes csatlakozás: A FULL OUTER JOIN mindkét tábla összes olyan sorát adja vissza NULL értékkel, ahol nincs egyezés.
  • 🤖 MI segítség: A mesterséges intelligencia asszisztensek kiválasztják a megfelelő illesztési típust, és beírják az ON feltételt.

PostgreSQL Csatlakozási típusok

Mik azok a csatlakozások PostgreSQL?

PostgreSQL csatlakozik egynél több táblából történő adatlekérésre szolgálnak. Az illesztések (Join) segítségével a SELECT és a JOIN utasításokat egyetlen utasítássá egyesíthetjük. Egy JOIN feltételt adunk az utasításhoz, és az összes olyan sort visszaadjuk, amely megfelel a feltételeknek. A különböző táblák értékei a közös oszlopok alapján vannak kombinálva. A közös oszlop többnyire az első tábla elsődleges kulcsa és a második tábla idegen kulcsa.

PostgreSQL Csatlakozási típusok

Kétféle csatlakozás létezik PostgreSQL:

  • Belső csatlakozások
  • Külső csatlakozások

PostgreSQL Belső összekapcsolás

3 típusú belső csatlakozás létezik PostgreSQL:

  • Theta csatlakozzon
  • Természetes csatlakozás
  • EQUI csatlakozás

Theta Join

A théta összekapcsolás lehetővé teszi két tábla összekapcsolását a théta által képviselt feltétel alapján. A théta csatlakozások minden összehasonlító operátorral működhetnek. A legtöbb esetben a théta csatlakozást belső csatlakozásnak nevezik.

A theta join a JOIN legalapvetőbb típusa. Visszaadja a táblák összes sorát, ahol a JOIN feltétel teljesül.

Syntax:

SELECT columns
FROM table-1
INNER JOIN table-2
ON table-1.column = table-2.column;

Tekintsük a Demo adatbázis alábbi táblázatait:

Könyv:

PostgreSQL Theta Join

Ár:

PostgreSQL Theta Join

Szeretnénk látni az egyes könyvek nevét és a hozzá tartozó árat. A következő parancsot futtathatjuk:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Ez a következőt adja vissza:

PostgreSQL Theta Join

Csak 3 sor felelt meg az összekapcsolási feltételnek.

EQUI Csatlakozás

Az EQUI join lehetőséget biztosít két tábla összekapcsolására az elsődleges kulcs/idegen kulcs kapcsolat alapján. Például:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Ez a következőt adja vissza:

PostgreSQL EQUI Csatlakozás

Mindkét táblából a rekordok a közös oszlopok, azaz az id oszlop alapján kerültek visszaadásra.

Természetes csatlakozás

Ez a fajta csatlakozás egy másik módot kínál az EQUI-csatlakozás írására. Az előző példánkat javíthatjuk a NATURAL kulcsszó hozzáadásával, az alábbiak szerint:

SELECT *
FROM Book
NATURAL JOIN Price;

Ez a következőt adja vissza:

PostgreSQL Természetes csatlakozás

Csak egy azonosítóoszlop került visszaadásra. A NATURAL JOIN meg tudta jegyezni, hogy az id oszlop közös a két táblában. Csak egy került vissza.

PostgreSQL Külső csatlakozás

3 típusú külső csatlakozás létezik PostgreSQL:

  • Bal külső csatlakozás
  • Jobb külső csatlakozás
  • Teljes külső csatlakozás

PostgreSQL Bal külső csatlakozás

A LEFT OUTER JOIN a táblázat összes sorát a bal oldalon, és a jobb oldali táblázatban csak azokat a sorokat adja vissza, ahol az összekapcsolási feltétel teljesült.

Syntax:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Látnunk kell az egyes könyvek nevét és a hozzá tartozó árat. A következő parancsot futtathatjuk:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Ez a következőket adja vissza:

PostgreSQL Bal külső csatlakozás

A Könyv táblázat mind a 4 sora visszakerült. Az Ár táblázatból mindössze 3 sor felelt meg az összekapcsolási feltételnek. Ezért visszaküldték őket. Az utolsó könyvnek nincs megfelelő árértéke.

PostgreSQL Jobb külső csatlakozás

A JOBB KÜLSŐ ÖSSZEFÜGGÉS visszaadja a táblázat összes sorát a jobb oldalon, és a táblázat összes sorát a bal oldalon, ahol az összekapcsolási feltétel teljesült.

Syntax:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Például:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Ez a következőket adja vissza:

PostgreSQL Jobb külső csatlakozás

A Price tábla összes sora visszaadásra került. A Book tábla csak azokat a sorait adta vissza, amelyek megfeleltek az illesztési feltételnek. A 3. sorban a name paraméternek nincs értéke, mivel nem található egyezés.

Teljes külső csatlakozás PostgreSQL

Ez a típusú JOIN a táblázat összes sorát a bal oldalon, a táblázat összes sorát pedig a jobb oldalon nullával adja vissza, ahol az összekapcsolási feltétel nem teljesül.

Syntax:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Például:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Ez a következőket adja vissza:

PostgreSQL Teljes külső csatlakozás

Az összes tábla összes sora visszakerült, nullákkal, ahol nem található egyezés.

pgAdmin használatával

A fenti feladatok a pgAdminban a következőképpen hajthatók végre. A következő szakaszok lépésről lépésre bemutatják az egyes illesztési típusokat.

pgAdmin belső csatlakozás

Az alábbi lépések bemutatják, hogyan futtathatók az egyes belső illesztési változatok a pgAdminban.

A Theta használata Csatlakozzon PostgreSQL pgAdmin használatával

Az alábbiakban a Theta Join használatának lépései találhatók. PostgreSQL pgAdmin használatával:

1. lépés) Jelentkezzen be pgAdmin fiókjába

Nyissa meg a pgAdmin alkalmazást, és jelentkezzen be a hitelesítő adataival

2. lépés) Hozzon létre bemutató adatbázist

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin belső csatlakozás

3. lépés) Írja be a lekérdezést

Írja be az alábbi lekérdezést a lekérdezésszerkesztőbe:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

4. lépés) Hajtsa végre a lekérdezést

Kattintson a Végrehajtás gombra

pgAdmin belső csatlakozás

A következőt kell visszaadnia:

pgAdmin belső csatlakozás

EQUI Csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin EQUI Csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin EQUI Csatlakozás

A következőt kell visszaadnia:

pgAdmin EQUI Csatlakozás

Természetes csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin Természetes csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT *
FROM Book
NATURAL JOIN Price;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin Természetes csatlakozás

A következőt kell visszaadnia:

pgAdmin Természetes csatlakozás

pgAdmin Egyszerű belső csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin Egyszerű belső csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin Egyszerű belső csatlakozás

A következőt kell visszaadnia:

pgAdmin Egyszerű belső csatlakozás

pgAdmin külső csatlakozás

Ezután futtassa a három külső illesztési változatot a pgAdminban az alábbi lépésekkel.

Bal külső csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin bal külső csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin bal külső csatlakozás

A következőt kell visszaadnia:

pgAdmin bal külső csatlakozás

Jobb külső csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin jobb külső csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin jobb külső csatlakozás

A következőt kell visszaadnia:

pgAdmin jobb külső csatlakozás

Teljes külső csatlakozás

Step 1) Jelentkezzen be pgAdmin fiókjába.

Step 2)

  • A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
  • Kattintson a Demo gombra.

pgAdmin Teljes külső csatlakozás

Step 3) Írja be a lekérdezést a lekérdezésszerkesztőbe:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Step 4) Kattintson a Végrehajtás gombra.

pgAdmin Teljes külső csatlakozás

A következőt kell visszaadnia:

pgAdmin Teljes külső csatlakozás

Töltse le az oktatóanyagban használt adatbázist

GYIK

Egy INNER JOIN csak azokat a sorokat adja vissza, amelyek mindkét táblában egyeznek. Egy OUTER JOIN is megőrzi a nem egyező sorokat, a hiányzó oszlopokat NULL értékkel tölti ki, és lehet balra, jobbra vagy teljesre igazított attól függően, hogy melyik táblát őrizzük meg.

Egy JOIN művelet különböző táblák oszlopait egyesíti egymás mellett egy megfelelő kulcs segítségével, így minden sor szélesebb lesz. Egy UNION művelet két eredményhalmaz sorait függőlegesen egymásra rakja, és ugyanannyi oszlopot igényel.

Az önillesztés egy táblát önmagához csatol két táblaalias használatával. Hasznos egy tábla sorainak összehasonlításához, például az alkalmazottak és az ugyanabban a táblában tárolt vezetők egyeztetéséhez.

A CROSS JOIN függvény a Descartes-szorzatot adja vissza, az első tábla minden sorát a második tábla minden sorával párosítva. Nem használ ON feltételt, így gyorsan nagyon nagy eredményhalmazokat tud előállítani.

Igen. Több JOIN záradékot is láncba foglalhatsz egyetlen lekérdezésben, minden további táblához egy másik JOIN és ON feltételt adva hozzá. PostgreSQL kiértékeli őket egyetlen kombinált eredményhalmaz létrehozása érdekében.

Az olyan mesterséges intelligencia asszisztensek, mint a GitHub Copilot, javasolják a helyes illesztési típust, kiírják az ON feltételt az idegen kulcsokból, és megjelölik a hiányzó feltételt, amely véletlenszerű derékszögű szorzatot okozhatna, csökkentve ezzel a gyakori illesztési hibákat.

Igen. A mesterséges intelligencia által használt asszisztensek beolvashatják a lekérdezési tervet, indexeket javasolhatnak az illesztési oszlopokhoz, és átírhatják az illesztési sorrendet vagy feltételeket. Az adatbázis továbbra is érvényesíti a helyességet, ezért minden javaslatot ellenőrizni kell, mielőtt éles környezetben futtatná.

Nincs olyan illesztés, ami mindig a leggyorsabb lenne; a teljesítmény az indexektől, a sorok számától és a szűrőktől függ. Az indexelt kulcsokon végzett belső illesztések általában hatékonyak, míg a nagy, nem indexelt táblákon végzett teljes külső illesztések a legköltségesebbek.

Foglald össze ezt a bejegyzést a következőképpen: