sql >> Databasteknik >  >> RDS >> Database

Hur man använder INNER JOIN i SQL

I den här artikeln kommer vi att lära oss om konceptet INNER JOIN och hur man använder det i SQL med WHERE-satsen.

Vad är INNER JOIN i SQL?

Inner Join är en typ av join i SQL. Inner Join i SQL är en allmänt använd join. Denna join returnerar endast de rader som är gemensamma i båda tabellerna. Inner join används för att sammanfoga två tabeller.

Syntax för Inner Join i SQL:

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

Table1.column =table2.column är den gemensamma kolumnen som upprätthåller den överordnade underordnade relationen mellan dessa två tabeller.

Det finns några steg som vi måste använda i Inner Join i SQL-frågan:

1. Skapa en ny databas eller använd en befintlig databas genom att välja databasen med nyckelordet USE följt av databasnamnet.

2. Skapa en ny tabell i den valda databasen, eller så kan du använda en redan skapad tabell.

3. Om tabellen är nyskapad infogar du posterna i den nyskapade databasen med hjälp av INSERT-frågan.

4. Visa infogade data med hjälp av SELECT-frågan utan Inner Join-frågan.

5 Nu är vi redo att använda Inner Join i SQL-frågorna.

Steg 1:Skapa en ny databas eller använd en redan skapad databas.

Jag har redan skapat en databas. Jag kommer att använda mitt befintliga skapade databasnamn, Företag.

USE Company;

Företag är databasnamnet.

De som inte har skapat en databas följer nedanstående fråga för att skapa databasen:

CREATE DATABASE database_name;

När du har skapat databasen väljer du databasen med hjälp av nyckelordet USE följt av databasens namn.

Steg 2:Skapa en ny tabell eller använd redan befintlig tabell:

Jag har redan skapat en tabell. Jag kommer att använda den befintliga tabellen med namnet Anställda och chef när vi kör Inner Join-frågan.

För att skapa den nya tabellen, följ nedanstående CREATE TABLE-syntax:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Steg 3:Infoga posterna i den nyskapade tabellen med hjälp av INSERT-frågan

Använd syntaxen nedan för att infoga nya poster i tabellen:

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

Steg 4: Visa posterna med hjälp av SELECT-frågan.

Visa posterna från tabellen med följande syntax:

SELECT * FROM table_name;

Följande fråga kommer att visa uppgifterna om anställda.

SELECT * FROM Employees;

Utdata från ovanstående SELECT-fråga är:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 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 TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60 000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TESTER 4
5002 SANKET CHAUHAN 70 000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTER 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65 000 HYDERABAD ORACLE 1

Följande fråga kommer att visa chefens poster.

SELECT * FROM Manager;

Utdata från ovanstående SELECT-fråga är:

Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTER
5 Akash Kadam C#

Följande fråga kommer att visa uppgifterna för den bärbara datorn.

SELECT * FROM Laptop;

Utdata från ovanstående SELECT-fråga är:

LAPTOPID NAMN ANSTÄLLD
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

Steg 5:Vi är redo att använda INNER JOIN i frågorna

Låt oss förstå den inre kopplingen med hjälp av exempel.

Exempel 1: Skriv en fråga för att visa medarbetar-id, förnamn, efternamn, lön, stad från medarbetarens tabell och chefs-id och chefsnamn från chefstabellen med hjälp av 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;
>

I ovanstående fråga har vi hämtat anställd-id, förnamn, efternamn, lön, stad från medarbetarens tabell och chefs-id, chefsnamn från chefstabell där anställdas tabellchefs-id kolumn är lika med chefstabell chefs-id kolumn. Frågan returnerar alla matchningsposter från båda tabellerna. Manager-id är en gemensam kolumn mellan båda tabellerna. E är ett alias för den anställdes bord, medan M är för chefstabellen. Kolumnen chefs-id fungerar som en främmande nyckel i den anställdes tabell. Manager-id fungerar som primärnyckel i managertabellen, vilket skapar en förälder-underordnad relation mellan de två tabellerna.

