I denne artikel vil vi lære om INNER JOIN-konceptet, og hvordan man bruger det i SQL med WHERE-sætningen.
Hvad er INNER JOIN i SQL?
Inner Join er en type join i SQL. Inner Join i SQL er en meget brugt joinforbindelse. Denne join returnerer kun de rækker, der er fælles i begge tabeller. Indre sammenføjning bruges til at forbinde to borde.
Syntaks for indre joinforbindelse 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 er den fælles kolonne, der vedligeholder det overordnede underordnede forhold mellem disse to tabeller.
Der er nogle trin, som vi skal bruge i den indre forbindelse i SQL-forespørgslen:
1. Opret en ny database, eller brug en eksisterende database ved at vælge databasen ved at bruge nøgleordet USE efterfulgt af databasenavnet.
2. Opret en ny tabel i den valgte database, eller du kan bruge en allerede oprettet tabel.
3. Hvis tabellen er nyoprettet, skal du indsætte posterne i den nyoprettede database ved hjælp af INSERT-forespørgslen.
4. Se de indsatte data ved hjælp af SELECT-forespørgslen uden Inner Join-forespørgslen.
5 Nu er vi klar til at bruge Inner Join i SQL-forespørgslerne.
Trin 1:Opret en ny database, eller brug en allerede oprettet database.
Jeg har allerede oprettet en database. Jeg vil bruge mit eksisterende oprettede databasenavn, Company.
USE Company;
Firma er databasenavnet.
De, der ikke har oprettet en database, følg nedenstående forespørgsel for at oprette databasen:
CREATE DATABASE database_name;
Når du har oprettet databasen, skal du vælge databasen med nøgleordet USE efterfulgt af databasenavnet.
Trin 2:Opret en ny tabel, eller brug allerede eksisterende tabel:
Jeg har allerede lavet en tabel. Jeg vil bruge den eksisterende tabel med navnet Medarbejdere og ledere, når vi udfører forespørgslen om Inner Join.
For at oprette den nye tabel, følg nedenstående CREATE TABLE syntaks:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Trin 3:Indsæt posterne i den nyoprettede tabel ved hjælp af INSERT-forespørgslen
Brug nedenstående syntaks til at indsætte nye poster i tabellen:
INSERT INTO table_name VALUES(value1, value2, value3);
Trin 4: Se registreringerne ved hjælp af SELECT-forespørgslen.
Se posterne fra tabellen ved hjælp af følgende syntaks:
SELECT * FROM table_name;
Følgende forespørgsel viser medarbejdernes optegnelser.
SELECT * FROM Employees;
Outputtet af ovenstående SELECT-forespørgsel er:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | 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 | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
5002 | SANKET | CHAUHAN | 70.000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65.000 | HYDERABAD | ORACLE | 1 |
Følgende forespørgsel viser managerens optegnelser.
SELECT * FROM Manager;
Outputtet af ovenstående SELECT-forespørgsel er:
Managerid | manager_navn | manager_afdeling |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TEST |
5 | Akash Kadam | C# |
Følgende forespørgsel vil vise optegnelserne for den bærbare computer.
SELECT * FROM Laptop;
Outputtet af ovenstående SELECT-forespørgsel er:
LAPTOPID | NAVN | EMPLOYEEID |
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 |
Trin 5:Vi er klar til at bruge INNER JOIN i forespørgslerne
Lad os forstå den indre forbindelse ved hjælp af eksempler.
Eksempel 1: Skriv en forespørgsel for at vise medarbejder-id, fornavn, efternavn, løn, by fra medarbejderens tabel og leder-id og ledernavn fra ledertabellen ved hjælp af den indre joinforbindelse.
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 ovenstående forespørgsel har vi hentet medarbejder-id, fornavn, efternavn, løn, by fra medarbejderens tabel og leder-id, ledernavn fra ledertabel, hvor medarbejderes tabelleder-id-kolonne er lig med ledertabel leder-id kolonne. Forespørgslen returnerer alle match-poster fra begge tabeller. Manager-id er en fælles kolonne mellem begge tabeller. E er et aliasnavn for medarbejderens bord, mens M er for lederbordet. Leder-id-kolonnen fungerer som en fremmednøgle i medarbejderens tabel. Manager-id'et fungerer som den primære nøgle i managertabellen, hvilket skaber en forældre-underordnet relation mellem de to tabeller.
Outputtet af ovenstående forespørgsel er:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | 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 | TEST | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 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 |
Posterne vises i stigende rækkefølge efter standard manager-id.
Eksempel 2: Skriv en forespørgsel for at vise medarbejder-id, fornavn, efternavn, by og afdeling fra medarbejderens tabel og leder-id og ledernavn fra ledertabel ved hjælp af Inner Join, hvor medarbejderafdelingen er 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 ovenstående forespørgsel har vi hentet medarbejder-id, fornavn, efternavn, by og afdeling fra medarbejderens tabel, leder-id og ledernavn fra ledertabel, hvor leder-id fra medarbejdertabel kun er lig med leder-id fra ledertabel de medarbejderposter, hvis medarbejderafdeling er C#.
Outputtet fra ovenstående forespørgsel er:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | 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 ovenstående output kan vi kun se de poster, der er hentet fra medarbejdere, hvis afdeling er C#. Vi bruger WHERE-sætningen med INNER join.
Eksempel 3: Skriv en forespørgsel for at vise medarbejder-id, fornavn, løn, by og afdeling fra medarbejderens tabel, og laptop-id og laptop-navn fra laptop-tabellen ved hjælp af 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 ovenstående forespørgsel har vi hentet medarbejder-id, fornavn, løn, by og afdeling fra medarbejdernes tabel, og laptop-id, og navn fra laptop-tabel, hvor medarbejder-id fra medarbejder-tabel er lig med medarbejder-id fra laptop-tabellen . Medarbejder-id er en fremmednøgle i Laptop-tabellen, som skaber et forældre-barn-forhold mellem Medarbejder-tabellen og Laptop-tabellen.
Outputtet fra ovenstående forespørgsel er:
EMPLOYEEID | FIRST_NAME | LØN | BY | AFDELING | LAPTOPID | NAVN |
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 | TEST | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65.000 | HYDERABAD | ORACLE | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Kun de poster vises i det givne output, som den bærbare computer er tildelt.
Eksempel 4: Skriv en forespørgsel for at vise medarbejder-id, fornavn, løn og afdeling fra medarbejdertabellen og leder-id og ledernavn fra ledertabel ved hjælp af indre joinforbindelse, hvor løn> 57.000 eller afdeling er 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 ovenstående forespørgsel har vi hentet medarbejder-id, fornavn, løn og afdeling fra medarbejderens tabel, og leder-id og ledernavn fra ledertabel, hvor leder-id fra medarbejdertabel svarer til leder-id fra leder, kun de medarbejdere, hvis lønnen er større end 57.000, eller afdelingen er Oracle.
Outputtet fra ovenstående forespørgsel er:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | 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 | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
I ovenstående output vises kun de medarbejderposter, hvis løn er større end 57.000, eller medarbejderafdelingen er 'Oracle'. OR-operatoren viser, om en af de givne betingelser i forespørgslen er sand.