Čo sú PostgreSQL pripojenia?
PostgreSQL JOIN sa používajú na načítanie údajov z viac ako jednej tabuľky. Pri JOINoch je možné, aby sme kombinovali príkazy SELECT a JOIN do jedného príkazu. Do výkazu sa pridá podmienka JOIN a vrátia sa všetky riadky, ktoré vyhovujú podmienkam.
Hodnoty z rôznych tabuliek sa kombinujú na základe bežných stĺpcov. Spoločný stĺpec je väčšinou primárny kľúč v prvej tabuľke a cudzí kľúč v druhej tabuľke.
V tomto výučbe PostgreSQL sa dozviete:
- Čo sú PostgreSQL pripojenia?
- Typy pripojení
- Vnútorné spojenie
- Pripojte sa Theta
- Pripojte sa k EQUI
- Prirodzené spojenie
- Vonkajšie sa pripája
- ĽAVÝ VONKAJŠÍ PRÍSTUP
- PRAVÉ VONKAJŠIE PRIPOJENIE
- Úplné vonkajšie pripojenie
- Pomocou pgAdmin
- Vnútorné spojenie
- Pripojte sa Theta
- Pripojte sa k EQUI
- Prirodzené spojenie
- INNER JOIN (jednoduché spojenie)
- Vonkajšie sa pripája
- ĽAVÝ VONKAJŠÍ PRÍSTUP
- PRAVÉ VONKAJŠIE PRIPOJENIE
- Úplné vonkajšie pripojenie
Typy pripojení
V PostgreSQL sú dva typy JOIN:
- Vnútorné spojenie
- Vonkajší spoj
Vnútorné spojenie
Existujú 3 typy vnútorných spojení:
- Pripojte sa Theta
- Prirodzené spojenie
- Pripojte sa k EQUI
Pripojte sa Theta
Spojenie theta umožňuje jednej pripojiť dve tabuľky na základe podmienky, ktorú predstavuje theta. Pripojenia Theta môžu pracovať so všetkými operátormi porovnávania. Vo väčšine prípadov sa spojenie theta označuje ako vnútorné spojenie.
Spojenie theta je najzákladnejším typom pripojenia. Vráti všetky riadky z tabuliek, kde je splnená podmienka JOIN.
Syntax:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Zvážte nasledujúce tabuľky demo databázy:
Kniha:
Cena:
Chceme vidieť názov každej knihy a zodpovedajúcu cenu. Môžeme spustiť nasledujúci príkaz:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Takto sa vráti toto:
Podmienku spojenia splnili iba 3 riadky.
Pripojte sa k EQUI
Spojenie EQUI nám poskytuje spôsob spájania dvoch tabuliek na základe vzťahu primárny kľúč / cudzí kľúč. Napríklad:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Takto sa vráti toto:
Záznamy boli vrátené z oboch tabuliek na základe spoločných stĺpcov, to znamená stĺpca id.
Prirodzené spojenie
Tento typ spojenia nám poskytuje iný spôsob zápisu spojenia EQUI. Náš predchádzajúci príklad môžeme vylepšiť pridaním kľúčového slova NATURAL, ako je uvedené nižšie:
SELECT *FROM BookNATURAL JOIN Price;
Takto sa vráti toto:
Bol vrátený iba jeden stĺpec ID. NATURAL JOIN zaznamenal, že stĺpec id je v týchto dvoch tabuľkách spoločný. Vrátený bol iba jeden.
Vonkajšie sa pripája
V PostgreSQL existujú tri typy vonkajších SPOJENÍ:
- Ľavý vonkajší spoj.
- Správne vonkajšie.
- Úplné vonkajšie pripojenie
ĽAVÝ VONKAJŠÍ PRÍSTUP
LEFT OUTER JOIN vráti všetky riadky v tabuľke na ľavej strane a iba riadky v tabuľke na pravej strane, kde bola splnená podmienka spojenia.
Syntax:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;
Musíme vidieť názov každej knihy a zodpovedajúcu cenu. Môžeme spustiť nasledujúci príkaz:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Takto sa vráti toto:
Všetky 4 riadky v tabuľke Kniha boli vrátené. Podmienku spojenia splnili iba 3 riadky z tabuľky Cena. Preto boli vrátení. Posledná kniha nemá zodpovedajúcu hodnotu ceny.
PRAVÉ VONKAJŠIE PRIPOJENIE
PRAVÉ VONKAJŠIE SPOJENIE vráti všetky riadky v tabuľke na pravej strane a riadky v tabuľke na ľavej strane, kde bola splnená podmienka spojenia.
Syntax:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Napríklad:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Takto sa vráti toto:
Všetky riadky v tabuľke cien boli vrátené. Vrátené boli iba riadky v tabuľke Book, ktoré splnili podmienku spojenia. 3 rd riadok nemá žiadnu hodnotu pre názov, pretože nebola nájdená žiadna zhoda.
Úplné vonkajšie pripojenie
Tento typ spojenia vráti všetky riadky v tabuľke na ľavej strane a všetky riadky v tabuľke na pravej strane s nulovými hodnotami, kde podmienka spojenia nie je splnená.
Syntax:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Napríklad:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Takto sa vráti toto:
Všetky riadky zo všetkých tabuliek boli vrátené s nulovými hodnotami, kde sa nenašla žiadna zhoda.
Pomocou pgAdmin
Vyššie uvedené úlohy je možné v programe pgAdmin vykonať nasledovne:
Vnútorné spojenie
Pripojte sa Theta
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
Pripojte sa k EQUI
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
Prirodzené spojenie
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT *FROM BookNATURAL JOIN Price;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
INNER JOIN (jednoduché spojenie)
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
Vonkajšie sa pripája
ĽAVÝ VONKAJŠÍ PRÍSTUP
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
PRAVÉ VONKAJŠIE PRIPOJENIE
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
Úplné vonkajšie pripojenie
Krok 1) Prihláste sa do svojho účtu pgAdmin.
Krok 2)
- Na navigačnom paneli vľavo kliknite na položku Databázy.
- Kliknite na ukážku.
Krok 3) Zadajte dopyt do editora dotazov:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Krok 4) Kliknite na tlačidlo Vykonať.
Mal by vrátiť nasledujúce:
Zhrnutie:
- V PostgreSQL používame JOINy, keď potrebujeme načítať hodnoty z viac ako jednej tabuľky.
- INNER JOIN je najzákladnejším typom JOIN. Vráti všetky záznamy, kde bola splnená zadaná podmienka JOIN.
- Funkcia LEFT OUTER JOIN vráti všetky riadky v ľavej tabuľke a iba riadky v druhej tabuľke, kde bola splnená podmienka spojenia.
- RIGHT OUTER JOIN vráti všetky riadky v pravej tabuľke a iba riadky v druhej tabuľke, kde bola splnená podmienka spojenia.
- Tento typ JOIN vráti všetky riadky v ľavej tabuľke a všetky riadky v pravej tabuľke s nulovými hodnotami, kde podmienka spojenia nie je splnená.
Stiahnite si databázu použitú v tomto výučbe