Mysql
 sql >> Baza danych >  >> RDS >> Mysql

sql łączy się jak diagram Venna

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Proste wprowadzenie do korzystania z MySQL na terminalu Linux

  2. Podzapytania z EXISTS vs IN - MySQL

  3. Praca z silnikami baz danych MySQL

  4. Zapytanie o wybór między serwerami MySQL

  5. MySQL vs MySQLi podczas korzystania z PHP