web stats

Insert A Partir De Un Select Oracle


Insert A Partir De Un Select Oracle

INSERT A PARTIR DE UN SELECT en Oracle es una forma rápida de copiar datos de una tabla a otra. En lugar de insertar registros individualmente, tomas un conjunto de datos (obtenido con una consulta SELECT) e insertas todos esos resultados directamente en otra tabla.

¿Cómo funciona?

La sintaxis básica es la siguiente:

INSERT INTO tabla_destino (columna1, columna2, ...) SELECT columna_a, columna_b, ... FROM tabla_origen WHERE condición;

Desglosemos cada parte:

  • INSERT INTO tabla_destino (columna1, columna2, ...): Especifica la tabla en la que vas a insertar los datos. tabla_destino es el nombre de la tabla. Entre paréntesis, indicas las columnas de la tabla destino a las que se insertarán los datos. El orden es importante.
  • SELECT columna_a, columna_b, ... FROM tabla_origen: Esta es la consulta que selecciona los datos. tabla_origen es la tabla de donde provienen los datos. columna_a, columna_b, etc., son las columnas de la tabla origen que quieres insertar.
  • WHERE condición: (Opcional) Filtra los datos que se insertarán. Solo se insertarán las filas que cumplan la condición.

Ejemplo sencillo

Imagina que tienes dos tablas: empleados_temp y empleados_permanentes. Quieres mover todos los empleados temporales que llevan más de un año en la empresa a la tabla de empleados permanentes.

Análisis y Programación: Procedimientos almacenados, INSERT SELECT
Análisis y Programación: Procedimientos almacenados, INSERT SELECT

La tabla empleados_temp tiene las columnas: id_empleado, nombre, fecha_contratacion.

La tabla empleados_permanentes tiene las columnas: id_empleado, nombre, fecha_contratacion.

SQL CONVERT: Función - Sqlserverdb
SQL CONVERT: Función - Sqlserverdb

La consulta sería algo así:

INSERT INTO empleados_permanentes (id_empleado, nombre, fecha_contratacion) SELECT id_empleado, nombre, fecha_contratacion FROM empleados_temp WHERE fecha_contratacion < ADD_MONTHS(SYSDATE, -12);

INSERT in Oracle | Examples to Implement INSERT Statement in Oracle
INSERT in Oracle | Examples to Implement INSERT Statement in Oracle

Esta consulta insertará en empleados_permanentes el id_empleado, el nombre y la fecha_contratacion de todos los empleados de la tabla empleados_temp cuya fecha_contratacion sea anterior a hace 12 meses.

Consideraciones importantes

  • Tipos de datos: Las columnas correspondientes en la tabla origen y la tabla destino deben tener tipos de datos compatibles. Si no lo son, Oracle intentará hacer una conversión implícita, pero es mejor asegurarse de que sean compatibles explícitamente.
  • Número de columnas: El número de columnas especificadas en la parte INSERT INTO debe coincidir con el número de columnas seleccionadas en la parte SELECT.
  • Restricciones: Las restricciones de la tabla destino (como claves primarias, claves foráneas o NOT NULL) deben cumplirse. Si intentas insertar datos que violen estas restricciones, la inserción fallará.
  • Rendimiento: INSERT A PARTIR DE UN SELECT es generalmente más eficiente que insertar registros individualmente, especialmente para grandes volúmenes de datos.

En resumen, INSERT A PARTIR DE UN SELECT es una herramienta poderosa para copiar datos entre tablas en Oracle, pero es crucial entender cómo funciona y tener en cuenta las consideraciones importantes para evitar errores y asegurar la integridad de los datos.

SQL INSERT INTO SELECT | Ejemplos de Insertar desde un SELECT SQL

You might also like →