Wprowadzenie do połączeń w MySQL
Połączenia MySQL odgrywają ważną rolę, gdy musimy połączyć dwie tabele razem w oparciu o jedną lub więcej wspólnych wartości dzielonych przez dwie tabele.
Przykład : Rozważmy, że mamy dwie tabele, jedna to tabela pracowników składająca się z ID_ pracownika, phn_no, wynagrodzenia i działu. Kolejna tabela to tablica adresów, która składa się z ID_pracownika i adresu. Jeśli musimy znaleźć identyfikator pracownika, dział i adres, musimy dołączyć do obu tabel, które mają wspólne pole jako identyfikator pracownika.
Zapytanie :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
Top 6 rodzajów połączeń w MySQL
Istnieją różne typy złączeń w MySQL. Poniższe dołączenia pojawiają się w codziennym użyciu i są najbardziej przydatne podczas przeprowadzania wielu zapytań w rzeczywistych przypadkach.
- Wewnętrzne dołączenie
- Lewy dołącz
- Prawe dołączenie
- Pełne połączenie zewnętrzne
- Dołącz do siebie
- Połącz krzyżowo
1. Przyłączenie wewnętrzne
Sprzężenie wewnętrzne zwraca wartość, która jest zgodna w obu tabelach.
Ta część pochodzi z wyjścia, jak pokazano na powyższym obrazku.
Przykład 1:
Emp_id | Departament | Wynagrodzenie |
1001 | TO | 1000 |
1002 | CSR | 800 |
1003 | TO | 2000 |
To jest tabela pracowników.
Emp_id | Adres |
1002 | Delhi |
1003 | Bangalore |
1005 | Bbsr |
Oto tabela adresowa tych pracowników. Klucz podstawowy pracownika tabeli nadrzędnej emp_id jest używany jako klucz obcy w tabeli adresowej, która jest tabelą podrzędną. Znajdziemy emp_id, dział i adres jednego pracownika korzystającego z połączenia wewnętrznego. Ponieważ wewnętrzne stany łączenia Pobiera rekordy, które są obecne / wspólne w obu tabelach.
Pytanie:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Dajemy alias do nazwy tabeli, aby uniknąć więcej czasu. W powyższym zapytaniu używamy aliasu „emp” dla tabeli pracowników i „reklam” dla tabeli adresów.
Wynik:
Emp_id | Departament | Adres |
1002 | CSR | Delhi |
1003 | TO | Bangalore |
Ponieważ w powyższym przykładzie emp_id 1002 i 1003 były wspólne dla obu tabel, polecenie łączenia wewnętrznego pobiera dane wyjściowe tylko dla tych pracowników.
Przykład 2:
Tutaj mamy 2 tabele, table1 i table2. Obie tabele składają się z jednego atrybutu, odpowiednio jako kolumny A i kolumny B.
Tabela 1
Kolumna A |
1 |
1 |
2) |
3) |
4 |
Tabela 2
Kolumna B |
1 |
2) |
2) |
3) |
3) |
5 |
Pytanie:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Wynik:
Kolumna A | Kolumna B |
1 | 1 |
1 | Zero |
2) | 2) |
Zero | 2) |
3) | 3) |
Zero | 3) |
2. Left Join
To sprzężenie zwraca wszystkie rekordy z lewej tabeli i dopasowane rekordy z prawej tabeli.
Jak pokazuje powyższy diagram, składa się ze wszystkich rekordów z tabeli A i wspólnych rekordów z A i B.
Przykład 1:
Identyfikator klienta | Nazwa | Miasto |
1 | Harish | Cuttack |
2) | David | Bangalore |
3) | Mahesh | Bhubaneswar |
4 | Sam | Kalkuta |
Tabela klientów:
Order_id | Ilość | Identyfikator klienta |
19868 | 7575.00 | 4 |
19976 | 434654, 00 | 2) |
99680 | 7457, 00 | 3) |
Tabela zamówień:
Dowiemy się identyfikator_użytkownika, nazwa i identyfikator_kojarzenia skojarzone za pomocą lewy łączyć.
Pytanie:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Wynik:
Identyfikator klienta | Nazwa | Order_id |
1 | Harish | zero |
2) | David | 19976 |
3) | Mahesh | 99680 |
4 | Sam | 19868 |
Kiedy omawialiśmy to lewe złączenie, pobierało wszystkie identyfikatory klientów z tabeli klientów i wspólne dla obu tabel. Dla identyfikatora klienta „1” będzie on wyświetlany jako „null”, ponieważ identyfikator klienta „1” nie jest obecny w tabeli zamówień.
Przykład 2:
Tutaj mamy 2 tabele, table1 i table2. Obie tabele składają się z jednego atrybutu, odpowiednio jako kolumny A i kolumny B.
Tabela 1
Kolumna A |
1 |
1 |
2) |
2) |
3) |
Tabela 2
Kolumna B |
1 |
2) |
2) |
4 |
4 |
5 |
5 |
Pytanie:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
Kolumna A | Kolumna B |
1 | 1 |
1 | Zero |
2) | 2) |
2) | 2) |
3) | Zero |
3. Right Join
To sprzężenie zwraca wszystkie rekordy z prawej tabeli i pasujące rekordy z lewej tabeli.
Powyższy schemat pokazuje, że pobiera wszystkie rekordy z tabeli B i wspólny, który jest obecny w obu tabelach.
Przykład:
Identyfikator klienta | Nazwa | Miasto |
3) | Mahesh | Bhubaneswar |
4 | Sam | Kalkuta |
5 | Baran | Bombaj |
Tabela klientów:
Order_id | Ilość | Identyfikator klienta |
19868 | 7575.00 | 4 |
19976 | 434654, 00 | 2) |
99680 | 7457, 00 | 3) |
Tabela zamówień:
Za pomocą odpowiedniego sprzężenia dowiemy się o identyfikatorze klienta, nazwie i identyfikatorze zamówienia powiązanym z nim.
Pytanie:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Wynik:
Identyfikator klienta | Nazwa | Order_id |
2) | zero | 19976 |
3) | Mahesh | 99680 |
4 | Sam | 19868 |
Jak wykonaliśmy tutaj prawe dołączenie, więc zapytanie pobierało wszystkie identyfikatory klientów z tabeli zamówień i wspólnych rekordów, które znajdują się w obu tabelach.
4. Pełny łącznik zewnętrzny
Pełne sprzężenie zewnętrzne zwraca wszystkie rekordy z obu tabel, jeśli wspólne pole jest wspólne.
Przykład:
Identyfikator klienta | Nazwa | Miasto |
3) | Mahesh | Bhubaneswar |
4 | Sam | Kalkuta |
5 | Baran | Bombaj |
Tabela klientów:
Order_id | Ilość | Identyfikator klienta |
19868 | 7575.00 | 4 |
19976 | 434654, 00 | 2) |
99680 | 7457, 00 | 3) |
Tabela zamówień:
Za pomocą pełnego sprzężenia zewnętrznego dowiemy się o identyfikatorze klienta, nazwie i identyfikatorze zamówienia powiązanym z nim.
Pytanie:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
Wynik:
Identyfikator klienta | Nazwa | Order_id |
2) | zero | 19976 |
3) | Mahesh | 99680 |
4 | Sam | 19868 |
5 | Baran | zero |
To pełne sprzężenie zewnętrzne pobierało wszystkie identyfikatory klientów z tabeli klientów, a także z tabeli zamówień.
5. Dołącz do siebie
Samozłączenie jest zwykłym złączeniem i tutaj stół łączy się tylko ze sobą.
Emp_id | Nazwa | Nr telefonu | Miasto | Kraj |
1001 | R. Madhvan | 9687687698 | Bangalore | Indie |
1002 | Gobu Sharma | 9856453423 | Pune | Indie |
1003 | Debasish Das | 8765456787 | Bombaj | Indie |
1004 | Amit Rout | 4567788635 | Pune | Indie |
1005 | Sambit Kar | 8789887873 | Hyderabad | Indie |
Oto tabela pracowników składająca się z kilku pól. Dowiemy się pracowników mieszkających w tym samym mieście.
Zapytanie :
SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;
Wyjście :
Nazwa pracownika 1 | Nazwa pracownika 2 | e1.city |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Cross Join
To połączenie daje wynik, w którym liczba wierszy w pierwszej tabeli zostaje pomnożona przez wiersze w drugiej tabeli. Ten rodzaj wyniku nazywa się produktem kartezjańskim. Jeśli użyjemy klauzuli WHERE z tym łączeniem, będzie to działać jako łączenie wewnętrzne.
Przykład:
Prod_id | Nazwa produktu | Prod_unit | Identyfikator firmy |
1 | Mieszanka Chex | Szt | 12 |
2) | Cheez-it | Szt | 15 |
3) | Herbatnik | szt | 16 |
Tabela produktów :
Identyfikator firmy | Nazwa firmy | Company_city |
15 | Foodies | Delhi |
16 | Jack n Jill | Cuttack |
17 | Naturalny | Bangalore |
Tabela firmowa :
W tych tabelach zastosujemy łączenie krzyżowe.
Zapytanie :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Wyjście :
p.nazwa_produktu | p.prod_unit | c.nazwa_firmy |
Mieszanka Chex | Szt | Foodies |
Cheez-it | Szt | Foodies |
Herbatnik | Szt | Foodies |
Mieszanka Chex | Szt | Jack n Jill |
Cheez-it | Szt | Jack n Jill |
Herbatnik | Szt | Jack n Jill |
Mieszanka Chex | Szt | Naturalny |
Cheez-it | Szt | Naturalny |
Herbatnik | Szt | Naturalny |
Wniosek
Znaczenie tych połączeń jest bardzo ważne podczas pracy w scenariuszach w czasie rzeczywistym, a także w niektórych innych technologiach. W wizualizacjach takich jak Tableau i Power BI złączenia odgrywają istotną rolę. Ustrukturyzowana praktyka tego jest kluczem do osadzenia tych nowych technik i umiejętności.
Polecany artykuł
Jest to przewodnik po łączeniach w MySQL. Tutaj omawiamy 6 najlepszych rodzajów złączeń w MySQL, takich jak Wewnętrzny, Lewy, Prawy, Pełny, Ja, Krzyż i jego przykłady wraz z zapytaniami i danymi wyjściowymi. możesz również przejrzeć nasze sugerowane artykuły, aby dowiedzieć się więcej -
- 10 najważniejszych poleceń MySQL
- Wprowadzenie do operatorów MySQL
- MySQL vs SQLite | Porównanie 14 najlepszych
- Top 23 funkcji MySQL String
- Wyjaśnij Wstaw polecenie w MySQL z przykładami
- 6 najważniejszych różnic między kluczem podstawowym a kluczem obcym