W tym artykule dowiemy się o koncepcji INNER JOIN i jak jej używać w SQL z klauzulą WHERE.
Co to jest INNER JOIN w SQL?
Złączenie wewnętrzne jest rodzajem złączenia w SQL. Złączenie wewnętrzne w SQL jest powszechnie używane. To złączenie zwraca tylko te wiersze, które są wspólne w obu tabelach. Połączenie wewnętrzne służy do łączenia dwóch stołów.
Składnia wewnętrznego łączenia w SQL:
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;
Table1.column =table2.column to wspólna kolumna, która utrzymuje relację rodzic-dziecko między tymi dwiema tabelami.
Jest kilka kroków, które musimy wykonać w Inner Join w zapytaniu SQL:
1. Utwórz nową bazę danych lub użyj istniejącej bazy danych, wybierając bazę danych za pomocą słowa kluczowego USE, po którym następuje nazwa bazy danych.
2. Utwórz nową tabelę w wybranej bazie danych lub możesz użyć już utworzonej tabeli.
3. Jeśli tabela jest nowo utworzona, wstaw rekordy do nowo utworzonej bazy danych za pomocą zapytania INSERT.
4. Wyświetl wstawione dane za pomocą zapytania SELECT bez zapytania Inner Join.
5 Teraz jesteśmy gotowi do użycia wewnętrznego łączenia w zapytaniach SQL.
Krok 1:Utwórz nową bazę danych lub użyj już utworzonej bazy danych.
Stworzyłem już bazę danych. Użyję nazwy mojej istniejącej utworzonej bazy danych, Firma.
USE Company;
Firma to nazwa bazy danych.
Ci, którzy nie utworzyli bazy danych, wykonaj poniższe zapytanie, aby utworzyć bazę danych:
CREATE DATABASE database_name;
Po utworzeniu bazy danych wybierz bazę danych, używając słowa kluczowego USE, a następnie nazwy bazy danych.
Krok 2:Utwórz nową tabelę lub użyj już istniejącej:
Stworzyłem już tabelę. Podczas wykonywania zapytania Inner Join użyję istniejącej tabeli o nazwie Employees and Manager.
Aby utworzyć nową tabelę, postępuj zgodnie z poniższą składnią CREATE TABLE:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Krok 3:wstaw rekordy do nowo utworzonej tabeli za pomocą zapytania INSERT
Użyj poniższej składni, aby wstawić nowe rekordy do tabeli:
INSERT INTO table_name VALUES(value1, value2, value3);
Krok 4: Wyświetl rekordy za pomocą zapytania SELECT.
Wyświetl rekordy z tabeli, używając następującej składni:
SELECT * FROM table_name;
Następujące zapytanie wyświetli rekordy pracowników.
SELECT * FROM Employees;
Dane wyjściowe powyższego zapytania SELECT to:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
4002 | ASHWINI | TORBA | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
5002 | KOSZULKA | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CZANDIGAR | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTOWANIE | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | WYROCZNIA | 1 |
Następujące zapytanie wyświetli rekordy menedżera.
SELECT * FROM Manager;
Dane wyjściowe powyższego zapytania SELECT to:
Identyfikator menedżera | nazwa_menedżera | manager_department |
1 | Snehdeep Kaur | WYROCZNIA |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTOWANIE |
5 | Akasz Kadam | C# |
Następujące zapytanie wyświetli rekordy laptopa.
SELECT * FROM Laptop;
Dane wyjściowe powyższego zapytania SELECT to:
LAPTOPID | NAZWA | ID PRACOWNIKA |
101 | DELL | NULL |
102 | HP | 1002 |
103 | LENOVO | NULL |
104 | HP | 3003 |
105 | DELL | 4002 |
106 | LENOVO | 4003 |
107 | DELL | 5001 |
108 | HP | NULL |
109 | DELL | NULL |
110 | HP | NULL |
111 | LENOVO | 2002 |
112 | LENOVO | 6003 |
113 | HP | 1003 |
Krok 5:Jesteśmy gotowi do użycia INNER JOIN w zapytaniach
Zrozummy sprzężenie wewnętrzne za pomocą przykładów.
Przykład 1: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, nazwisko, wynagrodzenie, miasto z tabeli pracownika oraz identyfikator i imię i nazwisko kierownika z tabeli kierownika za pomocą sprzężenia wewnętrznego.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;
W powyższym zapytaniu pobraliśmy identyfikator pracownika, imię, nazwisko, wynagrodzenie, miasto z tabeli pracownika oraz identyfikator menedżera, nazwisko menedżera z tabeli menedżerów, gdzie kolumna identyfikator menedżera tabeli pracowników jest równa kolumnie identyfikator menedżera tabeli menedżera. Zapytanie zwróci wszystkie pasujące rekordy z obu tabel. Identyfikator menedżera to wspólna kolumna między obiema tabelami. E to alias tabeli pracownika, a M tabeli menedżera. Kolumna identyfikatora kierownika działa jako klucz obcy w tabeli pracownika. Identyfikator menedżera działa jako klucz podstawowy w tabeli menedżerów, co tworzy relację rodzic-dziecko między dwiema tabelami.
Wynikiem powyższego zapytania jest:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | WYROCZNIA | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4002 | ASHWINI | TORBA | 54500 | NOIDA | JAVA | 3 |
5002 | KOSZULKA | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTOWANIE | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CZANDIGAR | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Rekordy są wyświetlane w porządku rosnącym według domyślnego identyfikatora menedżera.
Przykład 2: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, nazwisko, miasto i dział z tabeli pracownika oraz identyfikator kierownika i nazwisko kierownika z tabeli kierowników za pomocą łączenia wewnętrznego, gdzie dział pracownika to C#.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE DEPARTMENT = ‘C#’;
W powyższym zapytaniu pobraliśmy identyfikator pracownika, imię, nazwisko, miasto i dział z tabeli pracownika, identyfikator kierownika i nazwisko kierownika z tabeli kierownik, gdzie identyfikator kierownika z tabeli pracowników jest równy identyfikatorowi kierownika tylko z tabeli kierownik te rekordy pracowników, których dział pracowników to C#.
Wynikiem powyższego zapytania jest:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CZANDIGAR | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Na powyższym wyjściu widzimy tylko te rekordy, które zostały pobrane od pracowników, których dział jest w C#. Używamy klauzuli WHERE z łączeniem INNER.
Przykład 3: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, wynagrodzenie, miasto i dział z tabeli pracownika oraz identyfikator laptopa i nazwę laptopa z tabeli laptopa za pomocą funkcji Inner Join.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME FROM EMPLOYEES E INNER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID;
W powyższym zapytaniu pobraliśmy identyfikator pracownika, imię, wynagrodzenie, miasto i dział z tabeli pracowników oraz identyfikator laptopa i nazwisko z tabeli laptopa, gdzie id pracownika z tabeli pracownik jest równe identyfikatorowi pracownika z tabeli laptopa . Identyfikator pracownika to klucz obcy w tabeli Laptop, który tworzy relację nadrzędny-podrzędny między tabelą Employee a tabelą Laptop.
Wynikiem powyższego zapytania jest:
ID PRACOWNIKA | FIRST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | LAPTOPID | NAZWA |
1002 | VAIBHAV | 60000 | NOIDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | MUMBAJ | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | WYROCZNIA | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | TESTOWANIE | 107 | DELL |
2002 | PRZYJMUJ SIĘ | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65000 | HYDERABAD | WYROCZNIA | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Na danym wyjściu wyświetlane są tylko te rekordy, do których przypisany jest laptop.
Przykład 4: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, wynagrodzenie i dział z tabeli pracowników oraz identyfikator i nazwisko menedżera z tabeli menedżerów przy użyciu sprzężenia wewnętrznego, gdzie wynagrodzenie> 57000 lub dział to Oracle.
SELECT EMPLOYEEID, FIRST_NAME, SALARY, DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID = M.MANAGERID WHERE SALARY > 57000 OR DEPARTMENT = 'ORACLE';
W powyższym zapytaniu pobraliśmy identyfikator pracownika, imię, wynagrodzenie i dział z tabeli pracownika oraz identyfikator i nazwisko kierownika z tabeli kierownik, gdzie identyfikator kierownika z tabeli Pracownicy jest równy identyfikatorowi kierownika z kierownika tylko ci pracownicy, których wynagrodzenie jest większe niż 57000 lub działem jest Oracle.
Wynikiem powyższego zapytania jest:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
5002 | KOSZULKA | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
W powyższym wyniku wyświetlane są tylko te rekordy pracowników, których wynagrodzenie jest większe niż 57000 lub dział pracowników to „Oracle”. Operator OR wyświetla rekordy, jeśli jeden z podanych warunków w zapytaniu jest spełniony.