Jaka jest różnica między wewnętrznym połączeniem, lewym połączeniem, prawym połączeniem i pełnym połączeniem? [duplikat]

to pytanie ma już odpowiedzi tutaj : Jaka jest różnica między "wewnętrznym połączeniem" a "zewnętrznym połączeniem"? (27 odpowiedzi) Zamknięty 5 lat temu .

Jaka jest różnica między INNER JOIN, LEFT JOIN, RIGHT JOIN oraz FULL JOIN w MySQL?

Author: DineshDB, 2011-04-18

3 answers

Przeczytanie tego oryginalnego artykułu na temat projekt kodu bardzo ci pomoże: wizualna reprezentacja łączników SQL .

alt text

Zobacz też ten post: SQL SERVER-Lepsza wydajność-LEFT JOIN czy NOT IN?.

Znajdź oryginalną w: różnica między JOIN i OUTER JOIN w MySQL .

 3502
Author: Pranay Rana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-05 06:45:25

Klauzula SQL JOIN służy do łączenia wierszy z dwóch lub więcej tabel, oparte na wspólnym polu między nimi.

W SQL dostępne są różne typy złączy:

INNER JOIN : zwraca wiersze, gdy w obu tabelach jest dopasowanie.

LEFT JOIN: zwraca wszystkie wiersze z lewej tabeli, nawet jeśli w prawej tabeli nie ma dopasowania.

RIGHT JOIN : zwraca wszystkie wiersze z prawej tabeli, nawet jeśli brak dopasowań w lewej tabeli.

FULL JOIN : łączy wyniki zarówno lewego, jak i prawego złączenia zewnętrznego.

Dołączona tabela będzie zawierać wszystkie rekordy z obu tabel i wypełnić NULL dla brakujących dopasowań po obu stronach.

SELF JOIN: służy do łączenia tabeli z sobą tak, jakby tabela była dwiema tabelami, tymczasowo zmieniając nazwę co najmniej jednej tabeli w instrukcji SQL.

Złącze kartezjańskie : Zwraca iloczyn kartezjański zestawy rekordów z dwóch lub więcej połączonych tabel.

Możemy wziąć każde pierwsze cztery złącza w szczegółach:

Mamy dwie tabele z następującymi wartościami.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

....................................................................

POŁĄCZENIE WEWNĘTRZNE

Uwaga : podaje przecięcie dwóch tabel, tzn. wierszy, które mają wspólne w TableA i TableB

Składnia

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

Zastosuj go w naszej przykładowej tabeli:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

Wynik Będzie

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

LEFT JOIN

Notatka : poda wszystkie wybrane wiersze w TableA oraz wszystkie wspólne wybrane wiersze w TableB.

Składnia

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

Zastosuj go w naszej przykładowej tabeli:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

Wynik

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

RIGHT JOIN

Notatka : poda wszystkie zaznaczone wiersze w TableB, plus wszelkie wspólne wybrane wiersze w tabeli.

Składnia

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

Zastosuj go w naszej przykładowej tabeli:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

Wynik

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

FULL JOIN

Notatka: zwróci wszystkie wybrane wartości z obu tabel.

Składnia

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

Zastosuj go w naszej przykładowej tabeli:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

Wynik

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

Ciekawostka

Dla wewnętrznych połączeń kolejność nie ma znaczenia

For (lewy, prawy lub pełny) Złącza zewnętrzne, sprawa porządkowa

Lepiej to sprawdzić Link znajdziesz w nim interesujące informacje na temat zamówienia połączenia

 816
Author: Arunprasanth K V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-11 08:36:01

INNER JOIN pobiera wszystkie rekordy, które są wspólne dla obu tabel na podstawie dostarczonej klauzuli ON.

LEFT JOIN pobiera wszystkie rekordy z lewego linkowanego i powiązanego rekordu z prawej tabeli, ale jeśli wybrałeś kilka kolumn z prawej tabeli, jeśli nie ma powiązanych rekordów, kolumny te będą zawierać NULL.

RIGHT JOIN jest podobny do powyższego, ale pobiera wszystkie rekordy w odpowiedniej tabeli.

FULL JOIN pobiera wszystkie rekordy z obie tabele i umieszcza NULL w kolumnach, w których powiązane rekordy nie istnieją w przeciwnej tabeli.

 755
Author: Brian Leeming,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-19 09:45:02