Połączenia PostgreSQL: wewnętrzne, zewnętrzne, lewe, prawe, naturalne z przykładami

Spisie treści:

Anonim

Co to są połączenia PostgreSQL?

POŁĄCZENIA PostgreSQL są używane do pobierania danych z więcej niż jednej tabeli. Dzięki JOINs możemy połączyć instrukcje SELECT i JOIN w jedną instrukcję. Do instrukcji dodawany jest warunek JOIN i zwracane są wszystkie wiersze, które spełniają te warunki.

Wartości z różnych tabel są łączone na podstawie wspólnych kolumn. Kolumna wspólna to przeważnie klucz podstawowy w pierwszej tabeli i klucz obcy w drugiej tabeli.

Z tego samouczka PostgreSQL dowiesz się:

  • Co to są połączenia PostgreSQL?
  • Rodzaje połączeń
  • Połączenia wewnętrzne
    • Dołącz do Theta
    • EQUI Dołącz
    • Naturalne połączenie
  • Połączenia zewnętrzne
    • POŁĄCZENIE LEWE ZEWNĘTRZNE
    • PRAWE ZEWNĘTRZNE POŁĄCZENIE
    • Pełne połączenie zewnętrzne
  • Korzystanie z pgAdmin
  • Połączenia wewnętrzne
    • Dołącz do Theta
    • EQUI Dołącz
    • Naturalne połączenie
    • INNER JOIN (proste połączenie)
  • Połączenia zewnętrzne
    • POŁĄCZENIE LEWE ZEWNĘTRZNE
    • PRAWE ZEWNĘTRZNE POŁĄCZENIE
    • Pełne połączenie zewnętrzne

Rodzaje połączeń

W PostgreSQL są dwa typy JOIN:

  • Połączenia wewnętrzne
  • Połączenie zewnętrzne

Połączenia wewnętrzne

Istnieją 3 rodzaje sprzężeń wewnętrznych:

  • Dołącz do Theta
  • Naturalne połączenie
  • EQUI dołącz

Dołącz do Theta

Łączenie theta umożliwia dołączenie do dwóch stołów na podstawie warunku reprezentowanego przez theta. Łączenia Theta mogą działać ze wszystkimi operatorami porównania. W większości przypadków złączenie theta jest nazywane złączeniem wewnętrznym.

Łączenie theta jest najbardziej podstawowym typem JOIN. Zwróci wszystkie wiersze z tabel, w których warunek JOIN jest spełniony.

Składnia:

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

Rozważ następujące tabele bazy danych Demo:

Książka:

Cena £:

Chcemy zobaczyć nazwę każdej książki i odpowiadającą jej cenę. Możemy uruchomić następujące polecenie:

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

Zwróci to:

Tylko 3 wiersze spełniały warunek łączenia.

EQUI Dołącz

Łączenie EQUI umożliwia nam połączenie dwóch tabel na podstawie relacji klucz podstawowy / klucz obcy. Na przykład:

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

Zwróci to:

Rekordy zostały zwrócone z obu tabel na podstawie wspólnych kolumn, czyli kolumny id.

Naturalne połączenie

Ten typ sprzężenia zapewnia nam inny sposób zapisania sprzężenia EQUI. Możemy ulepszyć nasz poprzedni przykład, dodając słowo kluczowe NATURAL, jak pokazano poniżej:

SELECT *FROM BookNATURAL JOIN Price;

Zwróci to:

Zwrócono tylko jedną kolumnę identyfikatora. NATURAL JOIN był w stanie zauważyć, że kolumna id jest wspólna w obu tabelach. Zwrócony został tylko jeden.

Połączenia zewnętrzne

Istnieją trzy typy zewnętrznych JOIN w PostgreSQL:

  • Lewe połączenie zewnętrzne.
  • Prawe połączenie zewnętrzne.
  • Pełne połączenie zewnętrzne

POŁĄCZENIE LEWE ZEWNĘTRZNE

LEFT OUTER JOIN zwróci wszystkie wiersze w tabeli po lewej stronie i tylko wiersze w tabeli po prawej stronie, w których warunek łączenia został spełniony.

Składnia:

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

Musimy zobaczyć nazwę każdej książki i odpowiadającą jej cenę. Możemy uruchomić następujące polecenie:

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

Zwraca to:

Wszystkie 4 wiersze w tabeli Book zostały zwrócone. Tylko 3 wiersze z tabeli Price spełniały warunek łączenia. Dlatego zostali zwróceni. Ostatnia książka nie ma odpowiedniej ceny.

PRAWE ZEWNĘTRZNE POŁĄCZENIE

RIGHT OUTER JOIN zwraca wszystkie wiersze w tabeli po prawej stronie i wiersze w tabeli po lewej stronie, w których został spełniony warunek łączenia.

Składnia:

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

Na przykład:

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

Zwraca to:

Wszystkie wiersze w tabeli cen zostały zwrócone. Zwrócono tylko te wiersze w tabeli Book, które spełniały warunek łączenia. 3 rd rząd nie ma żadnej wartości dla nazwy, ponieważ nie znaleziono dopasowania.

Pełne połączenie zewnętrzne

Ten typ JOIN zwróci wszystkie wiersze w tabeli po lewej stronie i wszystkie wiersze w tabeli po prawej stronie z wartościami zerowymi, w przypadku których warunek łączenia nie jest spełniony.

Składnia:

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

Na przykład:

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

Zwraca to:

Wszystkie wiersze ze wszystkich tabel zostały zwrócone z wartościami null, w przypadku których nie znaleziono dopasowania.

Korzystanie z pgAdmin

Powyższe zadania można wykonać w pgAdmin w następujący sposób:

Połączenia wewnętrzne

Dołącz do Theta

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

EQUI Dołącz

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

Naturalne połączenie

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT *FROM BookNATURAL JOIN Price;

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

INNER JOIN (proste połączenie)

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

Połączenia zewnętrzne

POŁĄCZENIE LEWE ZEWNĘTRZNE

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

PRAWE ZEWNĘTRZNE POŁĄCZENIE

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

Pełne połączenie zewnętrzne

Krok 1) Zaloguj się do swojego konta pgAdmin.

Krok 2)

  1. Z paska nawigacji po lewej stronie kliknij Bazy danych.
  2. Kliknij opcję Demo.

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

Powinien zwrócić następujące informacje:

Podsumowanie:

  • W PostgreSQL używamy JOIN, gdy potrzebujemy pobrać wartości z więcej niż jednej tabeli.
  • INNER JOIN jest najbardziej podstawowym typem JOIN. Zwraca wszystkie rekordy, w których spełniony był określony warunek JOIN.
  • LEFT OUTER JOIN zwraca wszystkie wiersze w tabeli po lewej stronie i tylko wiersze w drugiej tabeli, w których warunek łączenia został spełniony.
  • RIGHT OUTER JOIN zwraca wszystkie wiersze w tabeli po prawej stronie i tylko wiersze w drugiej tabeli, w których warunek łączenia został spełniony.
  • Ten typ JOIN zwraca wszystkie wiersze w tabeli po lewej stronie i wszystkie wiersze w tabeli po prawej stronie z wartościami zerowymi, w przypadku których warunek łączenia nie jest spełniony.

Pobierz bazę danych używaną w tym samouczku