PostgreSQL Typy spojení s příklady: Vnitřní, Vnější, Levý, Pravý
Co jsou připojení PostgreSQL?
PostgreSQL Připojuje se používají pro získávání dat z více než jedné tabulky. S Joins je možné spojit příkazy SELECT a JOIN do jediného 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 kombinovány 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.
Vnější spojení Postgres
Existují 3 typy vnějších spojení PostgreSQL:
- Levý vnější spoj
- Pravé vnější spojení
- Úplné vnější připojení
Postgres Left Outer Join
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.
Postgres Right Outer Join
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í:
Všechny řádky v tabulce Ceny byly vráceny. Byly vráceny pouze řádky v tabulce Kniha, které splnily podmínku spojení. 3rd řádek nemá žá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ě:
pgAdmin Vnitřní spojení
Jak používat Theta Připojte se PostgreSQL pomocí pgAdmin
Níže jsou uvedeny kroky pro použití Theta Join v Postgres 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í
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í:
Shrnutí
- In PostgreSQL, používáme JOINy, když potřebujeme získat hodnoty z více než jedné tabulky.
- INNER JOIN je nejzákladnějším typem JOIN. Vrátí všechny záznamy, kde byla splněna zadaná podmínka JOIN.
- LEFT OUTER JOIN vrátí všechny řádky v levé tabulce a pouze řádky v druhé tabulce, kde byla splněna podmínka spojení.
- RIGHT OUTER JOIN vrátí všechny řádky v tabulce vpravo a pouze řádky v druhé tabulce, kde byla splněna podmínka spojení.
- Tento typ JOIN vrátí všechny řádky v levé tabulce a všechny řádky v pravé tabulce s nulami, kde podmínka spojení není splněna.
Stáhněte si databázi použitou v tomto kurzu