Dans cet article, nous allons découvrir le concept INNER JOIN et comment l'utiliser en SQL avec la clause WHERE.
Qu'est-ce qu'INNER JOIN en SQL ?
La jointure interne est un type de jointure dans le SQL. La jointure interne dans SQL est une jointure largement utilisée. Cette jointure renvoie uniquement les lignes communes aux deux tables. La jointure interne est utilisée pour joindre deux tables.
Syntaxe de la jointure interne dans le SQL :
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;
Table1.column =table2.column est la colonne commune qui maintient la relation parent-enfant entre ces deux tables.
Il y a quelques étapes que nous devons utiliser dans la jointure interne dans la requête SQL :
1. Créez une nouvelle base de données ou utilisez une base de données existante en sélectionnant la base de données à l'aide du mot-clé USE suivi du nom de la base de données.
2. Créez une nouvelle table dans la base de données sélectionnée, ou vous pouvez utiliser une table déjà créée.
3. Si la table est nouvellement créée, insérez les enregistrements dans la base de données nouvellement créée à l'aide de la requête INSERT.
4. Affichez les données insérées à l'aide de la requête SELECT sans la requête Inner Join.
5 Nous sommes maintenant prêts à utiliser la jointure interne dans les requêtes SQL.
Étape 1 :Créez une nouvelle base de données ou utilisez une base de données déjà créée.
J'ai déjà créé une base de données. J'utiliserai le nom de ma base de données créée existante, Société.
USE Company;
Company est le nom de la base de données.
Ceux qui n'ont pas créé de base de données suivent la requête ci-dessous pour créer la base de données :
CREATE DATABASE database_name;
Après avoir créé la base de données, sélectionnez la base de données en utilisant le mot-clé USE suivi du nom de la base de données.
Étape 2 :Créez un nouveau tableau ou utilisez un tableau déjà existant :
J'ai déjà créé un tableau. J'utiliserai la table existante nommée Employees et Manager pendant que nous exécutons la requête Inner Join.
Pour créer la nouvelle table, suivez la syntaxe CREATE TABLE ci-dessous :
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Étape 3 :Insérez les enregistrements dans la table nouvellement créée à l'aide de la requête INSERT
Utilisez la syntaxe ci-dessous pour insérer de nouveaux enregistrements dans le tableau :
INSERT INTO table_name VALUES(value1, value2, value3);
Étape 4 : Afficher les enregistrements à l'aide de la requête SELECT.
Affichez les enregistrements de la table en utilisant la syntaxe suivante :
SELECT * FROM table_name;
La requête suivante affichera les enregistrements des Employés.
SELECT * FROM Employees;
Le résultat de la requête SELECT ci-dessus est :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | Bombay | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | Bombay | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOÏDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGAR | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
La requête suivante affichera les enregistrements de Manager.
SELECT * FROM Manager;
Le résultat de la requête SELECT ci-dessus est :
ID gestionnaire | nom_du_responsable | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manich | JAVA |
4 | Anupam Mishra | TEST |
5 | Akash Kadam | C# |
La requête suivante affichera les enregistrements de Laptop.
SELECT * FROM Laptop;
Le résultat de la requête SELECT ci-dessus est :
ID PORTABLE | NOM | ID EMPLOYEE |
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 |
Étape 5 :Nous sommes prêts à utiliser INNER JOIN dans les requêtes
Comprenons la jointure interne à l'aide d'exemples.
Exemple 1 : Écrivez une requête pour afficher l'ID de l'employé, le prénom, le nom, le salaire, la ville de la table de l'employé, et l'ID du responsable et le nom du responsable de la table du responsable à l'aide de la jointure interne.
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;
Dans la requête ci-dessus, nous avons récupéré l'identifiant de l'employé, le prénom, le nom, le salaire, la ville de la table de l'employé et l'identifiant du responsable, le nom du responsable de la table du responsable où la colonne de l'identifiant du responsable de la table des employés est égale à la colonne de l'identifiant du responsable de la table du responsable. La requête renverra tous les enregistrements correspondants des deux tables. L'ID du gestionnaire est une colonne commune aux deux tables. E est un nom d'alias pour la table des employés, tandis que M est pour la table des managers. La colonne d'ID du responsable fonctionne comme une clé étrangère dans la table de l'employé. L'identifiant du responsable fonctionne comme clé primaire dans la table des responsables, ce qui crée une relation parent-enfant entre les deux tables.
Le résultat de la requête ci-dessus est :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65000 | 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 | Bombay | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOÏDA | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | Bombay | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGAR | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Les enregistrements sont affichés dans l'ordre croissant de l'identifiant du responsable par défaut.
Exemple 2 : Écrivez une requête pour afficher l'ID, le prénom, le nom, la ville et le service de l'employé à partir de la table de l'employé et l'ID du responsable et le nom du responsable à partir de la table du responsable à l'aide de la jointure interne où le service de l'employé est 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#’;
Dans la requête ci-dessus, nous avons récupéré l'identifiant de l'employé, le prénom, le nom, la ville et le service de la table de l'employé, l'identifiant du responsable et le nom du responsable de la table du responsable où l'identifiant du responsable de la table des employés est égal à l'identifiant du responsable de la table du responsable uniquement. les enregistrements d'employés dont le service des employés est C#.
Le résultat de la requête ci-dessus est :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | Bombay | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGAR | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Dans la sortie ci-dessus, nous pouvons voir que seuls ces enregistrements sont récupérés auprès des employés dont le service est C#. Nous utilisons la clause WHERE avec la jointure INNER.
Exemple 3 : Écrivez une requête pour afficher l'identifiant, le prénom, le salaire, la ville et le service de l'employé à partir de la table de l'employé, ainsi que l'identifiant et le nom de l'ordinateur portable à partir de la table de l'ordinateur portable à l'aide de la jointure interne.
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;
Dans la requête ci-dessus, nous avons récupéré l'identifiant de l'employé, le prénom, le salaire, la ville et le service de la table des employés, l'identifiant de l'ordinateur portable et le nom de la table de l'ordinateur portable où l'identifiant de l'employé de la table des employés est égal à l'identifiant de l'employé de la table de l'ordinateur portable. . L'identifiant de l'employé est une clé étrangère dans la table Laptop, qui crée une relation parent-enfant entre la table Employee et la table Laptop.
Le résultat de la requête ci-dessus est :
ID EMPLOYEE | FIRST_NAME | SALAIRE | VILLE | DÉPARTEMENT | ID PORTABLE | NOM |
1002 | VAIBHAV | 60000 | NOÏDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | Bombay | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOÏDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | ORACLE | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | TEST | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65000 | HYDERABAD | ORACLE | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Seuls les enregistrements sont affichés dans la sortie donnée à laquelle l'ordinateur portable est attribué.
Exemple 4 : Écrivez une requête pour afficher l'identifiant, le prénom, le salaire et le service de l'employé à partir de la table des employés, ainsi que l'identifiant du responsable et le nom du responsable à partir de la table du responsable à l'aide d'une jointure interne où le salaire > 57 000 ou le service correspond à 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';
Dans la requête ci-dessus, nous avons récupéré l'identifiant de l'employé, le prénom, le salaire et le service de la table de l'employé, ainsi que l'identifiant du responsable et le nom du responsable de la table du responsable où l'identifiant du responsable de la table des employés est égal à l'identifiant du responsable du responsable uniquement les employés dont le salaire est supérieur à 57000 ou le service est Oracle.
Le résultat de la requête ci-dessus est :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | Bombay | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Dans la sortie ci-dessus, seuls les enregistrements d'employés dont le salaire est supérieur à 57 000 ou dont le service employé est « Oracle » sont affichés. L'opérateur OR affiche les enregistrements si l'une des conditions données dans la requête est vraie.