In dit artikel zullen we leren over het INNER JOIN-concept en hoe het te gebruiken in SQL met de WHERE-clausule.
Wat is INNER JOIN in SQL?
Inner Join is een type join in de SQL. Inner Join in SQL is een veelgebruikte join. Deze join retourneert alleen die rijen die in beide tabellen voorkomen. Inner join wordt gebruikt om twee tabellen samen te voegen.
Syntaxis van Inner Join in de SQL:
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;
Table1.column =table2.column is de algemene kolom die de ouder-kindrelatie tussen deze twee tabellen handhaaft.
Er zijn enkele stappen die we moeten gebruiken in de Inner Join in de SQL-query:
1. Maak een nieuwe database of gebruik een bestaande database door de database te selecteren met het trefwoord USE gevolgd door de databasenaam.
2. Maak een nieuwe tabel in de geselecteerde database, of u kunt een reeds gemaakte tabel gebruiken.
3. Als de tabel nieuw is gemaakt, voegt u de records in de nieuw gemaakte database in met behulp van de INSERT-query.
4. Bekijk de ingevoegde gegevens met de SELECT-query zonder de Inner Join-query.
5 Nu zijn we klaar om de Inner Join te gebruiken in de SQL-query's.
Stap 1:Maak een nieuwe database of gebruik een reeds aangemaakte database.
Ik heb al een database aangemaakt. Ik zal mijn bestaande databasenaam, Company, gebruiken.
USE Company;
Bedrijf is de naam van de database.
Degenen die geen database hebben gemaakt, volgen de onderstaande vraag om de database te maken:
CREATE DATABASE database_name;
Nadat u de database hebt gemaakt, selecteert u de database met behulp van het USE-sleutelwoord gevolgd door de databasenaam.
Stap 2:Maak een nieuwe tabel of gebruik een reeds bestaande tabel:
Ik heb al een tabel gemaakt. Ik zal de bestaande tabel met de naam Werknemers en Manager gebruiken terwijl we de Inner Join-query uitvoeren.
Volg de onderstaande CREATE TABLE-syntaxis om de nieuwe tabel te maken:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Stap 3:Voeg de records in de nieuw gemaakte tabel in met behulp van de INSERT-query
Gebruik de onderstaande syntaxis om nieuwe records in de tabel in te voegen:
INSERT INTO table_name VALUES(value1, value2, value3);
Stap 4: Bekijk de records met de SELECT-query.
Bekijk de records uit de tabel met de volgende syntaxis:
SELECT * FROM table_name;
De volgende zoekopdracht toont de records van werknemers.
SELECT * FROM Employees;
De uitvoer van de bovenstaande SELECT-query is:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
De volgende zoekopdracht toont de records van Manager.
SELECT * FROM Manager;
De uitvoer van de bovenstaande SELECT-query is:
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORAKLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTEN |
5 | Akash Kadam | C# |
De volgende zoekopdracht toont de records van Laptop.
SELECT * FROM Laptop;
De uitvoer van de bovenstaande SELECT-query is:
LAPTOPID | NAAM | WERKNEMER-ID |
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 |
Stap 5:We zijn klaar om de INNER JOIN te gebruiken in de zoekopdrachten
Laten we de Inner Join begrijpen aan de hand van voorbeelden.
Voorbeeld 1: Schrijf een query om het werknemers-ID, voornaam, achternaam, salaris, stad uit de tabel van de werknemer en manager-ID en managernaam uit de managertabel weer te geven met behulp van de Inner join.
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;
In de bovenstaande zoekopdracht hebben we werknemer-ID, voornaam, achternaam, salaris, stad uit de tabel van de werknemer en manager-ID, managernaam uit managertabel gehaald, waarbij de kolom van de tabelmanager-ID van de werknemer gelijk is aan de kolom met manager-tabelmanager-ID. De query retourneert alle overeenkomende records uit beide tabellen. Manager-ID is een algemene kolom tussen beide tabellen. E is een aliasnaam voor de tafel van de werknemer, terwijl M voor de tafel van de manager is. De kolom manager-ID werkt als een externe sleutel in de tabel van de werknemer. De manager-ID werkt als de primaire sleutel in de managertabel, waardoor een ouder-kindrelatie tussen de twee tabellen ontstaat.
De uitvoer van de bovenstaande vraag is:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TESTEN | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
De records worden in oplopende volgorde weergegeven door standaard manager-ID.
Voorbeeld 2: Schrijf een query om werknemer-ID, voornaam, achternaam, stad en afdeling weer te geven uit de tabel van de werknemer en manager-ID en managernaam uit de managertabel met behulp van Inner Join, waarbij de afdeling van de werknemer C# is.
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#’;
In de bovenstaande query hebben we de werknemers-ID, voornaam, achternaam, stad en afdeling opgehaald uit de tabel van de werknemer, manager-ID en managernaam uit managertabel waarbij manager-ID uit werknemerstabel gelijk is aan manager-ID alleen uit managertabel die werknemersrecords waarvan de werknemersafdeling C# is.
De uitvoer van de bovenstaande zoekopdracht is:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
In de bovenstaande uitvoer kunnen we zien dat alleen die records zijn opgehaald van werknemers van wie de afdeling C# is. We gebruiken de WHERE-component met de INNER-join.
Voorbeeld 3: Schrijf een zoekopdracht om het werknemers-ID, de voornaam, het salaris, de stad en de afdeling van de werknemerstafel en de laptop-ID en de laptopnaam van de laptoptafel weer te geven met 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;>
In de bovenstaande zoekopdracht hebben we het werknemers-ID, de voornaam, het salaris, de stad en de afdeling opgehaald van de werknemerstafel, en laptop-ID, en de naam van de laptoptafel waarbij het werknemers-ID van de werknemerstabel gelijk is aan het werknemers-ID van de laptoptafel . Werknemers-ID is een externe sleutel in de tabel Laptop, die een ouder-kindrelatie creëert tussen de tabel Werknemer en de tabel Laptop.
De uitvoer van de bovenstaande zoekopdracht is:
WERKNEMER-ID | FIRST_NAME | SALARIS | STAD | AFDELING | LAPTOPID | NAAM |
1002 | VAIBHAV | 60000 | NOIDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | MUMBAI | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | ORAKLE | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | TESTEN | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65000 | HYDERABAD | ORAKLE | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Alleen die records worden weergegeven in de gegeven uitvoer waaraan de laptop is toegewezen.
Voorbeeld 4: Schrijf een query om werknemer-ID, voornaam, salaris en afdeling weer te geven uit de werknemerstabel, en manager-ID en managernaam uit managertabel met behulp van inner join waarbij salaris> 57000 of afdeling Oracle is.
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';
In de bovenstaande query hebben we het werknemers-ID, de voornaam, het salaris en de afdeling opgehaald uit de tabel van de werknemer, en het manager-ID en de managernaam uit de managertabel waarbij het manager-ID uit de tabel met werknemers gelijk is aan het manager-ID van de manager, alleen die werknemers wiens salaris is hoger dan 57000 of afdeling is Oracle.
De uitvoer van de bovenstaande zoekopdracht is:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORAKLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTEN | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
In de bovenstaande uitvoer worden alleen die werknemersrecords weergegeven waarvan het salaris hoger is dan 57000 of de werknemersafdeling 'Oracle' is. De OR-operator geeft aan of een van de gegeven voorwaarden in de query waar is.