Zgadzam się z Cade co do ograniczeń diagramów Venna tutaj. Może to być bardziej adekwatna reprezentacja wizualna.
Stoły
WYBIERZ A.Kolor, B.Kolor Z KRZYŻA POŁĄCZ B Skrzypce SQL
Połączenie krzyżowe (lub iloczyn kartezjański) daje wynik z każdą kombinacją wierszy z dwóch tabel. Każda tabela ma 4 wiersze, co daje w wyniku 16 wierszy.
WYBIERZ A.Colour, B.Colour Z WEWNĘTRZNEGO POŁĄCZENIA B NA A.Colour =B.Colour Skrzypce SQL
Sprzężenie wewnętrzne logicznie zwraca wszystkie wiersze ze sprzężenia krzyżowego, które spełniają warunek sprzężenia. W tym przypadku robi to pięć.
WYBIERZ A.Kolor, B.Kolor Z WEWNĘTRZNEGO POŁĄCZENIA B NA A.Kolor NIE W ('Zielony', 'Niebieski') Skrzypce SQL
Warunek sprzężenia wewnętrznego niekoniecznie musi być warunkiem równości i nie musi odwoływać się do kolumn z obu (lub nawet jednej) tabel. Ocena A.Colour NOT IN ('Green','Blue')
w każdym rzędzie zwrotów połączenia krzyżowego.
Wewnętrzny warunek sprzężenia 1=1
oceni się jako prawda dla każdego wiersza w sprzężeniu krzyżowym, więc oba są równoważne (SQL Fiddle
).
WYBIERZ A.Colour, B.Colour Z LEWEJ ZEWNĘTRZNEJ POŁĄCZ B NA A.Colour =B.Colour Skrzypce SQL
Złącza zewnętrzne są logicznie oceniane w taki sam sposób jak sprzężenia wewnętrzne, z tym wyjątkiem, że jeśli wiersz z lewej tabeli (dla lewego sprzężenia) nie łączy się w ogóle z żadnymi wierszami z prawej tabeli, jest zachowywany w wyniku za pomocą NULL
wartości dla kolumn po prawej stronie.
WYBIERZ A.Colour, B.Colour OD LEWEJ ZEWNĘTRZNEJ POŁĄCZ B ON A.Colour =B.Colour WHERE B.Colour IS NULL Skrzypce SQL
To po prostu ogranicza poprzedni wynik do zwracania tylko wierszy, w których B.Colour IS NULL
. W tym konkretnym przypadku będą to wiersze, które zostały zachowane, ponieważ nie miały dopasowania w tabeli po prawej stronie, a zapytanie zwraca pojedynczy czerwony wiersz, który nie został dopasowany w tabeli B
. Jest to znane jako anti semi join.
Ważne jest, aby wybrać kolumnę dla IS NULL
test, który albo nie dopuszcza wartości null, albo dla którego warunek złączenia zapewnia, że każdy NULL
wartości zostaną wykluczone, aby ten wzorzec działał poprawnie i aby uniknąć przywracania wierszy, które mają NULL
wartość dla tej kolumny oprócz niedopasowanych wierszy.
WYBIERZ A.Colour, B.Colour Z PRAWEJ ZEWNĘTRZNEJ POŁĄCZENIA B NA A.Colour =B.Colour Skrzypce SQL
Prawe sprzężenia zewnętrzne działają podobnie do lewych sprzężeń zewnętrznych, z wyjątkiem tego, że zachowują niepasujące wiersze z prawej tabeli i null rozszerzają kolumny po lewej stronie.
WYBIERZ A.Colour, B.Colour Z PEŁNEGO ZEWNĘTRZNEGO POŁĄCZ B NA A.Colour =B.Colour Skrzypce SQL
Pełne złączenia zewnętrzne łączą zachowanie złączeń lewych i prawych i zachowują niepasujące wiersze zarówno z lewej, jak i prawej tabeli.