Database
 sql >> Baza danych >  >> RDS >> Database

Jak używać INNER JOIN w SQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zindeksowane widoki i statystyki

  2. 8 poleceń WP-CLI do czyszczenia i optymalizacji witryny

  3. Jak uzyskać ostatni dzień miesiąca w T-SQL?

  4. Zintegrowany model danych transportowych

  5. Podstawy wyrażeń tabelarycznych, część 12 – Wbudowane funkcje o wartościach tabelarycznych