PostgreSQL Typy połączeń: Wewnętrzne, Zewnętrzne, Lewe, Prawe

⚡ Inteligentne podsumowanie

PostgreSQL Połączenia umożliwiają pobieranie i łączenie wierszy z dwóch lub więcej tabel przy użyciu klucza współdzielonego. Obejmują one połączenia wewnętrzne, takie jak theta, EQUI i naturalne, a także połączenia zewnętrzne obejmujące wyniki lewe, prawe i pełne.

  • 🔗 Połączyć: Łączy kolumny z wielu tabel w oparciu o wspólny klucz.
  • 🎯 Połączenie wewnętrzne: Połączenia wewnętrzne zwracają tylko wiersze, dla których spełniony jest warunek połączenia.
  • ⬅️ Połączenie lewe: LEFT OUTER JOIN zachowuje każdy wiersz tabeli po lewej stronie, dodając wartości NULL dla niedopasowanych wierszy po prawej stronie.
  • ➡️ Prawe dołączenie: RIGHT OUTER JOIN zachowuje każdy wiersz tabeli po prawej stronie, dodając wartości NULL dla niedopasowanych wierszy po lewej stronie.
  • 🔵 Pełne dołączenie: FULL OUTER JOIN zwraca wszystkie wiersze z obu tabel zawierające wartości NULL, dla których nie ma dopasowania.
  • 🤖 Pomoc AI: Asystenci AI wybierają właściwy typ łączenia i zapisują warunek ON.

PostgreSQL Typy łączenia

Czym są Joiny PostgreSQL?

PostgreSQL Łączy Służą do pobierania danych z więcej niż jednej tabeli. Dzięki połączeniom możliwe jest połączenie instrukcji SELECT i JOIN w jedną. Do instrukcji dodawany jest warunek JOIN, a wszystkie wiersze spełniające ten warunek są zwracane. Wartości z różnych tabel są łączone na podstawie wspólnych kolumn. Wspólna kolumna to zazwyczaj klucz podstawowy w pierwszej tabeli i klucz obcy w drugiej tabeli.

PostgreSQL Typy łączenia

Istnieją dwa rodzaje złączeń PostgreSQL:

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

PostgreSQL Połączenie wewnętrzne

Istnieją 3 typy połączeń wewnętrznych PostgreSQL:

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

Dołącz do Thety

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

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

Składnia:

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

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

Książka:

PostgreSQL Dołącz do Thety

Cena:

PostgreSQL Dołącz do Thety

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

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Spowoduje to zwrócenie następujących informacji:

PostgreSQL Dołącz do Thety

Tylko 3 wiersze spełniły warunek złączenia.

Dołącz do EQUI

Łączenie EQUI umożliwia nam łączenie dwóch tabel w oparciu o relację klucz podstawowy/klucz obcy. Na przykład:

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

Spowoduje to zwrócenie następujących informacji:

PostgreSQL Dołącz do EQUI

Z obu tabel zwrócone zostały rekordy w oparciu o wspólne kolumny, czyli kolumnę id.

Naturalne połączenie

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

SELECT *
FROM Book
NATURAL JOIN Price;

Spowoduje to zwrócenie następujących informacji:

PostgreSQL Naturalne połączenie

Została zwrócona tylko jedna kolumna identyfikatora. Funkcja NATURAL JOIN zauważyła, że ​​kolumna id jest wspólna w obu tabelach. Zwrócono tylko jednego.

PostgreSQL Połączenie zewnętrzne

Istnieją 3 typy złączeń zewnętrznych PostgreSQL:

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

PostgreSQL Lewe połączenie zewnętrzne

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

Składnia:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON 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.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

To zwraca następujące informacje:

PostgreSQL Lewe połączenie zewnętrzne

Wszystkie 4 wiersze w tabeli Book zostały zwrócone. Tylko 3 wiersze z tabeli Cen spełniły warunek złączenia. Dlatego zostały zwrócone. Ostatnia książka nie ma odpowiadającej jej wartości cenowej.

PostgreSQL Prawe połączenie zewnętrzne

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

Składnia:

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

Na przykład:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

To zwraca następujące informacje:

PostgreSQL Prawe połączenie zewnętrzne

Zwrócono wszystkie wiersze z tabeli „Cena”. Zwrócono tylko wiersze z tabeli „Książka”, które spełniły warunek łączenia. Trzeci wiersz nie zawiera wartości dla nazwy, ponieważ nie znaleziono dopasowania.

Pełne zewnętrzne dołączenie PostgreSQL

Ten typ JOIN zwróci wszystkie wiersze tabeli po lewej stronie i wszystkie wiersze tabeli po prawej stronie z wartościami null, jeśli warunek złączenia nie jest spełniony.

Składnia:

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

Na przykład:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

To zwraca następujące informacje:

PostgreSQL Pełne połączenie zewnętrzne

Zwrócone zostały wszystkie wiersze ze wszystkich tabel, z wartościami null w przypadku braku dopasowania.

Korzystanie z pgAdmina

Powyższe zadania można wykonać w pgAdmin w następujący sposób. Poniższe sekcje opisują krok po kroku każdy typ łączenia.

