sql >> Base de Datos >  >> RDS >> Oracle

¿Qué son Oracle Joins (Sql Joins)?

A veces es necesario mostrar datos de varias tablas. Para realizar eso, debe vincular una tabla a otra tabla. Hay varias formas en que podemos obtener datos de varias tablas. Aquí me centraría en Oracle Joins con ejemplos. Esto es válido en general para cualquier Sql Joins también . Estaría explicando la unión interna, la unión externa, la unión cruzada, la unión natural, la unión cartesiana con ejemplos

Oracle se une

Se une un oráculo  es una consulta que combina filas de dos o más tablas de Oracle.

Oracle realiza una combinación cada vez que aparecen varias tablas en la cláusula FROM. Para unir dos tablas, debe identificar las columnas comunes que relacionan las dos tablas. En la cláusula WHERE, define la relación entre las tablas enumeradas en la cláusula FROM.

Algunas directrices para uniones de Oracle (uniones Sql)

1) al escribir la declaración de selección que une las tablas, es una buena práctica preceder el nombre de la columna con el nombre de la tabla para mayor claridad.

2) Para unir m tablas, necesitamos al menos m-1 condiciones

3) Podemos usar el alias de la tabla para el nombre de la tabla si el nombre de la tabla es largo. La tabla parece el código más corto y, por lo tanto, menos memoria

4)  Si no está utilizando table_name o alias de tablas al seleccionar la columna y si varias tablas tienen el mismo nombre de columna, entonces debemos especificar table_name para la columna que es común a todas las tablas

Unión interna

El operador más común utilizado para relacionar dos tablas es el operador de igualdad (=). Esto se llama una unión de igualdad o equijoin . Esta unión simple también conocida como unión interna

Ejemplo de combinación interna de Oracle

Syntax
Select tab1.col,tab2.col
from tab1 ,tab2
where tab1.col=tab2.col

SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP , DEPT
where EMP. DEPTNO= DEPT. DEPTNO;

Para ejecutar una unión de tres o más tablas, Oracle une dos tablas según la condición de unión, luego une el resultado a otra tabla, según las condiciones de unión y repite hasta que se unen todas las tablas.

Uniones complejas

Tener una o más condiciones añadidas en la cláusula WHERE. Por ejemplo, si está interesado en todos los departamentos y sus ubicaciones fuera del Reino Unido, use

SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';

No -equijoin

Una unión no equitativa es la condición de unión distinta del operador de igualdad.

Es una instrucción de unión interna que utiliza una operación desigual (es decir, <>,>, <, =, ENTRE, etc.) para unir filas de diferentes tablas

SELECT e.ename, e.sal, s.grade
FROM  emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;

Productos cartesianos o unión cartesiana o unión cruzada

-Se produce una unión cartesiana (o producto cartesiano) (o unión cruzada) cuando se seleccionan datos de dos o más tablas y se define una condición de unión o no se define una relación común en la cláusula WHERE

-Si se realiza una unión y no se especifica ninguna condición de unión, resulta un producto cartesiano. Un producto cartesiano es un conjunto de resultados que es el producto de las filas totales de las dos tablas. Si la tabla "P" tiene 100 filas y la tabla "Q" tiene 100 filas y se desarrolla un producto cartesiano, el conjunto de resultados resultante tendrá 10000 filas. Si una consulta une tres o más tablas, el optimizador puede encontrar una forma de elegir un orden de unión que excluya un producto cartesiano, pero no cuente con ello.

SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   cross join DEPT ;

Uniones externas

Las uniones internas que hemos visto, devuelven las filas coincidentes de dos o más tablas según la condición de unión. El mecanismo de unión externa devuelve los datos de una tabla incluso si no hay una fila correspondiente en la tabla de unión.

Hay tres uniones externas

a) Unión exterior izquierda o Unión izquierda

b) Unión exterior derecha o Unión derecha

c) Unión externa completa o unión completa

Unión exterior izquierda

devuelve las filas coincidentes de ambas tablas, así como las filas no coincidentes de la tabla a la izquierda de la cláusula de combinación.

LEFT OUTER JOIN devolvería todos los registros de la tabla de la izquierda y solo los registros de la tabla de la derecha que se cruzan con la tabla de la derecha

Este es el ejemplo de la unión externa izquierda de Oracle

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

sintaxis de unión de Oracle (+) :En la base de datos de Oracle, también podemos usar la sintaxis del signo más para la combinación externa izquierda. En este caso, la combinación más está en el lado derecho de la ecuación.

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

 

Unión exterior derecha

devuelve las filas coincidentes de ambas tablas, así como las filas no coincidentes de la tabla a la derecha de la cláusula de unión.

Este es el ejemplo de unión externa derecha de Oracle

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

sintaxis de unión de Oracle (+) :En la base de datos de Oracle, también podemos usar la sintaxis del signo más para RIGHT OUTER JOIN. En este caso, la combinación derecha se indica cuando el signo más está a la izquierda de la ecuación.

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

Unión exterior completa

Este tipo de combinación devuelve todas las filas de la tabla de la IZQUIERDA y la tabla de la DERECHA con valores nulos donde no se cumple la condición de combinación

Este es el ejemplo de Oracle Full Outer Join

select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;

Esta consulta devolverá todas las filas de ambas tablas. Usar la sintaxis de Oracle usando E.DEPT_ID (+) =D.DEPT_ID (+) es imposible porque el signo (+) puede hacer referencia solo a una tabla. Tenemos que usar Union para lograr lo mismo usando el signo +

select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+)
union
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno;

Algunos RDBMS no admiten la cláusula de unión externa completa, entonces podemos usar a continuación para cubrir eso

select empno,ename,dept.deptno,dname
from emp
left OUTER JOIN dept
on emp.deptno=dept.deptno
union
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;


UNIÓN NATURAL

La combinación natural especifica que la combinación relaciona todas las columnas con los mismos nombres en las dos tablas.

Básicamente compara las columnas comunes de ambas tablas entre sí. Se debe comprobar si existen columnas comunes en ambas tablas antes de realizar una unión natural.

Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME  FROM EMP  NATURAL JOIN DEPT;

Aquí dept_id es la misma columna entre las tablas emp y dept

La unión natural puede unir más de dos tablas

Espero que les guste esta publicación sobre uniones de Oracle con ejemplos.

Artículos relacionados
Tutorial de SQL de Oracle

Subconsultas Oracle Sql

Operadores de conjuntos de Oracle

Vista de oráculo

cómo escribir consultas sql

Columna de incremento automático:secuencia

Unión cruzada en Oracle

unirse a Oracle con ejemplos

Ejemplos de sintaxis de unión de Oracle

Unión hash en Oracle