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.