Oracle Insert … Select en la misma sentencia SQL

La sentencia que vamos a usar está ejecutada en la versión de Oracle 11g, pero debería de funcionar también en otras versiones de Oracle.

Con la instrucción INSERT … SELECT, se puede insertar de forma rápida muchas filas en una tabla a partir del resultado de la sentencia SELECT.

La estructura sería así:
INSER INTO tabla (columna1, columna2, columna...)
SELECT t1.columna1, t1.columna2, t1.columna...  
FROM tabla t1

Ahora voy a poner un ejemplo para que se entienda mejor, lo que vamos es hacer una copia todas las filas de la tabla registro_alumnos a la tabla clase_a.

INSER INTO clase_a (nombre, edad)
SELECT R_ALUM.nombre, R_ALUM.edad 
FROM registro_alumnos R_ALUM

Si ahora queremos copiar solo a los alumnos que tengan 14 años, sería lo mismo pero añadiendo a la SELECT una condición en la WHERE.

INSER INTO clase_a (nombre, edad)
SELECT R_ALUM.nombre, R_ALUM.edad 
FROM registro_alumnos R_ALUM 
WHERE R_ALUM.edad = 14

Por último, vamos a añadirle a una columna de la SELECT un valor de forma externa, ya que algunas veces no nos interesa copiar el valor de la columna almacenada en la base de datos.

Vamos a copiar las filas de los años alumnos con la edad de 15 años de la tabla clase_b a una tabla llamada registro_alumnos_especial, y a parte de eso le añadimos de forma predeterminada a la columna tipo_clase el valor «especial»

INSER INTO clase_b (tipo_clase, nombre, edad)
SELECT 'especial', clase_aux.nombre, clase_aux.edad 
FROM registro_alumnos_especial clase_aux 
WHERE clase_aux.edad = 15

Iván Martínez

Ingeniero Informático apasionado por el mundo del desarrollo WEB. Me gusta caminar por este mundo lleno de tecnologías y día a día aprender cosas nuevas como el doctor Frankenstein ¡dadme cosas para experimentar!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.