Sprzężenie wewnętrzne i sprzężenie zewnętrzne to dwa przydatne sposoby łączenia tabel bazy danych i wykonywania zapytań o dane z wielu tabel. W tym artykule przyjrzymy się różnicy między sprzężeniem wewnętrznym a sprzężeniem zewnętrznym w SQL.
Łączenie wewnętrzne
Sprzężenie wewnętrzne zwraca wiersze z dwóch lub więcej tabel, w których co najmniej jedna kolumna ma taką samą wartość we wszystkich tabelach. Jeśli nie ma wspólnych wartości, nie są zwracane żadne wiersze.
Oto składnia sprzężenia wewnętrznego:
select * from table1 INNER JOIN table2 on table1.column_name = table2.column_name; OR select * from table1 JOIN table2 on table1.column_name = table2.column_name;
Połączenie zewnętrzne
Sprzężenie zewnętrzne zwraca wiersze z co najmniej dwóch tabel, w których co najmniej jedna kolumna ma wspólną wartość, a także wiersze, w których warunek złączenia nie powiedzie się. Istnieją 3 rodzaje złączeń zewnętrznych:
Połączenie zewnętrzne lewe
W takim przypadku wszystkie wiersze lewej tabeli są zachowywane w wyniku, w przypadku gdy warunki łączenia są zgodne z innymi tabelami, zwracane są wartości ich kolumn, w przeciwnym razie dla tych kolumn zwracane są wartości null. Oto składnia lewego sprzężenia zewnętrznego.
select * from table1 LEFT OUTER JOIN table2 on table1.column_name = table2.column_name;
Prawe połączenie zewnętrzne
W takim przypadku wszystkie wiersze prawej tabeli są zachowywane w wyniku, w przypadku gdy warunki łączenia są zgodne z innymi tabelami, zwracane są wartości ich kolumn, w przeciwnym razie dla tych kolumn zwracane są wartości null.
Oto składnia prawego sprzężenia zewnętrznego
select * from table1 RIGHT OUTER JOIN table2 on table1.column_name = table2.column_name;
Pełne połączenie zewnętrzne
W takim przypadku zwracane są wszystkie wiersze obu tabel. Jeśli warunek złączenia jest spełniony, kolumny są wypełniane wartościami z obu tabel. Jeśli warunek łączenia nie powiedzie się, wartości jednej z tabel są wypełniane w kolumnach, a pozostałe są wypełniane jako null.
Różnica między złączeniem wewnętrznym a złączem zewnętrznym w SQL
Oto kluczowe różnice między sprzężeniem wewnętrznym a sprzężeniem zewnętrznym.
Łączenie wewnętrzne
- Zwraca tylko wiersze ze wspólnymi wartościami kolumn.
- Możesz użyć klauzuli INNER JOIN lub JOIN. Oba mają ten sam efekt
- Zwraca wartość null, gdy nie ma pasujących wartości kolumn między dwiema (lub więcej) tabelami
- Inner Join jest szybszy niż Outer Join
- Przydatne jest wykonywanie wyszukiwań w wielu tabelach
- W kategoriach matematycznych zwraca przecięcie dwóch zbiorów (tabel)
Połączenie zewnętrzne
- Zwraca wartości z jednej lub więcej tabel, nawet jeśli nie ma pasujących wartości kolumn
- Dla wierszy bez pasujących atrybutów zwraca wartość null dla pozostałych kolumn
- Pełne łączenie zewnętrzne i pełne łączenie mają ten sam efekt.
- Jest wolniejszy niż połączenie wewnętrzne
- Służy do uzyskania pełnych informacji w dwóch lub więcej tabelach
- Pełne sprzężenie zewnętrzne nie jest obsługiwane w MySQL. Jest dostępny w PostgreSQL, SQL Server, Oracle i innych popularnych bazach danych.
Potrzebujesz narzędzia do raportowania dla MySQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!