En este artículo, aprenderemos sobre el concepto INNER JOIN y cómo usarlo en SQL con la cláusula WHERE.
¿Qué es INNER JOIN en SQL?
Inner Join es un tipo de unión en SQL. La unión interna en SQL es una unión ampliamente utilizada. Esta combinación devuelve solo aquellas filas que son comunes en ambas tablas. La combinación interna se usa para unir dos tablas.
Sintaxis de Inner Join en SQL:
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;
Table1.column =table2.column es la columna común que mantiene la relación padre-hijo entre estas dos tablas.
Hay algunos pasos que tenemos que usar en el Inner Join en la consulta SQL:
1. Cree una nueva base de datos o use una base de datos existente seleccionando la base de datos usando la palabra clave USE seguida del nombre de la base de datos.
2. Cree una nueva tabla dentro de la base de datos seleccionada, o puede usar una tabla ya creada.
3. Si la tabla se creó recientemente, inserte los registros en la base de datos recién creada utilizando la consulta INSERT.
4. Vea los datos insertados utilizando la consulta SELECT sin la consulta de unión interna.
5 Ahora, estamos listos para usar Inner Join en las consultas SQL.
Paso 1:Cree una nueva base de datos o use una base de datos ya creada.
Ya he creado una base de datos. Usaré mi nombre de base de datos creado existente, Compañía.
USE Company;
Empresa es el nombre de la base de datos.
Aquellos que no hayan creado una base de datos, sigan la siguiente consulta para crear la base de datos:
CREATE DATABASE database_name;
Después de crear la base de datos, seleccione la base de datos usando la palabra clave USE seguida del nombre de la base de datos.
Paso 2:Cree una nueva tabla o utilice una tabla existente:
Ya he creado una tabla. Usaré la tabla existente llamada Empleados y Gerente mientras ejecutamos la consulta de Inner Join.
Para crear la nueva tabla, siga la siguiente sintaxis de CREATE TABLE:
CREATE TABLE table_name(
columnname1 datatype(column size),
columnname2 datatype(column size),
columnname3 datatype(column size)
);
Paso 3:inserte los registros en la tabla recién creada usando la consulta INSERT
Utilice la siguiente sintaxis para insertar nuevos registros en la tabla:
INSERT INTO table_name VALUES(value1, value2, value3);
Vea los registros de la tabla usando la siguiente sintaxis:
SELECT * FROM table_name;
La siguiente consulta mostrará los registros de Empleados.
SELECT * FROM Employees;
El resultado de la consulta SELECT anterior es:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAÍN | 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 | PRUEBA | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | PRUEBA | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACULO | 1 |
La siguiente consulta mostrará los registros del Gerente.
SELECT * FROM Manager;
El resultado de la consulta SELECT anterior es:
Administrador | nombre_administrador | gerente_departamento |
1 | Snehdeep Kaur | ORACULO |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | PRUEBA |
5 | Akash Kadam | C# |
La siguiente consulta mostrará los registros de Laptop.
SELECT * FROM Laptop;
El resultado de la consulta SELECT anterior es:
LAPTOPID | NOMBRE | ID DE EMPLEADO |
101 | DELL | NULO |
102 | HP | 1002 |
103 | LENOVO | NULO |
104 | HP | 3003 |
105 | DELL | 4002 |
106 | LENOVO | 4003 |
107 | DELL | 5001 |
108 | HP | NULO |
109 | DELL | NULO |
110 | HP | NULO |
111 | LENOVO | 2002 |
112 | LENOVO | 6003 |
113 | HP | 1003 |
Paso 5:Estamos listos para usar INNER JOIN en las consultas
Entendamos el Inner Join con la ayuda de ejemplos.
Ejemplo 1: Escriba una consulta para mostrar la identificación del empleado, el nombre, el apellido, el salario, la ciudad de la tabla del empleado y la identificación y el nombre del gerente de la tabla del gerente utilizando la unión interna.
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;
En la consulta anterior, hemos obtenido la identificación del empleado, el nombre, el apellido, el salario, la ciudad de la tabla del empleado y la identificación del administrador, el nombre del administrador de la tabla del administrador donde la columna de identificación del administrador de la tabla de empleados es igual a la columna de identificación del administrador de la tabla del administrador. La consulta devolverá todos los registros de coincidencias de ambas tablas. La identificación del administrador es una columna común entre ambas tablas. E es un nombre de alias para la tabla de empleados, mientras que M es para la tabla de gerentes. La columna de identificación del gerente funciona como una clave externa en la tabla del empleado. La identificación del administrador funciona como la clave principal en la tabla del administrador, lo que crea una relación padre-hijo entre las dos tablas.
El resultado de la consulta anterior es:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACULO | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAÍN | 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 | NOIDA | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALORE | PRUEBA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
Los registros se muestran en orden ascendente por ID de administrador predeterminado.
Ejemplo 2: Escriba una consulta para mostrar la identificación del empleado, el nombre, el apellido, la ciudad y el departamento de la tabla del empleado y la identificación del administrador y el nombre del administrador de la tabla del administrador utilizando Inner Join donde el departamento del empleado es 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#’;
En la consulta anterior, hemos obtenido la identificación del empleado, el nombre, el apellido, la ciudad y el departamento de la tabla del empleado, la identificación del administrador y el nombre del administrador de la tabla del administrador donde la identificación del administrador de la tabla de empleados es igual a la identificación del administrador de la tabla del administrador solamente aquellos registros de empleados cuyo departamento de empleados es C#.
El resultado de la consulta anterior es:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIGARH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
En el resultado anterior, podemos ver que solo se recuperan los registros de los empleados cuyo departamento es C#. Usamos la cláusula WHERE con la unión INNER.
Ejemplo 3: Escriba una consulta para mostrar la identificación del empleado, el nombre, el salario, la ciudad y el departamento de la tabla del empleado, y la identificación y el nombre de la computadora portátil de la tabla de la computadora portátil usando 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;
En la consulta anterior, hemos obtenido la identificación del empleado, el nombre, el salario, la ciudad y el departamento de la tabla de empleados, la identificación de la computadora portátil y el nombre de la tabla de la computadora portátil, donde la identificación del empleado de la tabla de empleados es igual a la identificación del empleado de la tabla de la computadora portátil . La identificación del empleado es una clave externa en la tabla Laptop, que crea una relación padre-hijo entre la tabla Employee y la tabla Laptop.
El resultado de la consulta anterior es:
ID DE EMPLEADO | FIRST_NAME | SALARIO | CIUDAD | DEPARTAMENTO | PORTÁTIL | NOMBRE |
1002 | VAIBHAV | 60000 | NOIDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | BOMBAY | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | ORACULO | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | PRUEBA | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65000 | HYDERABAD | ORACULO | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
Solo aquellos registros se muestran en la salida dada a quienes se les asignó la computadora portátil.
Ejemplo 4: Escriba una consulta para mostrar la identificación del empleado, el nombre, el salario y el departamento de la tabla de empleados, y la identificación y el nombre del gerente de la tabla del gerente usando la combinación interna donde el salario> 57000 o el departamento es 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';
En la consulta anterior, hemos obtenido la identificación del empleado, el nombre, el salario y el departamento de la tabla del empleado, y la identificación del administrador y el nombre del administrador de la tabla del administrador, donde la identificación del administrador de la tabla de empleados es igual a la identificación del administrador del administrador solo para aquellos empleados cuyos el salario es superior a 57000 o el Departamento es Oracle.
El resultado de la consulta anterior es:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
6003 | NIKITA | INGALE | 65000 | HYDERABAD | ORACULO | 1 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALORE | C# | 5 |
En el resultado anterior, solo se muestran los registros de empleados cuyo salario es superior a 57000 o cuyo departamento de empleados es 'Oracle'. El operador OR muestra registros si una de las condiciones dadas en la consulta es verdadera.