Omówienie rodzajów połączeń w programie SQL Server
Klauzula Join, słowo kluczowe JOIN jest połączone wiele tabel w jeden zestaw wyników. Klauzula FROM będzie musiała obejmować wszystkie tabele. Oddziela każdą tabelę zwykle zawartą w przecinku klauzulą WHERE.
Możemy wstawić wyrażenie logiczne, które zwraca true lub false, a wyrażenia te mogą odnosić się do kolumn we wszystkich tabelach.
Rodzaje połączeń w SQL Server
Istnieją różne rodzaje połączeń
- KRZYŻ DOŁĄCZ
- DOŁĄCZ DO WEWNĘTRZNEGO
- DOŁĄCZ DO ZEWNĘTRZNEJ
- DOŁĄCZ DO LEWEGO ZEWNĘTRZNEGO
- DOŁĄCZ DO PRAWEJ ZEWNĘTRZNEJ
- DOŁĄCZ DO ZEWNĘTRZNEGO
- SAM DOŁĄCZ
Pozwól nam zrozumieć szczegółowo każde z tych połączeń:
1) Cross Join
- To najprostszy DOŁĄCZ
- Zwraca wszystkie wiersze z obu tabel
- Brak klauzuli WHERE
- Jest to również najmniej przydatne
- To bardzo nieefektywne
- Tworzy produkt kartezjański
- Sugerowane słowo kluczowe CROSS
Przykład
Tak więc wszyscy z pierwszej tabeli z każdym kawałkiem danych z drugiej tabeli bez próby dopasowania, więc nie należy tego robić.
Poszukaj klauzuli FROM, w której masz wiele tabel i nie ma klauzuli WHERE.
2) Łączenie wewnętrzne
Dane wyjściowe zapytania:
Twoje początkowe i ostatnie wiersze mają wartości koordynujące związane z C2. Rzędy środkowe zwykle się nie spotykają. Ostatni wynik końcowy zawiera wszystkie wartości zarówno początkowe, jak i ostatnie wiersze, ale nie zawierają tego niepasującego wiersza środkowej sekcji.
- Jest to najbardziej typowy DOŁĄCZ
- Podkreśliło to relacyjny charakter bazy danych
- Pozwala nam dopasować wartość kolumny w jednej z tabel do wartości kolumny w innej z tabel.
- Klucz podstawowy w jednej z tabel i klucz obcy w jednej z pozostałych tabel.
Przykład
Tutaj p.person_id jest naszym głównym kluczem w naszej tabeli osób,
email_address_person_id to nasz klucz obcy w tabeli adresów e-mail.
Rzućmy okiem na stół osoby
Mamy te cztery rzędy. A potem wszystkie dopasowania w tabeli adresów e-mail.
Tak więc ostatecznie powinniśmy wziąć trzy osoby, ponieważ mamy osobę Shannon, która nie ma adresu e-mail
Dane wyjściowe zapytania:
Otrzymujemy więc dane tylko wtedy, gdy istnieje zgodność między dwiema kolumnami w każdej z tabel
3) Łączenie zewnętrzne
- WEJŚCIE WEWNĘTRZNE nie obsługuje wartości NULL
- POŁĄCZENIE ZEWNĘTRZNE działa nawet wtedy, gdy nie ma dopasowania w drugiej tabeli.
- NULL kolumny, jeśli nie pasują do drugiej tabeli
- FULL OUTER JOIN zwraca wszystkie połączone wiersze
- NULL, gdy nie ma dopasowania w żadnej tabeli
a) Lewy zewnętrzny łącznik
Dane wyjściowe zapytania: Jesteś zarówno początkowy, jak i ostatnie rzędy mają wartości koordynujące związane z C2. Rzędy środkowe zwykle się nie spotykają. Ostatni wynik końcowy może zatrzymać wszystkie wiersze pierwszego stołu, ale w rzeczywistości pominie niepasujący wiersz przez drugi stół.
- Kolejny DOŁĄCZ związany z NULL
- Wszystkie wiersze z lewej strony zostaną zwrócone
- NULL dla niepasującego prawego stolika
Przykład
Dane wyjściowe zapytania:
Zauważ, że w tabeli Osoba jest jeden wiersz, który nie ma wartości w tabeli adresów e-mail. Daje nam to LEFT OUTER JOIN.
b) Prawe połączenie zewnętrzne
Dane wyjściowe zapytania:
Jesteś zarówno początkowy, jak i ostatnie rzędy mają wartości koordynujące związane z C2. Rzędy środkowe zwykle się nie spotykają. Ostatni wynik końcowy może zatrzymać wszystkie wiersze drugiego stołu, ale w rzeczywistości pominie niepasujący wiersz przez pierwszy stół.
- Naprzeciwko LEWEGO DOŁĄCZENIA ZEWNĘTRZNEGO
- Wszystkie wiersze z prawej strony zostaną zwrócone
- NULL dla niepasującego stolika po lewej stronie
Przykład Dane wyjściowe zapytania:
Otrzymujemy trzy wyniki. Oto nasz wynik RIGHT OUTER JOIN, w którym mamy wiersz z tabeli adresów e-mail, który nie ma odpowiedniego wiersza w tabeli po prawej stronie.
4) Pełny łącznik zewnętrzny
Przykład
Dane wyjściowe zapytania:
Łączymy wynik POŁĄCZENIA ZEWNĘTRZNEGO i DOŁĄCZANIA ZEWNĘTRZNEGO
5) Self Join
- SELF nie jest słowem kluczowym. To tylko ten pomysł, że możesz sam postawić stół
- Dziwne, ale czasem przydatne
- Brak specjalnej składni
- Ta sama tabela po lewej i prawej stronie DOŁĄCZ
- Przydatne, gdy tabela zawiera dane hierarchiczne
Przykład
WYBIERZ *
Z zamówień
DOŁĄCZ do subskrypcji
ON zamówień.subscription_id = subscriptions.subscription_id;
Dostajemy tabelę zamówień i tabelę subskrypcji i ŁĄCZYJ tabelę używając WYBIERZ wszystkie kolumny.
Aby uzyskać wynik.
Wniosek:
Połączenia to sposób, w jaki naprawdę realizujemy model relacyjny. W modelu relacyjnym chodzi o rozdzielenie danych, znormalizowanie ich do wielu tabel, ale możliwość ich ponownego połączenia, gdy chcemy zobaczyć te relacje. Różne rodzaje połączeń pozwalają nam to robić w nieco inny sposób.
Polecane artykuły
Jest to przewodnik po typach złączeń na serwerze SQL. Tutaj omawiamy przegląd i typy złączeń w SQL z ich przykładami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- Co to jest SQL Server?
- Kariery w SQL Server
- Szkolenie PL SQL
- Operatory MySQL
- Top 6 rodzajów połączeń w MySQL z przykładami