sql >> Base de Datos >  >> RDS >> Database

Tipos de SQL JOIN

SQL JOIN combina una o más tablas en función de su relación. SQL JOIN implica una tabla principal y una relación de tabla secundaria.

Hay diferentes tipos de JOINS SQL:

  1. Unión interna
  2. Unión exterior izquierda
  3. Unión exterior derecha
  4. Unión externa completa
  5. Unión cruzada.

Comprendamos cada tipo de unión SQL con la ayuda de ejemplos.

Unión interna

La unión interna en SQL es una unión ampliamente utilizada. Obtuvo todos los registros de ambas tablas hasta que la condición coincidiera. Significa que esta combinación devolverá solo las filas comunes en ambas tablas.

Sintaxis de SQL Inner Join:

SELECT  Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 INNER JOIN Table_Name2 ON table_Name1.Column_Name = Table_Name2.Column_Name;

Considere las tablas ya existentes, que tienen ciertos datos:

Tabla 1:Empleados

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

Tabla 2:Gerente

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#

Tabla 3:Computadora portátil:

LAPTOPID NOMBRE ID DE EMPLEADO
L101 DELL NULO
L102 HP 1002
L103 LENOVO NULO
L104 HP 3003
L105 DELL 4002
L106 LENOVO 4003
L107 DELL 5001
L108 HP NULO
L109 DELL NULO
L110 HP NULO

Ejemplos de SQL Inner Join

Ejemplo 1: Ejecute una consulta para unir la tabla de empleados y la tabla de gerentes y muestre los detalles de los empleados como la identificación del empleado, el nombre del empleado, el salario de la tabla del empleado y la identificación y el nombre del gerente de la tabla del gerente.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;

En la consulta anterior, obtuvimos la identificación del empleado, el nombre, el apellido, el salario 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. El campo de identificación del gerente se coloca como una clave externa en la tabla de empleados. 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.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO SALARIO ID DE ADMINISTRADOR NOMBRE_GERENTE
1001 VAIBHAVI MISHRA 65500 1 Sneedep Kaur
2001 PRACHI SHARMA 55500 1 Sneedep Kaur
4003 RUCHIKA AGARWAL 60000 1 Sneedep Kaur
1003 NIKHIL VANI 50500 2 Kirti kirtane
2002 BHAVESH JAÍN 65500 2 Kirti kirtane
3002 ANUJA WANRE 50500 2 Kirti kirtane
3001 PRANOTI SHENDE 55500 3 Abhishek Manish
3003 DEEPAM JAUHARI 58500 3 Abhishek Manish
4002 ASHWINI BAGHAT 54500 3 Abhishek Manish
4001 RAJESH GOUD 60500 4 Anupam Mishra
5001 ARCHIT SHARMA 55500 4 Anupam Mishra
1002 VAIBHAV SHARMA 60000 5 Akash Kadam
2003 RUCHIKA JAÍN 50000 4 Akash Kadam

Los registros se muestran en orden ascendente por ID de administrador.

Ejemplo 2: Ejecute una consulta para unir la tabla de empleados y la tabla de gerentes, y muestre los detalles de los empleados, como la identificación del empleado, el nombre del empleado, el salario de la tabla del empleado y la identificación del gerente y el departamento del gerente de la tabla del gerente donde el salario del empleado es superior a 58000.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_DEPARTMENT FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE SALARY > 58000;

En la consulta anterior, obtuvimos la identificación del empleado, el nombre, el apellido, el salario de la tabla del empleado, la identificación del administrador y el departamento 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. tabla solo aquellos registros de empleados cuyo salario es mayor a 58000.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO SALARIO ID DE ADMINISTRADOR DEPARTAMENTO_GERENTE
1001 VAIBHAVI MISHRA 65500 1 ORACULO
4003 RUCHIKA AGARWAL 60000 1 ORACULO
2002 BHAVESH JAÍN 65500 2 FMW
3003 DEEPAM JAUHARI 58500 3 JAVA
4001 RAJESH GOUD 60500 4 PRUEBA
1002 VAIBHAV SHARMA 60000 5 C#

Solo se muestran seis registros donde el salario de un empleado supera los 58000.

Ejemplo 3: Ejecute una consulta para unir la tabla de empleados y la tabla de la computadora portátil, muestre los detalles del empleado como la identificación del empleado, el nombre del empleado y el salario, la ciudad de la tabla del empleado, la identificación de la computadora portátil y el nombre de la computadora portátil de la tabla de la computadora portátil

