Łączenie wewnętrzne vs. łączenie zewnętrzne


W SQL a Przystąp służy do porównywania i łączenia - dosłownie łączenia - i zwracania określonych wierszy danych z dwóch lub więcej tabel w bazie danych. Na połączenie wewnętrzne znajduje i zwraca pasujące dane z tabel, podczas gdy an połączenie zewnętrzne znajduje i zwraca pasujące dane i niektóre odmienne dane z tabel.

zgłoś tę reklamę

Przyłączenie wewnętrzne

Łączenie wewnętrzne koncentruje się na podobieństwie między dwiema tabelami. Gdy używasz łączenia wewnętrznego, musi być co najmniej kilka pasujących danych między dwiema (lub więcej) porównywanymi tabelami. Sprzężenie wewnętrzne przeszukuje tabele pod kątem dopasowania lub nakładania się danych. Po znalezieniu sprzężenie wewnętrzne łączy i zwraca informacje do jednej nowej tabeli.

Przykład połączenia wewnętrznego

Rozważmy wspólny scenariusz dwóch tabel: ceny produktów i ilości. Wspólną informacją w dwóch tabelach jest nazwa produktu, więc jest to logiczna kolumna do dołączenia do tabel na. Istnieje kilka produktów, które są wspólne w dwóch tabelach; inne są unikalne dla jednego ze stołów i nie pasują do drugiego.

Wewnętrzne dołączenie Produkty zwraca informacje o tylko tych produktach, które są wspólne w obu tabelach.

Outer Join

Sprzężenie zewnętrzne zwraca zestaw rekordów (lub wierszy), które zawierają to, co zwróciłoby sprzężenie wewnętrzne, ale zawiera także inne wiersze, dla których nie znaleziono odpowiadającego dopasowania w innej tabeli.

Istnieją trzy rodzaje połączeń zewnętrznych:

  • Lewy zewnętrzny łącznik (lub lewy łączący)
  • Right Outer Join (lub Right Join)
  • Pełne sprzężenie zewnętrzne (lub pełne sprzężenie)

Każde z tych sprzężeń zewnętrznych odnosi się do części danych, która jest porównywana, łączona i zwracana. Czasami w tym procesie generowane są wartości null, ponieważ niektóre dane są udostępniane, a inne nie.

Lewy zewnętrzny łącznik

Lewe sprzężenie zewnętrzne zwróci wszystkie dane z Tabeli 1 i wszystkie udostępnione dane (czyli wewnętrzną część przykładu diagramu Venna), ale tylko odpowiednie dane z Tabeli 2, która jest prawym złączeniem.

Przykład dołączenia do lewej

W naszej przykładowej bazie danych po lewej stronie znajdują się dwa produkty - pomarańcze i pomidory (Ceny tabela), które nie mają odpowiedniego wpisu w „prawej” (tabeli ilości). W złączeniu z lewej strony wiersze te są zawarte w zestawie wyników z NULL w kolumnie Ilość. Pozostałe wiersze w wyniku są takie same jak połączenie wewnętrzne.

Right Outer Join

Prawe sprzężenie zewnętrzne zwraca dane z tabeli 2 i wszystkie udostępnione dane, ale tylko odpowiednie dane z tabeli 1, która jest złączeniem z lewej strony.

Przykład prawidłowego dołączenia

Podobnie jak w przykładzie z lewym łączeniem, wynik prawego zewnętrznego połączenia obejmuje wszystkie rzędy wewnętrznego połączenia i dwa rzędy - brokuły i squash - od „prawego” (Wielkie ilości tabela), które nie mają pasujących wpisów po lewej stronie.

Pełne połączenie zewnętrzne

Pełne sprzężenie zewnętrzne lub pełne sprzężenie, które jest nie obsługiwany przez popularny system zarządzania bazą danych MySQL, łączy i zwraca wszystko dane z dwóch lub więcej tabel, niezależnie od tego, czy są udostępniane informacje. Pomyśl o pełnym złączeniu jako po prostu powieleniu wszystkich określonych informacji, ale w jednej tabeli, a nie w wielu tabelach. W przypadku braku pasujących danych zostaną wygenerowane wartości null.

To tylko podstawy, ale przy sprzężeniach można zrobić wiele rzeczy. Istnieją nawet sprzężenia, które mogą wykluczać inne połączenia!

Film wyjaśniający połączenia wewnętrzne i zewnętrzne

Ten film wyjaśnia różnicę między różnymi rodzajami złączeń. Wskazuje się, aby rozpocząć od momentu rozpoczęcia dyskusji o złączeniach.

Bibliografia

  • Różnica między połączeniem wewnętrznym i zewnętrznym - Przepełnienie stosu
  • SQL Inner Join - Quackit
  • Sprzężenie zewnętrzne SQL - Quackit
  • Korzystanie z połączeń wewnętrznych - Microsoft SQL Server
  • Korzystanie z połączeń zewnętrznych - Microsoft SQL Server
  • Wizualna reprezentacja połączeń SQL - CodeProject
  • Wikipedia: Join (SQL)