Database
 sql >> Database >  >> RDS >> Database

Come usare INNER JOIN in SQL

In questo articolo impareremo il concetto di INNER JOIN e come usarlo in SQL con la clausola WHERE.

Cos'è INNER JOIN in SQL?

Inner Join è un tipo di join nell'SQL. Inner Join in SQL è un join ampiamente utilizzato. Questo join restituisce solo le righe comuni in entrambe le tabelle. L'unione interna viene utilizzata per unire due tabelle.

Sintassi di Inner Join nell'SQL:

SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;

Table1.column =table2.column è la colonna comune che mantiene la relazione padre figlio tra queste due tabelle.

Ci sono alcuni passaggi che dobbiamo usare nell'Inner Join nella query SQL:

1. Crea un nuovo database o utilizza un database esistente selezionando il database utilizzando la parola chiave USE seguita dal nome del database.

2. Crea una nuova tabella all'interno del database selezionato, oppure puoi utilizzare una tabella già creata.

3. Se la tabella è stata appena creata, inserire i record nel database appena creato utilizzando la query INSERT.

4. Visualizza i dati inseriti utilizzando la query SELECT senza la query Inner Join.

5 Ora siamo pronti per utilizzare l'Inner Join nelle query SQL.

Passaggio 1:crea un nuovo database o utilizza un database già creato.

Ho già creato un database. Utilizzerò il nome del database creato esistente, Società.

USE Company;

Società è il nome del database.

Coloro che non hanno creato un database seguono la query seguente per creare il database:

CREATE DATABASE database_name;

Dopo aver creato il database, selezionare il database utilizzando la parola chiave USE seguita dal nome del database.

Passaggio 2:crea una nuova tabella o utilizza una tabella già esistente:

Ho già creato una tabella. Userò la tabella esistente denominata Employees and Manager mentre stiamo eseguendo la query Inner Join.

Per creare la nuova tabella, segui la seguente sintassi CREATE TABLE:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Passaggio 3:inserisci i record nella tabella appena creata utilizzando la query INSERT

Utilizza la sintassi seguente per inserire nuovi record nella tabella:

INSERT INTO table_name VALUES(value1, value2, value3);

Passaggio 4: Visualizza i record utilizzando la query SELECT.

Visualizza i record dalla tabella utilizzando la seguente sintassi:

SELECT * FROM table_name;

La seguente query visualizzerà i record dei dipendenti.

SELECT * FROM Employees;

L'output della query SELECT sopra è:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NICHIL VANI 50500 JAIPUR FM 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FM 2
2003 RUCHIKA JAIN 50000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FM 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI PROVA 4
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6001 RAHUL NIKAM 54500 BANGALORE PROVA 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1

La seguente query visualizzerà i record di Manager.

SELECT * FROM Manager;

L'output della query SELECT sopra è:

ID gestore nome_gestore dipartimento_direttore
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FM
3 Abhishek Manish JAVA
4 Anupam Mishra PROVA
5 Akash Kadam C#

La seguente query visualizzerà i record di Laptop.

SELECT * FROM Laptop;

L'output della query SELECT sopra è:

LAPTOPID NOME ID DIPENDENTE
101 DELL NULLO
102 HP 1002
103 LENOVO NULLO
104 HP 3003
105 DELL 4002
106 LENOVO 4003
107 DELL 5001
108 HP NULLO
109 DELL NULLO
110 HP NULLO
111 LENOVO 2002
112 LENOVO 6003
113 HP 1003

Passaggio 5:siamo pronti per utilizzare l'INNER JOIN nelle query

Comprendiamo l'Inner Join con l'aiuto di esempi.

Esempio 1: Scrivi una query per visualizzare l'ID dipendente, il nome, il cognome, lo stipendio, la città dalla tabella del dipendente e l'ID manager e il nome del manager dalla tabella manager utilizzando l'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;

Nella query precedente, abbiamo recuperato ID dipendente, nome, cognome, stipendio, città dalla tabella del dipendente e ID manager, nome manager dalla tabella manager in cui la colonna ID manager della tabella dei dipendenti è uguale alla colonna ID manager della tabella manager. La query restituirà tutti i record delle corrispondenze da entrambe le tabelle. L'ID gestore è una colonna comune tra entrambe le tabelle. E è un nome alias per la tabella del dipendente, mentre M è per la tabella del manager. La colonna ID manager funziona come una chiave esterna nella tabella del dipendente. L'ID manager funziona come chiave primaria nella tabella manager, che crea una relazione padre-figlio tra le due tabelle.

