PostgreSQL Typy spojení: Vnitřní, Vnější, Levé, Pravé
⚡ Chytré shrnutí
PostgreSQL Spoje načítají a kombinují řádky ze dvou nebo více tabulek pomocí sdíleného klíče a zahrnují vnitřní spojení, jako jsou theta, EQUI a přirozená spojení, a vnější spojení pokrývající levé, pravé a úplné výsledky.

Co jsou připojení PostgreSQL?
PostgreSQL Připojuje se používají k načítání dat z více než jedné tabulky. Pomocí operací Join je možné sloučit příkazy SELECT a JOIN do jednoho příkazu. K příkazu je přidána podmínka JOIN a jsou vráceny všechny řádky, které splňují podmínky. Hodnoty z různých tabulek jsou sloučeny na základě společných sloupců. Společný sloupec je většinou primární klíč v první tabulce a cizí klíč druhé tabulky.
PostgreSQL Typy spojení
Existují dva typy připojení PostgreSQL:
- Vnitřní spoje
- Vnější spoje
PostgreSQL Vnitřní spojení
Existují 3 typy vnitřních spojení PostgreSQL:
- Připojte se k Theta
- Přirozené spojení
- Připojte se EQUI
Theta Připojte se
Spojení theta umožňuje spojit dvě tabulky na základě podmínky, kterou představuje theta. Theta spojení může fungovat se všemi operátory porovnání. Ve většině případů je theta spojení označováno jako vnitřní spojení.
Theta spojení je nejzákladnějším typem JOIN. Vrátí všechny řádky z tabulek, kde je splněna podmínka JOIN.
Syntaxe:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Zvažte následující tabulky demo databáze:
Rezervovat:
Cena:
Chceme vidět název každé knihy a odpovídající cenu. Můžeme spustit následující příkaz:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Tím se vrátí následující:
Pouze 3 řádky splnily podmínku spojení.
EQUI Připojte se
Spojení EQUI nám poskytuje způsob, jak spojit dvě tabulky na základě vztahu primární klíč/cizí klíč. Například:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Tím se vrátí následující:
Z obou tabulek byly vráceny záznamy na základě společných sloupců, tedy sloupce id.
Přirozené spojení
Tento typ spojení nám poskytuje další způsob psaní spojení EQUI. Náš předchozí příklad můžeme vylepšit přidáním klíčového slova NATURAL, jak je uvedeno níže:
SELECT * FROM Book NATURAL JOIN Price;
Tím se vrátí následující:
Byl vrácen pouze jeden sloupec ID. NATURAL JOIN si všiml, že sloupec id je v obou tabulkách společný. Vrátil se jen jeden.
PostgreSQL Vnější připojení
Existují 3 typy vnějších spojení PostgreSQL:
- Levý vnější spoj
- Pravé vnější spojení
- Úplné vnější připojení
PostgreSQL Levý vnější spoj
LEFT OUTER JOIN vrátí všechny řádky v tabulce na levé straně a pouze řádky v tabulce na pravé straně, kde byla splněna podmínka spojení.
Syntaxe:
SELECT columns FROM table-1 LEFT OUTER JOIN table-2 ON table-1.column = table-2.column;
Potřebujeme vidět název každé knihy a odpovídající cenu. Můžeme spustit následující příkaz:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
To vrátí následující:
Všechny 4 řádky v tabulce Kniha byly vráceny. Podmínku spojení splnily pouze 3 řádky z tabulky Cena. Proto byli vráceni. Poslední kniha nemá odpovídající cenu.
PostgreSQL Pravé vnější spojení
RIGHT OUTER JOIN vrátí všechny řádky v tabulce na pravé straně a řádky v tabulce na levé straně, kde byla splněna podmínka spojení.
Syntaxe:
SELECT columns FROM table-1 RIGHT OUTER JOIN table-2 ON table-1.column = table-2.column;
Například:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
To vrátí následující:
Byly vráceny všechny řádky v tabulce Price. Byly vráceny pouze řádky v tabulce Book, které splňovaly podmínku spojení. Třetí řádek neobsahuje žádnou hodnotu pro název, protože nebyla nalezena žádná shoda.
Úplné vnější připojení PostgreSQL
Tento typ JOIN vrátí všechny řádky v tabulce na levé straně a všechny řádky v tabulce na pravé straně s nulami, kde podmínka spojení není splněna.
Syntaxe:
SELECT columns FROM table-1 FULL OUTER JOIN table-2 ON table-1.column = table-2.column;
Například:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
To vrátí následující:
Všechny řádky ze všech tabulek byly vráceny s nulami, kde nebyla nalezena žádná shoda.
Pomocí pgAdmin
Výše uvedené úkoly lze v pgAdmin provést následovně. Následující části krok za krokem popíší jednotlivé typy spojení.
pgAdmin Vnitřní spojení
Níže uvedené kroky ukazují, jak spustit každou variantu vnitřního spojení v pgAdmin.
Jak používat Theta Připojte se PostgreSQL pomocí pgAdmin
Níže jsou uvedeny kroky k použití Theta Join PostgreSQL pomocí pgAdmin:
Krok 1) Přihlaste se ke svému účtu pgAdmin
Otevřete pgAdmin a přihlaste se pomocí svých přihlašovacích údajů
Krok 2) Vytvořte demo databázi
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz
Do editoru dotazů zadejte níže uvedený dotaz:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Krok 4) Proveďte dotaz
Klepněte na tlačítko Spustit
Mělo by vrátit následující:
EQUI Připojte se
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
Přirozené spojení
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT * FROM Book NATURAL JOIN Price;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
pgAdmin Jednoduché vnitřní spojení
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
pgAdmin Vnější spojení
Dále spusťte tři varianty vnějšího spojení v pgAdmin pomocí níže uvedených kroků.
Levý vnější spoj
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
Pravé vnější spojení
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
Úplné vnější připojení
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
Krok 4) Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
Stáhněte si databázi použitou v tomto kurzu





























