INSERT

INSERT es una sentencia SQL que añade datos a una tabla.

La sentencia INSERT tiene el formato siguiente:
INSERT INTO nombtabla
VALUES (valor1, valor2, ...)
En esta sintaxis, nombtabla es el nombre de la tabla o vista en la que se desea insertar datos y valor1, valor2 (etc.), son los valores que va a insertar.

La lista de valores de datos después de VALUES debe corresponderse con la lista de columnas de la tabla en la que van a ser insertados. Debe haber el mismo número de valores que de columnas, y cada valor debe tener un tipo de datos que coincida con el de su columna. Como se indica en el ejemplo siguiente, los valores nulos se pueden insertar especificando NULL.

Esta sentencia:

INSERT INTO PERS
VALUES (400, 'GONZALEZ', 20, 'VENTA', NULL, 18000,66, 0)

Inserta esta línea en la tabla PERS:

   ID   NOMBRE     DTO    TAREA   AÑOS    SALARIO   COMISION
------ ---------  ------  -----  ------  ---------  ---------
  400 GONZALEZ       20  VENTA       -   18000,66       0,00
La tabla PERS es una copia de la tabla de ejemplo Q.PLANTILLA. Si no desea utilizar la sentencia CREATE TABLE, también puede crear PERS con estos dos mandatos:
VISUALIZAR Q.PLANTILLA
SALVAR DATOS COMO PERS

Insertar valores de columna en una fila

Si desea insertar una fila sin proporcionar valores para todas las columnas de una fila, puede utilizar una lista de columnas con la sentencia INSERT.

Especifique los valores que desea insertar en las columnas, como en el ejemplo siguiente:
INSERT INTO PERS (ID, NOMBRE, TAREA, SALARIO)
VALUES (510, 'RUBIO', 'OFIC', 11500,75)
Un modo fácil de crear una consulta INSERT es utilizando el mandato DESCRIBIR de QMF tal como se muestra a continuación:
DESCRIBIR nombretabla (TIPO=INSERT
Las columnas para las que no se especifican valores no reciben ningún valor (NULL). Si una columna se define como NOT NULL, debe especificar valores para ella.

Copia de filas de una tabla a otra

Se pueden insertar filas en una tabla copiando los datos de otra tabla y utilizando una subconsulta para identificar las columnas que deben insertarse en lugar de utilizar la cláusula VALUES con INSERT. La información recuperada por la subconsulta se coloca en la tabla como si se hubieran entrado varios mandatos INSERT.

La siguiente sentencia copia las columnas ID, NOMBRE, TAREA y AÑOS para los miembros del Departamento 38 de Q.PLANTILLA en PERS:
 INSERT INTO PERS (ID, NOMBRE, TAREA, AÑOS)
 SELECT ID, NOMBRE, TAREA, AÑOS
 FROM Q.PLANTILLA           
 WHERE DTO = 38
Deben especificarse valores para todas las columnas que se han definido como NOT NULL.

No es necesario que exista una correspondencia exacta entre las columnas seleccionadas y las columnas insertadas; sin embargo, no debe haber más columnas seleccionadas que columnas insertadas. Si el número de columnas seleccionadas es menor que el número de columnas insertadas, las columnas restantes se insertan con nulos. No pueden seleccionarse filas para la inserción en la misma tabla.