L'output della query precedente è:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
1003 NICHIL VANI 50500 JAIPUR FM 2
2002 BHAVESH JAIN 65500 PUNE FM 2
3002 ANUJA WANRE 50500 JAIPUR FM 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4002 ASHWINI BAGAGLIO 54500 NOIDA JAVA 3
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
5001 ARCHIT SHARMA 55500 DELHI PROVA 4
6001 RAHUL NIKAM 54500 BANGALORE PROVA 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

I record vengono visualizzati in ordine crescente in base all'ID gestore predefinito.

Esempio 2: Scrivi una query per visualizzare l'ID dipendente, il nome, il cognome, la città e il dipartimento dalla tabella del dipendente e l'ID manager e il nome del manager dalla tabella del manager utilizzando Inner Join dove il dipartimento del dipendente è 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#’;

Nella query precedente, abbiamo recuperato l'ID dipendente, il nome, il cognome, la città e il dipartimento dalla tabella del dipendente, l'ID manager e il nome del manager dalla tabella manager dove ID manager dalla tabella dipendenti uguale all'id manager solo dalla tabella manager quei record dei dipendenti il ​​cui dipartimento dei dipendenti è C#.

L'output della query precedente è:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
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

Nell'output sopra, possiamo vedere solo i record recuperati dai dipendenti il ​​cui dipartimento è C#. Usiamo la clausola WHERE con il join INNER.

Esempio 3: Scrivi una query per visualizzare l'ID dipendente, il nome, lo stipendio, la città e il dipartimento dal tavolo del dipendente e l'ID del laptop e il nome del laptop dal tavolo del laptop utilizzando 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;

Nella query precedente, abbiamo recuperato l'ID dipendente, il nome, lo stipendio, la città e il dipartimento dalla tabella dei dipendenti e l'ID del laptop e il nome dalla tabella del laptop in cui l'ID dipendente dalla tabella dei dipendenti è uguale all'ID dipendente dalla tabella del laptop . L'ID dipendente è una chiave esterna nella tabella Laptop, che crea una relazione padre-figlio tra la tabella Employee e la tabella Laptop.

L'output della query precedente è:

ID DIPENDENTE FIRST_NAME STIPENDIO CITTÀ REPARTO LAPTOPID NOME
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 ORACLE 106 LENOVO
5001 ARCHIT 55500 DELHI PROVA 107 DELL
2002 BHAVESH 65500 PUNE FM 111 LENOVO
6003 NIKITA 65000 HYDERABAD ORACLE 112 LENOVO
1003 NICHIL 50500 JAIPUR FM 113 HP

Solo i record vengono visualizzati nell'output specificato a cui è assegnato il laptop.

Esempio 4: Scrivi una query per visualizzare l'ID dipendente, il nome, lo stipendio e il reparto dalla tabella dipendenti e l'ID manager e il nome manager dalla tabella manager utilizzando inner join dove stipendio> 57000 o dipartimento è 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';

Nella query precedente, abbiamo recuperato l'ID dipendente, il nome, lo stipendio e il dipartimento dalla tabella del dipendente e l'ID manager e il nome manager dalla tabella manager dove ID manager dalla tabella dipendenti è uguale all'ID manager dal manager solo quei dipendenti i cui lo stipendio è maggiore di 57000 o il dipartimento è Oracle.

L'output della query precedente è:

ID DIPENDENTE FIRST_NAME COGNOME STIPENDIO CITTÀ REPARTO RIDESTORE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
6003 NIKITA INGALE 65000 HYDERABAD ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FM 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
5002 SANKET CHAUHAN 70000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI PROVA 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

Nell'output sopra, vengono visualizzati solo i record dei dipendenti il ​​cui stipendio è maggiore di 57000 o il dipartimento dei dipendenti è "Oracle". L'operatore OR visualizza i record se una delle condizioni specificate nella query è vera.