jueves, 17 de noviembre de 2016

INSERT ALL INCONDITIONAL

Visión General de Sentencias INSERT de Varias Tablas 

En una sentencia INSERT de varias tablas, se insertan filas calculadas derivadas de las filas devueltas de la evaluación de una subconsulta en una o más tablas. 

Las sentencias INSERT de varias tablas pueden desempeñar un papel muy útil en el supuesto de un almacén de datos. Debe cargar el almacén de datos con regularidad para que pueda cumplir su propósito de facilitar el análisis de negocio. Para ello, se deben extraer y copiar datos de uno o más sistemas operativos al almacén de datos. El proceso de extracción de datos del sistema de origen y su transferencia al almacén de datos se suele denominar ETL (siglas de extraction, transformation, and loading, o extracción, transformación y carga). 

Durante la extracción, se deben identificar y extraer los datos deseados de diferentes orígenes como, por ejemplo, aplicaciones y sistemas de bases de datos. Después de la extracción, los datos se deben transportar físicamente al sistema de destino o a un sistema intermedio para continuar su procesamiento. Dependiendo del medio de transporte seleccionado, algunas transformaciones se pueden realizar durante este proceso. Por ejemplo, una sentencia SQL que acceda directamente a un destino remoto a través de un gateway puede concatenar dos columnas como parte de la sentencia SELECT

Una vez cargados los datos en la base de datos Oracle, las transformaciones de datos se pueden ejecutar mediante operaciones SQL. Una sentencia INSERT de varias tablas es una de las técnicas para implementar transformaciones de datos SQL

Las sentencias INSERT de varias tablas ofrecen las ventajas de la sentencia INSERT ... SELECT cuando hay varias tablas implicadas como destinos. Con la funcionalidad anterior a la base de datos Oracle9i, era necesario tratar con n sentencias INSERT ... SELECT independientes, procesando los mismos datos de origen n veces y aumentando la carga de trabajo de transformación n veces. 
Como sucede con la sentencia INSERT ... SELECT existente, la nueva sentencia se puede paralelizar y utilizar con el mecanismo de carga directa para obtener un rendimiento más rápido. 
Cada registro de cualquier flujo de entrada como, por ejemplo, una tabla de base de datos no relacional, se puede convertir ahora en varios registros para un entorno de tabla de base de datos más relacional. Para implementar esta funcionalidad de forma alternativa, había que escribir varias sentencias INSERT
  • La sentencia INSERTSELECT se puede utilizar para insertar filas en varias tablas como parte de una única sentencia DML
  • Las sentencias INSERT de varias tablas se pueden utilizar en sistemas de almacenes de datos para transferir datos de uno o más orígenes operativos a un juego de tablas destino. 
  • Proporcionan una mejora significativa del rendimiento en: 
    • DML único frente a varias sentencias INSERTSELECT 
    • DML único frente a un procedimiento para realizar varias inserciones mediante la sintaxis IF...THEN 
INSERT ALL Incondicional 

El ejemplo de la diapositiva inserta filas en las tablas SAL_HISTORY y MGR_HISTORY. 
La sentencia SELECT recupera los detalles de identificador de empleado, fecha de contratación, salario e identificador de supervisor de los empleados cuyo identificador de empleado es mayor que 200 en la tabla EMPLOYEES. Los detalles de identificador de empleado, fecha de contratación y salario se insertan en la tabla SAL_HISTORY. Los detalles de identificador de empleado, identificador de supervisor y salario se insertan en la tabla MGR_HISTORY. 

La sentencia INSERT se conoce como INSERT incondicional, ya que no se aplican más restricciones a las filas que se recuperan mediante la sentencia SELECT. Todas las filas recuperadas mediante la sentencia SELECT se insertan en las dos tablas, SAL_HISTORY y MGR_HISTORY. La cláusula VALUES de las sentencias INSERT especifica las columnas de la sentencia SELECT que se deben insertar en cada una de las tablas. Cada fila devuelta mediante la sentencia SELECT da como resultado dos inserciones, una para la tabla SAL_HISTORY y una para la tabla MGR_HISTORY. 
Se puede interpretar que el feedback 8 rows created significa que se realizó un total de ocho inserciones en las tablas base, SAL_HISTORY y MGR_HISTORY. 


  • Seleccione los valores EMPLOYEE_ID, HIRE_DATE, SALARY y MANAGER_ID de la tabla EMPLOYEES de los empleados cuyo EMPLOYEE_ID sea mayor que 200. 
  • Inserte estos valores en las tablas SAL_HISTORY y MGR_HISTORY mediante una sentencia INSERT de varias tablas.
  • Seleccione los valores EMPLOYEE_ID, HIRE_DATE, SALARY y MANAGER_ID de la tabla EMPLOYEES de los empleados cuyo EMPLOYEE_ID sea mayor que 200. 
  • Si SALARY es mayor que 10.000 dólares, inserte estos valores en la tabla SAL_HISTORY mediante una sentencia INSERT condicional de varias tablas. 
  • Si MANAGER_ID es mayor que 200, inserte estos valores en la tabla MGR_HISTORY mediante una sentencia INSERT condicional de varias tablas. 
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?