Las tablas vinculadas en una base de datos grande se vinculan mediante claves externas y primarias, o lo que a menudo se conoce como columnas compartidas. La capacidad de combinar tablas le permitirá agregar más significado a la tabla de resultados resultante. Se requieren condiciones de combinación mÃnimas (n-1) para unir n tablas numéricas en una consulta. Según las condiciones de combinación, Oracle concatena el par de filas coincidentes y muestra la que cumple la condición de combinación.
Las conexiones se clasifican de la siguiente manera
Unión natural (también conocida como combinación igual o combinación simple): crea una combinación utilizando una columna especÃfica y con nombre común.
Sin combinación de igualdad: une tablas cuando las tablas que se van a unir no tienen filas equivalentes, por ejemplo, para asignar valores en una columna de una tabla a un rango de valores en otra tabla.
Autounión – Únase a la mesa consigo misma.
Unión externa: incluye registros de tabla en la salida si no hay un registro correspondiente en la otra tabla.
Unión cartesiana (también conocida como producto cartesiano o combinación cruzada): replica cada fila de la primera tabla con cada fila de la segunda tabla. Crea una unión entre tablas, mostrando todas las posibles combinaciones de registros.
La palabra clave NATURAL puede simplificar la sintaxis de Equijoin. Una UNIÓN NATURAL es posible cuando dos (o más) tablas tienen columnas con el mismo nombre y las columnas son compatibles con las combinaciones, es decir, las columnas comparten un dominio de valor común. la operación concatena filas de tablas que tienen los mismos valores de columna para columnas con el mismo nombre.
Considere una relación de uno a varios entre las tablas DEPARTMENTS y ​​EMPLOYEES. Cada tabla tiene una columna denominada DEPARTMENT_ID. Esta columna es la clave principal de la tabla DEPARTMENTS y ​​la clave externa de la tabla EMPLOYEES.
SELECT E.first_name NAME,D.department_name DNAME FROM employees E NATURAL JOIN departments D; FIRST_NAME DNAME ---------- ------ MILLER DEPT 1 JOHN DEPT 1 MARTIN DEPT 2 EDWIN DEPT 2
La siguiente consulta SELECT une dos tablas especificando explÃcitamente la condición de unión con la palabra clave ON.
SELECT E.first_name NAME,D.department_name DNAME FROM employees E JOIN departments D ON (E.department_id = D.department_id);
Existen algunas restricciones con respecto a NATURAL JOIN. No puede especificar una columna LOB con NATURAL JOIN. Además, las columnas involucradas en la combinación no pueden ser calificadas por el nombre o alias de la tabla.
Al utilizar combinaciones naturales, Oracle identifica implÃcitamente columnas para formar la base de la combinación. En muchas situaciones, se requiere una declaración explÃcita de las condiciones de combinación. En tales casos, usamos la cláusula USING para indicar los criterios para unirse. Debido a que la cláusula USING une tablas en función de la igualdad de columnas, también se conoce como Equijoin. También se conocen como conexiones internas o conexiones simples.
SELECT <column list> FROM TABLE1 JOIN TABLE2 USING (column name)
Considere la consulta SELECT a continuación, la tabla EMPLOYEES y la tabla DEPARTMENTS se unen mediante una columna DEPARTMENT_ID común.
SELECT E.first_name NAME,D.department_name DNAME FROM employees E JOIN departments D USING (department_id);
SELF-JOIN crea una tabla de resultados cuando existe una relación de interés entre filas que están almacenadas en la misma tabla. En otras palabras, cuando una tabla se une a sà misma, esa combinación se denomina autocombinación.
Considere la tabla EMPLEADOS, que contiene empleados y sus gerentes de informes. Encontrar el nombre del administrador de un empleado requiere una combinación en la propia tabla EMP. Este es un candidato tÃpico para unirse a sà mismo.
SELECT e1.FirstName Manager,e2.FirstName Employee FROM employees e1 JOIN employees e2 ON (e1.employee_id = e2.manager_id) ORDER BY e2.manager_id DESC;
Se utiliza una combinación no igual cuando las columnas relacionadas no se pueden unir con un signo igual, lo que significa que no hay filas equivalentes en las tablas para unir. Una combinación de desigualdad mantiene el valor mÃnimo de un rango en una columna del registro y el valor máximo en otra columna. Por lo tanto, en lugar de buscar una coincidencia de columna a columna, puede usar una combinación de desigualdad para determinar si el elemento que se envÃa se encuentra entre los rangos mÃnimo y máximo en las columnas. Si el sindicato encuentra un rango coincidente para el artÃculo, la tarifa de envÃo correspondiente puede devolverse en los resultados. Al igual que con el método tradicional de combinación de igualdad, se puede realizar una combinación de no igualdad en una cláusula WHERE. Además, la palabra clave JOIN se puede usar con la cláusula ON para especificar las columnas apropiadas para unirse.
SELECT E.first_name, J.job_hisal, J.job_losal, E.salary FROM employees E JOIN job_sal J ON (E.salary BETWEEN J.job_losal AND J.job_losal);
Podemos usar todas las opciones de comparación discutidas anteriormente, como los operadores de igualdad y desigualdad, BETWEEN, IS NULL, IS NOT NULL y RELATIONAL.
La combinación externa se utiliza para identificar situaciones en las que las filas de una tabla no coinciden con las filas de una segunda tabla, incluso si las dos tablas están relacionadas.
Hay tres tipos de combinaciones externas: LEFT, RIGHT y FULL OUTER JOIN. Todos comienzan con una JUNTA INTERNA y luego vuelven a agregar algunas lÃneas que se eliminaron. LEFT OUTER JOIN vuelve a agregar todas las filas que se eliminaron de la primera tabla (izquierda) en la condición de combinación, y las columnas de salida de la segunda tabla (derecha) se establecen en NULL. RIGHT OUTER JOIN vuelve a agregar las filas que se eliminaron de la segunda tabla (derecha) en la condición de combinación, y las columnas de salida de la primera tabla (izquierda) se establecen en NULL. FULL OUTER JOIN vuelve a agregar todas las filas eliminadas de ambas tablas.
RIGHT OUTER JOIN vuelve a agregar las filas que se eliminaron de la segunda tabla (derecha) en la condición de combinación, y las columnas de salida de la primera tabla (izquierda) se establecen en NULL. Tenga en cuenta que la consulta a continuación enumera los empleados y sus respectivos departamentos. Además, no se asigna ningún empleado al departamento 30.
SELECT E.first_name, E.salary, D.department_id FROM employees E, departments D WHERE E.DEPARTMENT_ID (+) = D.DEPARTMENT_ID; FIRST_NAME SALARY DEPARTMENT_ID ---------- ---------- ---------- JOHN 6000 10 EDWIN 2000 20 MILLER 2500 10 MARTIN 4000 20 30
LEFT OUTER JOIN vuelve a agregar todas las filas que se eliminaron de la primera tabla (izquierda) en la condición de combinación, y las columnas de salida de la segunda tabla (derecha) se establecen en NULL. La consulta anterior se puede utilizar para demostrar una combinación externa izquierda intercambiando el signo (+).
SELECT E.first_name, E.salary, D.department_id FROM employees E, departments D WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID (+); FIRST_NAME SALARY DEPARTMENT_ID ---------- ---------- ---------- JOHN 6000 10 EDWIN 2000 20 MILLER 2500 10 MARTIN 4000 20 30
FULL OUTER JOIN vuelve a agregar todas las filas eliminadas de ambas tablas. Debajo de la solicitud se muestran las listas de empleados y sus departamentos. Tenga en cuenta que todavÃa no se ha asignado ningún departamento al empleado «MAN» (es NULL), y el departamento 30 no se ha asignado a ningún empleado.
SELECT nvl (e.first_name,'-') first_name, nvl (to_char (d.department_id),'-') department_id FROM employee e FULL OUTER JOIN department d ON e. depARTMENT_ID = d. depARTMENT_ID; FIRST_NAME DEPARTMENT_ID ---------- -------------------- MAN - JOHN 10 EDWIN 20 MILLER 10 MARTIN 20 - 30 6 rows selected.
Para dos entidades A y BA * B se denomina producto cartesiano. El producto cartesiano consta de todas las combinaciones posibles de filas de cada tabla. Por lo tanto, cuando una tabla con 10 filas se une a una tabla con 20 filas, el producto cartesiano es 200 filas (10 * 20 = 200). Por ejemplo, la concatenación de una tabla de empleados con ocho filas y una tabla de departamentos con tres filas producirá una tabla de productos cartesianos de 24 filas (8 * 3 = 24).
La unión cruzada se refiere al producto cartesiano de dos tablas. Produce un producto cruzado de dos tablas. La consulta anterior se puede escribir utilizando la cláusula CROSS JOIN.
La tabla de productos cartesianos no suele ser muy útil. De hecho, tal tabla de resultados puede ser engañosa. Si ejecuta la consulta a continuación en las tablas EMPLEADOS y DEPARTAMENTOS, la tabla de resultados asume que cada empleado tiene una relación con cada departamento, ¡y sabemos que este no es el caso!
SELECT E.first_name, D.DNAME FROM employees E,departments D;
La conexión cruzada se puede escribir como,
SELECT E.first_name, D.DNAME FROM employees E CROSS JOIN departments D;
🚫