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