sql >> Database >  >> RDS >> Database

Hoe INNER JOIN te gebruiken in SQL

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.


  1. Postgresql:Hoe selecteer ik de top n procent (%) items uit elke groep/categorie

  2. GROUP BY om een ​​kolom te combineren/concateren

  3. stel sqlite db correct in op Android

  4. Twee partitionerende eigenaardigheden