Wewnętrzne połączenie pgAdmin

Poniższe kroki pokazują, jak uruchomić każdą odmianę łączenia wewnętrznego w pgAdmin.

Jak korzystać z Theta Dołącz PostgreSQL za pomocą pgAdmina

Poniżej przedstawiono kroki korzystania z funkcji Theta Join PostgreSQL używając pgAdmina:

Krok 1) Zaloguj się na swoje konto pgAdmin

Otwórz pgAdmin i zaloguj się, używając swoich danych uwierzytelniających

Krok 2) Utwórz bazę danych Demo

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

Wewnętrzne połączenie pgAdmin

Krok 3) Wpisz zapytanie

Wpisz poniższe zapytanie w edytorze zapytań:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Krok 4) Wykonaj zapytanie

Kliknij przycisk Wykonaj

Wewnętrzne połączenie pgAdmin

Powinno zostać zwrócone:

Wewnętrzne połączenie pgAdmin

Dołącz do EQUI

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin EQUI Dołącz

Krok 3) Wpisz zapytanie w edytorze zapytań:

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

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin EQUI Dołącz

Powinno zostać zwrócone:

pgAdmin EQUI Dołącz

Naturalne połączenie

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin Naturalne dołączenie

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT *
FROM Book
NATURAL JOIN Price;

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin Naturalne dołączenie

Powinno zostać zwrócone:

pgAdmin Naturalne dołączenie

pgAdmin Proste połączenie wewnętrzne

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin Proste połączenie wewnętrzne

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin Proste połączenie wewnętrzne

Powinno zostać zwrócone:

pgAdmin Proste połączenie wewnętrzne

Połączenie zewnętrzne pgAdmin

Następnie uruchom trzy warianty sprzężenia zewnętrznego w pgAdmin, wykonując poniższe kroki.

Lewe połączenie zewnętrzne

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin opuścił zewnętrzne połączenie

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin opuścił zewnętrzne połączenie

Powinno zostać zwrócone:

pgAdmin opuścił zewnętrzne połączenie

Prawe połączenie zewnętrzne

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin Prawe połączenie zewnętrzne

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin Prawe połączenie zewnętrzne

Powinno zostać zwrócone:

pgAdmin Prawe połączenie zewnętrzne

Pełne połączenie zewnętrzne

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  • Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  • Kliknij opcję Demo.

pgAdmin Pełne połączenie zewnętrzne

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Krok 4) Kliknij przycisk Wykonaj.

pgAdmin Pełne połączenie zewnętrzne

Powinno zostać zwrócone:

pgAdmin Pełne połączenie zewnętrzne

Pobierz bazę danych używaną w tym samouczku

FAQ

Połączenie wewnętrzne (INNER JOIN) zwraca tylko wiersze, które pasują do siebie w obu tabelach. Połączenie zewnętrzne (OUTER JOIN) również zachowuje niepasujące wiersze, wypełniając brakujące kolumny wartością NULL i może być lewe, prawe lub pełne, w zależności od tego, która tabela jest zachowywana.

Połączenie JOIN łączy kolumny z różnych tabel obok siebie za pomocą pasującego klucza, poszerzając każdy wiersz. Połączenie UNION łączy wiersze dwóch zestawów wyników w pionie i wymaga takiej samej liczby kolumn.

Samosprzężenie łączy tabelę ze sobą za pomocą dwóch aliasów. Jest to przydatne do porównywania wierszy w jednej tabeli, na przykład dopasowując pracowników do menedżerów zapisanych w tej samej tabeli.

CROSS JOIN zwraca iloczyn kartezjański, parując każdy wiersz pierwszej tabeli z każdym wierszem drugiej. Nie używa warunku ON, dzięki czemu może szybko generować bardzo duże zbiory wyników.

Tak. Można połączyć kilka klauzul JOIN w jednym zapytaniu, dodając każdą dodatkową tabelę z innym warunkiem JOIN i ON. PostgreSQL ocenia je w celu zbudowania pojedynczego, połączonego zestawu wyników.

Asystenci AI, tacy jak GitHub Copilot, sugerują właściwy typ połączenia, zapisują warunek ON z kluczy obcych i sygnalizują brakujący warunek, który mógłby spowodować przypadkowy iloczyn kartezjański, zmniejszając w ten sposób liczbę typowych błędów połączeń.

Tak. Asystenci AI potrafią odczytywać plan zapytania, rekomendować indeksy dla kolumn łączenia oraz przepisywać kolejność lub warunki łączenia. Baza danych nadal wymusza poprawność, dlatego przed uruchomieniem w środowisku produkcyjnym należy sprawdzić każdą sugestię.

Żadne pojedyncze sprzężenie nie jest zawsze najszybsze; wydajność zależy od indeksów, liczby wierszy i filtrów. sprzężenia INNER JOIN na indeksowanych kluczach są zazwyczaj wydajne, natomiast FULL OUTER JOIN na dużych, nieindeksowanych tabelach są zazwyczaj najkosztowniejsze.

Podsumuj ten post następująco: