Łączenie lub scalanie tabel to znana funkcja relacyjnych baz danych, która ma niewiarygodne możliwości. Pozwala nam to konsolidować informacje z wielu źródeł w celu uzyskania bardziej spójnych i znaczących wniosków z danych. Dzięki temu relacyjne bazy danych są wysoce skalowalne (nie elastyczne), ponieważ możemy podzielić dane na mniejsze, łatwe w zarządzaniu fragmenty, do których możemy się później odwołać.
W tym samouczku omówimy podstawy łączenia i scalania tabel. Przyjrzyjmy się przykładom tabel ze świata rzeczywistego, aby ugruntować naszą wiedzę.
Przykładowa tabela
Zanim przejdziemy do świata złączeń tabel, skonfigurujmy podstawowe tabele, których będziemy używać w celach demonstracyjnych.
Rozważmy dwie tabele zawierające informacje o pracownikach i wynagrodzeniach, jak pokazano w poniższych przykładowych zapytaniach:
UTWÓRZ TABELI pracowników (
id_pracownika INT AUTO_INCREMENT KLUCZ PODSTAWOWY,
imię VARCHAR( pięćdziesiąt ),
nazwisko VARCHAR( pięćdziesiąt ),
dział VARCHAR( pięćdziesiąt )
);
Możemy następnie wstawić przykładowe dane do tabeli pracownika, jak pokazano w poniższych zapytaniach:
WPISAĆ WARTOŚCI pracowników (imię, nazwisko, dział).
( „Alicja” , 'Kowal' , 'Zasoby ludzkie' ),
( 'Pion' , „Johnson” , „Marketing” ),
( „Charlie” , „Wilson” , 'Finanse' ),
( „Dawid” , 'Brązowy' , 'Obroty' ),
( „Ewa” , „Davis” , 'Inżynieria' );
Kontynuujmy i utwórz nową tabelę do przechowywania informacji o wynagrodzeniach w następujący sposób:
UTWÓRZ TABELI wynagrodzeń (Salary_id INT AUTO_INCREMENT KLUCZ PODSTAWOWY,
id_pracownika INT,
wynagrodzenie DZIESIĘTNE( 10 , 2 ),
data_początkowa DATA,
data_końcowa DATA,
KLUCZ OBCY (employee_id) REFERENCJE pracownicy (employee_id)
);
Dodaj przykładowe dane do tabeli w następujący sposób:
WSTAWIENIE DO wynagrodzeń (id_pracownika, wynagrodzenie, data_początkowa, data_końcowa) WARTOŚCI
( 1 , 60000,00 , „2023-01-01” , „2023-12-31” ),
( 2 , 55000,00 , „2023-01-01” , „2023-12-31” ),
( 3 , 65000,00 , „2023-01-01” , „2023-12-31” ),
( 4 , 58000,00 , „2023-01-01” , „2023-12-31” ),
( 5 , 70000,00 , „2023-01-01” , „2023-12-31” );
To powinno dostarczyć nam dwie tabele, które pomogą nam zademonstrować koncepcję łączenia/scalania tabel w SQL.
Scalanie tabeli SQL/łączenie tabel
Przyjrzyjmy się różnym typom scalania tabel, które możemy wykonać. W miarę przechodzenia do bardziej zaawansowanych, omówimy te podstawowe.
WEWNĘTRZNE POŁĄCZENIE
Pierwszym i najczęstszym typem złączenia tabeli w SQL jest ZŁĄCZENIE WEWNĘTRZNE. INNER JOIN pozwala nam łączyć wiersze z dwóch tabel w oparciu o określony warunek. Ten typ zwraca następnie tylko te wiersze, w których występuje dopasowanie między tabelami.
Jako przykłady weźmy utworzone wcześniej tabele „pracownicy” i „wynagrodzenia”. Aby wykonać INNER JOIN w SQL, używamy klauzuli INNER JOIN w następujący sposób:
WYBIERAĆe.employee_id,
e.imię,
e.nazwisko,
e.dział,
s.wynagrodzenie
Z
pracownicy tj
INNER JOIN wynagrodzenia s NA
e.employee_id = s.employee_id;
W podanym przykładowym zapytaniu używamy INNER JOIN do połączenia tabel „pracownicy” i „wynagrodzenia” w kolumnie „employee_id”, która istnieje w obu tabelach. Wynikowy zestaw zawiera tylko pasujące wiersze z obu tabel.
Przykładowe dane wyjściowe są następujące:
LEWE POŁĄCZENIE ZEWNĘTRZNE
Mamy również LEFT OUTER JOIN, które łączy wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeśli w prawej tabeli nie ma dopasowania, przy łączeniu używana jest wartość NULL.
WYBIERAĆe.employee_id,
e.imię,
e.nazwisko,
e.dział,
s.wynagrodzenie
Z
pracownicy tj
LEWY DOŁĄCZ wynagrodzenia s
NA
e.employee_id = s.employee_id;
W tym przykładzie wykonujemy LEFT OUTER JOIN, aby połączyć tabele „pracownicy” i „wynagrodzenia”. Uwzględniane są wszystkie wiersze z tabeli „pracownicy” i dodawane są odpowiadające im wiersze z tabeli „wynagrodzenia”. Jednakże wartości NULL są uwzględniane w kolumnie „wynagrodzenie” w przypadku niepasujących wierszy.
UNIA SQL
Inną metodą łączenia tabel w SQL jest użycie operatora UNION. Operator ten pozwala nam połączyć wyniki dwóch lub więcej instrukcji Select w jeden zestaw wyników.
Aby unia miała zastosowanie, kolumny w każdej instrukcji SELECT muszą mieć ten sam typ danych.
Przykład jest następujący:
SELECT identyfikator_pracownika, imię, nazwisko, dział, wynagrodzenie NULL ASOD pracowników tj
UNIA
SELECT identyfikator_pracownika, NULL AS imię, NULL AS nazwisko, NULL AS dział, wynagrodzenie
Z wynagrodzeń s;
W tym przypadku UNION łączy tabele „pracownicy” i „wynagrodzenia”. Następnie tworzymy kolumny NULL w każdej instrukcji SELECT, aby mieć pewność, że obie tabele mają podobną liczbę kolumn.
UNIONY są technicznie powszechne, ale mogą być przydatne zwłaszcza wtedy, gdy trzeba połączyć tabele o różnych strukturach.
Wniosek
W tym samouczku omówiliśmy podstawy łączenia/scalania dwóch tabel w jeden zestaw wyników. Warto pamiętać, że istnieje wiele bardziej zaawansowanych złączeń, które zostaną omówione w tym poście.