Utdata från ovanstående fråga är:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60 000 DELHI ORACLE 1
6003 NIKITA INGALE 65 000 HYDERABAD ORACLE 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 70 000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
5001 ARCHIT SHARMA 55500 DELHI TESTER 4
6001 RAHUL NIKAM 54500 BANGALORE TESTER 4
1002 VAIBHAV SHARMA 60 000 NOIDA C# 5
2003 RUCHIKA JAIN 50 000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

Posterna visas i stigande ordning enligt standard manager-id.

Exempel 2: Skriv en fråga för att visa medarbetar-id, förnamn, efternamn, stad och avdelning från medarbetarens tabell och chefs-id och chefsnamn från chefstabell med Inner Join där anställds avdelning är 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#’;

I ovanstående fråga har vi hämtat medarbetar-id, förnamn, efternamn, stad och avdelning från medarbetarens tabell, chefs-id och chefsnamn från chefstabellen där chefs-id från anställdas tabell endast är lika med chefs-id från chefstabellen de anställdas poster vars personalavdelning är C#.

Utdata från ovanstående fråga är:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1002 VAIBHAV SHARMA 60 000 NOIDA C# 5
2003 RUCHIKA JAIN 50 000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

I utgången ovan kan vi se endast de poster som hämtas från anställda vars avdelning är C#. Vi använder WHERE-satsen med INNER join.

Exempel 3: Skriv en fråga för att visa medarbetar-id, förnamn, lön, stad och avdelning från anställds bord, och laptop-id och laptop-namn från laptop-tabellen med 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;
>

I ovanstående fråga har vi hämtat anställd-id, förnamn, lön, stad och avdelning från anställdas tabell, och laptop-id, och namn från laptop-tabell där anställd-id från anställd-tabell är lika med anställd-id från laptop-tabell . Medarbetar-id är en främmande nyckel i Laptop-tabellen, som skapar en förälder-barn-relation mellan Employee-tabellen och Laptop-tabellen.

Utdata från ovanstående fråga är:

ANSTÄLLDA ID FIRST_NAME LÖN STAD AVDELNING LAPTOPID NAMN
1002 VAIBHAV 60 000 NOIDA C# 102 HP
3003 DEEPAM 58500 MUMBAI JAVA 104 HP
4002 ASHWINI 54500 NOIDA JAVA 105 DELL
4003 RUCHIKA 60 000 DELHI ORACLE 106 LENOVO
5001 ARCHIT 55500 DELHI TESTER 107 DELL
2002 BHAVESH 65500 PUNE FMW 111 LENOVO
6003 NIKITA 65 000 HYDERABAD ORACLE 112 LENOVO
1003 NIKHIL 50500 JAIPUR FMW 113 HP

Endast de poster visas i den givna utgången som den bärbara datorn är tilldelad till.

Exempel 4: Skriv en fråga för att visa medarbetar-id, förnamn, lön och avdelning från anställdas tabell och chefs-ID och chefsnamn från chefstabellen med hjälp av inre koppling där lön> 57 000 eller avdelning är 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';

I ovanstående fråga har vi hämtat anställd-id, förnamn, lön och avdelning från den anställdes tabell, och chefs-id och chefsnamn från chefstabellen där chefs-id från personaltabellen är lika med chefs-id från chefen endast de anställda vars lönen är högre än 57 000 eller avdelningen är Oracle.

Utdata från ovanstående fråga är:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60 000 DELHI ORACLE 1
6003 NIKITA INGALE 65 000 HYDERABAD ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
5002 SANKET CHAUHAN 70 000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
1002 VAIBHAV SHARMA 60 000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

I ovanstående utdata visas endast de anställda poster vars lön är högre än 57 000 eller medarbetaravdelningen är 'Oracle'. ELLER-operatorn visar poster om ett av de givna villkoren i frågan är sant.


  1. Åtgärda "FEL: saknar FROM-klausulpost för tabell" i PostgreSQL när du använder UNION, EXCEPT eller INTERSECT

  2. ORA-02287:sekvensnummer är inte tillåtet här

  3. Återställ tabellstruktur från frm- och ibd-filer

  4. Specialtecken i MySQL-tabellnamn