SELECT EMP.EMPLOYEEID, EMP.FIRST_NAME, EMP.SALARY, EMP.CITY, LAP.LAPTOPID, LAP. NAME FROM EMPLOYEES EMP INNER JOIN LAPTOP LAP ON EMP.EMPLOYEEID = LAP.EMPLOYEEID;

En la consulta anterior, obtuvimos la identificación del empleado, el nombre, el salario, la ciudad de la identificación de la computadora portátil de la mesa de los empleados 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 mesa 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.

Salida:

ID DE EMPLEADO FIRST_NAME SALARIO CIUDAD PORTÁTIL NOMBRE
1002 VAIBHAV 60000 NOIDA L102 HP
3003 DEEPAM 58500 BOMBAY L104 HP
4002 ASHWINI 54500 NOIDA L105 DELL
4003 RUCHIKA 60000 DELHI L106 LENOVO
5001 ARCHIT 55500 DELHI L107 DELL

Solo se muestran los registros de cinco empleados.

Ejemplo 4: Escriba una consulta para mostrar la identificación del empleado, el nombre, el salario y el departamento de la tabla de empleados. La identificación del administrador y el nombre del administrador de la tabla del administrador utilizando la combinación interna donde el salario> 55000 y 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 > 55000 AND DEPARTMENT = 'ORACLE';

En el ejemplo de consulta de unión anterior, mostramos los detalles del empleado como identificación, nombre, salario y departamento de la tabla del empleado, identificación del administrador y 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 el gerente solo aquellos empleados cuyo salario es mayor a 55000 y el Departamento es Oracle.

Salida:

ID DE EMPLEADO FIRST_NAME SALARIO DEPARTAMENTO ID DE ADMINISTRADOR NOMBRE_GERENTE
1001 VAIBHAVI 65500 ORACULO 1 Snehdeep Kaur
2001 PRACHI 55500 ORACULO 1 Snehdeep Kaur
4003 RUCHIKA 60000 ORACULO 1 Snehdeep Kaur

Solo tres empleados cuyo salario es mayor a 55000 y el departamento es Oracle.

Ejemplo 5: Ejecute una consulta de combinación en la tabla Empleados, Gerente y Computadora portátil, y muestre los detalles de los empleados, la identificación del administrador y la identificación de la computadora portátil.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, M.MANAGERID, L.LAPTOPID FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID = M.MANAGERID INNER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID; 

La consulta anterior muestra la identificación del empleado, el nombre, el apellido, la identificación del gerente y la identificación de la computadora portátil de las tablas de empleados, gerente y computadora portátil. Unimos tres mesas. La identificación del empleado es una columna común entre los empleados y la mesa de la computadora portátil y crea una relación padre-hijo entre estas tres tablas. Entre empleados y gerentes, la identificación del administrador de la tabla es la columna común.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO ID DE ADMINISTRADOR PORTÁTIL
4003 RUCHIKA AGARWAL 1 L106
3003 DEEPAM JAUHARI 3 L104
4002 ASHWINI BAGHAT 3 L105
5001 ARCHIT SHARMA 4 L107
1002 VAIBHAV SHARMA 5 L102

Unión exterior izquierda

La combinación externa izquierda devolverá todos los registros de la tabla en el lado izquierdo de la combinación y los registros coincidentes de la tabla en el lado derecho de la combinación. El conjunto de resultados contiene valores nulos para los registros que no son comunes en el lado derecho.

Sintaxis de combinación externa izquierda:

SELECT        Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 LEFT OUTER JOIN Table_Name2 ON Table_Name1.Column_Name = Table_Name2.Column_Name;
>

Considere las tablas existentes, que tienen los siguientes registros:

Tabla 1:Empleados

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

Tabla 2:Gerente

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#

Mesa 3:Portátil

LAPTOPID NOMBRE ID DE EMPLEADO
L101 DELL NULO
L102 HP 1002
L103 LENOVO NULO
L104 HP 3003
L105 DELL 4002
L106 LENOVO 4003
L107 DELL 5001
L108 HP NULO
L109 DELL NULO
L110 HP NULO

Ejemplos de SQL Left Outer Join

Ejemplo 1: Ejecute una consulta de combinación externa izquierda en la tabla de empleados y la tabla de la computadora portátil, donde se muestra la identificación del empleado, el nombre del empleado y la identificación de la computadora portátil.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID; 

