Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Twitter Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Facebook Pulse para guardar enlace y compartir esta web. Búscanos en Google+ Pulse para guardar enlace y compartir esta web Pulse para generar codigo QR del enlace y compartir esta web

Sentencia INSERT

Añade filas a una tabla.

Para guardar los datos insertados hay que ejecutar COMMIT;

Para cancelar la insercción podemos hacer ROLLBACK;

Un formato posible es:

INSERT INTO nombre-tabla 
VALUES (serie de valores)

El orden en el que se asignen los valores en la cláusula VALUES tiene que coincidir con el orden en que se definieron las columnas en la creación del objeto tabla, dado que los valores se asignan por posicionamiento relativo.

Por ejemplo:

INSERT INTO T_PEDIDOS
VALUES (125,2,'PEPE');
Otra forma de usar la sentecia INSERT es:

INSERT INTO nombre-tabla (columna1, columna2.....) 
VALUES (valor1, valor2....)

En este caso los valores se asignarán a cada una de las columnas mencionadas por posicionamiento relativo.

Es necesario que por lo menos se asignen valores a todas aquellas columnas que no admiten valores nulos en la tabla (NOT NULL).

Por ejemplo:

INSERT INTO T_PEDIDOS (CODPEDIDO,ESTADO)
VALUES (125,2);

Sentencia INSERT de múltiples filas

Para insertar un subconjunto de filas de una tabla en otra se escribe una sentencia INSERT con una SUBSELECT interna. Los formatos posibles son:


INSERT INTO nombre-tabla (columna1, columna2.....) 
SELECT ([sentencia Select])

Asigna a las columnas los valores recuperados en la sentencia Select. Inserta en la tabla todas las filas que se recuperen en la Select.

Por ejemplo:

INSERT INTO T_PEDIDOS (CODPEDIDO,ESTADO,NOMBRE)
SELECT CODPEDIDO+100,ESTADO,NOMBRE FROM T_PEDIDOS WHERE CODPEDIDO IN (1,2,3);

Otra forma es:


INSERT INTO nombre-tabla SELECT * FROM nombre-tabla-fuente

En este caso las estructuras de las tablas tienen que ser iguales.

Este ejemplo copia hasta el pedido 100 en otra tabla:

INSERT INTO T_PEDIDOS_BAK 
SELECT * FROM T_PEDIDOS WHERE CODPEDIDO<100;

Ambas tablas son iguales.