Spojení PostgreSQL: Vnitřní, Vnější, Levá, Pravá, Přirozené s příklady

Obsah:

Anonim

Co jsou připojení PostgreSQL?

Spojení PostgreSQL se používají k načítání dat z více než jedné tabulky. S JOINs je možné kombinovat příkazy SELECT a JOIN do jednoho příkazu. Do 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íč ve druhé tabulce.

V tomto tutoriálu PostgreSQL se naučíte:

  • Co jsou připojení PostgreSQL?
  • Typy spojení
  • Vnitřní spojení
    • Theta Připojte se
    • Připojte se EQUI
    • Přirozené spojení
  • Vnější spojení
    • VLEVO VENKOVNÍ PŘIPOJENÍ
    • PRAVÉ VNĚJŠÍ PŘIPOJENÍ
    • Úplné vnější připojení
  • Pomocí pgAdmin
  • Vnitřní spojení
    • Theta Připojte se
    • Připojte se EQUI
    • Přirozené spojení
    • INNER JOIN (jednoduché spojení)
  • Vnější spojení
    • VLEVO VENKOVNÍ PŘIPOJENÍ
    • PRAVÉ VNĚJŠÍ PŘIPOJENÍ
    • Úplné vnější připojení

Typy spojení

V PostgreSQL existují dva typy JOIN:

  • Vnitřní spojení
  • Vnější připojení

Vnitřní spojení

Existují 3 typy vnitřních spojení:

  • Theta se připoj
  • Přirozené spojení
  • Připojte se k EQUI

Theta Připojte se

Připojení theta umožňuje jednomu spojení dvou tabulek na základě podmínky, kterou představuje theta. Připojení Theta může pracovat se všemi operátory porovnání. Ve většině případů se spojení theta označuje jako vnitřní spojení.

Spojení theta je nejzákladnějším typem JOIN. Vrátí všechny řádky z tabulek, kde je splněna podmínka JOIN.

Syntax:

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

Zvažte následující tabulky ukázkové 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.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Tím se vrátí následující:

Pouze 3 řádky splnily podmínku spojení.

Připojte se EQUI

Spojení EQUI nám poskytuje způsob spojení dvou tabulek na základě vztahu primárního klíče / cizího klíče. Například:

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

Tím se vrátí následující:

Záznamy byly vráceny z obou tabulek na základě společných sloupců, tj. 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 znázorněno níže:

SELECT *FROM BookNATURAL 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 běžný. Pouze jeden byl vrácen.

Vnější spojení

V PostgreSQL existují tři typy vnějších JOINů:

  • Levý vnější spoj.
  • Pravý vnější spoj.
  • Úplné vnější připojení

VLEVO VENKOVNÍ PŘIPOJENÍ

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í.

Syntax:

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

Musíme vidět název každé knihy a odpovídající cenu. Můžeme spustit následující příkaz:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Tím se vrátí následující:

Všechny 4 řádky v tabulce Book byly vráceny. Pouze 3 řádky z tabulky cen splňovaly podmínku spojení. Proto byli vráceni. Poslední kniha nemá žádnou odpovídající hodnotu ceny.

PRAVÉ VNĚJŠÍ PŘIPOJENÍ

Funkce RIGHT OUTER JOIN vrací všechny řádky v tabulce na pravé straně a řádky v tabulce na levé straně, kde byla splněna podmínka spojení.

Syntax:

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

Například:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Tím se vrátí následující:

Všechny řádky v tabulce cen byly vráceny. Byly vráceny pouze řádky v tabulce Book, které splňovaly podmínku spojení. 3 rd řádek nemá žádnou hodnotu pro název, protože nebyla nalezena žádná shoda.

Úplné vnější připojení

Tento typ spojení vrátí všechny řádky v tabulce na levé straně a všechny řádky v tabulce na pravé straně s nulovými hodnotami, kde není splněna podmínka spojení.

Syntax:

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

Například:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Tím se vrátí následující:

Byly vráceny všechny řádky ze všech tabulek s nulovými hodnotami, kde nebyla nalezena žádná shoda.

Pomocí pgAdmin

Výše uvedené úkoly lze v pgAdmin provést takto:

Vnitřní spojení

Theta Připojte se

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

Připojte se EQUI

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

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

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

Přirozené spojení

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT *FROM BookNATURAL JOIN Price;

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

INNER JOIN (jednoduché spojení)

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

Vnější spojení

VLEVO VENKOVNÍ PŘIPOJENÍ

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

PRAVÉ VNĚJŠÍ PŘIPOJENÍ

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Krok 4) Klikněte na tlačítko Provést.

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)

  1. Na navigačním panelu vlevo klikněte na Databáze.
  2. Klikněte na ukázku.

Krok 3) Zadejte dotaz do editoru dotazů:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Krok 4) Klikněte na tlačítko Provést.

Mělo by vrátit následující:

Souhrn:

  • V PostgreSQL používáme JOINy, když potřebujeme načíst hodnoty z více než jedné tabulky.
  • VNITŘNÍ PŘIPOJENÍ je nejzákladnějším typem PŘIPOJENÍ. Vrátí všechny záznamy, kde byla splněna zadaná podmínka JOIN.
  • LEFT OUTER JOIN vrací 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 pravé tabulce a pouze řádky v druhé tabulce, kde byla splněna podmínka spojení.
  • Tento typ spojení vrátí všechny řádky v levé tabulce a všechny řádky v pravé tabulce s nulovými hodnotami, kde není splněna podmínka spojení.

Stáhněte si databázi použitou v tomto výukovém programu