En la consulta anterior, mostramos la identificación del empleado, el nombre, el apellido de la identificación de la computadora portátil de la mesa del empleado y el nombre de la tabla de la computadora portátil y realizamos una consulta de combinación externa izquierda en estas dos tablas. La consulta devolverá valores nulos en el lado derecho de la tabla si las filas no son similares entre tablas.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO PORTÁTIL NOMBRE
1001 VAIBHAVI MISHRA NULO NULO
1002 VAIBHAV SHARMA L102 HP
1003 NIKHIL VANI NULO NULO
2001 PRACHI SHARMA NULO NULO
2002 BHAVESH JAÍN NULO NULO
2003 RUCHIKA JAÍN NULO NULO
3001 PRANOTI SHENDE NULO NULO
3002 ANUJA WANRE NULO NULO
3003 DEEPAM JAUHARI L104 HP
4001 RAJESH GOUD NULO NULO
4002 ASHWINI BAGHAT L105 DELL
4003 RUCHIKA AGARWAL L106 LENOVO
5001 ARCHIT SHARMA L107 DELL

Ejemplo 2: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido y el salario de la tabla del empleado a la izquierda de la unión externa en la tabla de la computadora portátil donde el salario> 55000.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E LEFT OUTER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID WHERE SALARY > 55000;

En la consulta anterior, obtuvimos los detalles de los empleados de la tabla de empleados y los detalles de la computadora portátil de la tabla de la computadora portátil, pero solo los detalles de los empleados cuyo salario es superior a 55000. Realizamos la consulta de combinación externa izquierda en estas dos tablas. La consulta devolverá valores nulos en el lado derecho de la tabla si las filas no son similares entre tablas.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO SALARIO PORTÁTIL NOMBRE
1001 VAIBHAVI MISHRA 65500 NULO NULO
1002 VAIBHAV SHARMA 60000 L102 HP
2001 PRACHI SHARMA 55500 NULO NULO
2002 BHAVESH JAÍN 65500 NULO NULO
3001 PRANOTI SHENDE 55500 NULO NULO
3003 DEEPAM JAUHARI 58500 L104 HP
4001 RAJESH GOUD 60500 NULO NULO
4003 RUCHIKA AGARWAL 60000 L106 LENOVO
5001 ARCHIT SHARMA 55500 L107 DELL

Unión exterior derecha

La combinación externa derecha devolverá todos los registros de la tabla en el lado derecho de la combinación y los registros coincidentes de la tabla en el lado izquierdo de la combinación. El conjunto de resultados contiene valores nulos para los registros que no son comunes en el lado izquierdo.

Sintaxis de combinación externa derecha:

SELECT        Table_Name1.Colum_Name1,     Table_Name1.Column_Name2, Table_Name1.Column_Name3,Table_Name2.Column_Name1,Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 RIGHT OUTER JOIN Table_Name2 ON Table_Name1.Column_Name = Table_Name2.Column_Name;
>

Ejemplos de SQL Right Outer Join

Ejemplo 1: Ejecute una consulta de combinación externa derecha en la mesa de los empleados y la mesa de la computadora portátil, donde se muestra la identificación del empleado, el nombre de los empleados.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM EMPLOYEES E Right OUTER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID; 

En la consulta anterior, mostramos la identificación del empleado, el nombre, el apellido de la identificación de la computadora portátil de la mesa del empleado y el nombre de la tabla de la computadora portátil y realizamos la consulta de unión externa derecha en estas dos tablas. La consulta devolverá valores nulos en el lado izquierdo de la tabla si las filas no son similares entre tablas.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO PORTÁTIL NOMBRE
NULO NULO NULO L101 DELL
1002 VAIBHAV SHARMA L102 HP
NULO NULO NULO L103 LENOVO
3003 DEEPAM JAUHARI L104 HP
4002 ASHWINI BAGHAT L105 DELL
4003 RUCHIKA AGARWAL L106 LENOVO
5001 ARCHIT SHARMA L107 DELL
NULO NULO NULO L108 HP
NULO NULO NULO L109 DELL
NULO NULO NULO L110 HP

Ejemplo 2: Escriba una consulta para obtener la identificación, el nombre y el apellido del empleado de la tabla del empleado. La unión externa derecha en la mesa de la computadora portátil donde el nombre de la computadora portátil incluye una de las listas es Dell, HP.

SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E RIGHT OUTER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID WHERE L.NAME IN ('DELL', 'HP');

En la consulta anterior, mostramos los detalles de los empleados de los detalles de la computadora portátil de la mesa del empleado en la mesa de la computadora portátil. Realizamos la consulta de combinación externa correcta en estas dos tablas solo para el empleado cuyo nombre de computadora portátil incluye una de las listas es Dell y HP. La consulta devolverá valores nulos en el lado izquierdo de la tabla si las filas no son similares entre tablas.

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO PORTÁTIL NOMBRE
NULO NULO NULO L101 DELL
1002 VAIBHAV SHARMA L102 HP
3003 DEEPAM JAUHARI L104 HP
4002 ASHWINI BAGHAT L105 DELL
5001 ARCHIT SHARMA L107 DELL
NULO NULO NULO L108 HP
NULO NULO NULO L109 DELL
NULO NULO NULO L110 HP

Unión externa completa

Full Outer Join fusiona el resultado tanto de Left Outer Joins como de Right Outer Join. Full Outer Join es lo mismo que Cross Join. Full Outer Joins devuelve la salida, donde las filas son comunes o no comunes entre las tablas.

Sintaxis de unión externa completa:

SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLE1 FULL JOIN TABLE2;

Ejemplo 1: Escriba una consulta para mostrar la identificación del empleado, el nombre y el apellido de la identificación del administrador de la tabla del empleado. Combinación externa completa Tabla de administrador donde el salario del empleado es superior a 65000.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, M.MANAGERID FROM EMPLOYEES FULL JOIN MANAGER M WHERE SALARY > 65000;

En la consulta anterior, mostramos los detalles de los empleados y los detalles del gerente de la tabla de empleados y gerentes donde el salario del empleado es superior a 65000 usando la unión completa. En su totalidad, una cada Fila de la tabla del empleado a través de cada Fila de la tabla del gerente, es decir, se producirá el producto cartesiano. M * N

Salida:

ID DE EMPLEADO FIRST_NAME APELLIDO ID DE ADMINISTRADOR
1001 VAIBHAVI MISHRA 1
1001 VAIBHAVI MISHRA 2
1001 VAIBHAVI MISHRA 3
1001 VAIBHAVI MISHRA 4
1001 VAIBHAVI MISHRA 5
2002 BHAVESH JAÍN 1
2002 BHAVESH JAÍN 2
2002 BHAVESH JAÍN 3
2002 BHAVESH JAÍN 4
2002 BHAVESH JAÍN 5

Como podemos ver, la identificación de empleado 1001 se une con cada identificación de administrador, lo mismo con la identificación de empleado 2002.

Ejemplo 2: Ejecute una consulta de combinación externa completa en la tabla de empleados y la tabla de la computadora portátil, donde el salario del empleado es superior a 60000 y la ubicación del empleado es Pune.

SELECT LAPTOPID, E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY FROM LAPTOP FULL JOIN EMPLOYEES E WHERE SALARY > 60000 AND CITY ='PUNE';

En la consulta anterior, mostramos la identificación de la computadora portátil, la identificación del empleado, el nombre, el salario y la ciudad de la computadora portátil, solo se unen a los empleados cuyo salario es superior a 60000 y la ciudad es Pune. Si ambas condiciones coinciden solo para el empleado, se obtiene el registro.

Salida:

Unión cruzada

Las uniones cruzadas en SQL no son más que un producto cartesiano. Cada fila de una tabla se combina o fusiona con cada fila de la otra tabla. M * N es unión cruzada

Sintaxis de unión cruzada:

SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLE1 CROSS JOIN TABLE2;

Ejemplo 1: Escriba una consulta para realizar una operación de combinación cruzada en la tabla de empleados y la tabla de gerentes donde el nombre del empleado comienza con A

SELECT EMPLOYEEID, FIRST_NAME, M.MANAGERID FROM EMPLOYEES CROSS JOIN MANAGER M WHERE FIRST_NAME LIKE 'A%';

En el ejemplo de consulta de unión externa completa anterior, recuperamos los detalles del empleado y del gerente de la tabla de empleados y la tabla del gerente, pero solo aquellos registros donde el nombre del empleado comienza con la letra 'A'.

Salida:

El resultado muestra que la identificación del empleado es una unión cruzada con cada fila de identificación del administrador.

M * N Aquí, M =3; ID de empleado de las tablas de empleados

n =5; ID de administrador de la tabla de administradores 3 * 5 =15 filas.

Ejemplo 2: Escriba una consulta para realizar una operación de combinación cruzada en la mesa de la computadora portátil y la mesa de empleados donde el salario de los empleados es mayor que 58000 y Mumbai.

SELECT LAPTOPID, NAME, E.EMPLOYEEID FROM LAPTOP CROSS JOIN EMPLOYEES E WHERE SALARY > 58000 AND CITY ='MUMBAI';

En la consulta anterior, mostramos la identificación de la computadora portátil, el nombre y la identificación del empleado de la tabla de la computadora portátil para realizar una operación de combinación cruzada en la tabla de empleados donde el salario del empleado es mayor a 58000 y la ciudad es Pune. La unión cruzada funciona como M * N.

Salida: