Secuencia INSERT

Utilice la secuencia INSERT para crear registros en una tabla de base de datos. Puede especificar:

  • Una o más listas de valores que se insertarían como nuevos registros

  • Una secuencia SELECT que copia datos de otra tabla para insertarlos como conjunto de registros nuevos.

Los formatos de la secuencia INSERT son

Copiar
INSERT INTO nombre_tabla [(nombre_columna, ...)] VALUES [(expr, ...), ...]
INSERT INTO nombre_tabla [(nombre_columna, ...)] SELECT nombre_columna, ... FROM nombre_tabla [WHERE expr]

Con VALUES

nombre_columna es una lista opcional de nombres de columnas que proporciona el nombre y el orden de las columnas cuyos valores se han especificado en la cláusula VALUES. Si omite nombre_columna, la lista de expresiones (expr) debe proporcionar valores para todas las columnas definidas en la tabla y deben encontrarse en el mismo orden en que se definen las columnas para la tabla.

La lista de expresiones (expr) da los valores para las columnas de un nuevo registro. Para añadir varios registros, especifique una lista de expresiones entre paréntesis para cada registro, separadas por comas. Por lo general, una lista de expresiones consiste en un valor constante para cada columna (pero la lista también puede ser una subconsulta). Debe escribir los valores de las cadenas de caracteres entre comillas sencillas ('). Para incluir un signo de comillas sencillas en un valor de cadena de caracteres escrito entre comillas sencillas, utilice un signo de comillas dobles (por ejemplo,'O''Neal').

Las subconsultas deben escribirse entre paréntesis.

Ejemplo

Insertar dos listas de expresiones.

Copiar
INSERT INTO emp (apellido, nombre, ID_emp, salario, fecha_contratación)
   VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05'), 
   ('Marks', 'Alea', 'E24682', 28500, DATE '2029-09-30')

Esta secuencia INSERT añade un registro a la tabla de la base de datos para cada lista de valores especificados. En este caso, se han añadido dos registros a la tabla de la base de datos de empleados, emp. Se han especificado valores para cinco columnas. A las demás columnas de la tabla se les asigna un valor en blanco, que significa Nulo.

Con SELECT

La secuencia SELECT es una consulta que devuelve valores para cada valor de nombre_columna especificado en la lista de nombres de columnas. El uso de una secuencia SELECT en lugar de una lista de expresiones de valores le permite seleccionar un conjunto de filas de una tabla e insertarlo en otra tabla utilizando una única secuencia INSERT.

Ejemplo

Realice la inserción mediante la secuencia SELECT.

Copiar
INSERT INTO emp1 (nombre, apellido, ID_emp, dept, salario)
   SELECT nombre, apellido, ID_emp, dept, salario FROM emp
   WHERE dept = 'D050'

En este tipo de secuencia INSERT, el número de columnas para insertar debe coincidir con el número de columnas de la secuencia SELECT. La lista de columnas que se van a insertar debe corresponder con las columnas de la secuencia SELECT del mismo modo que lo haría con una lista de expresiones de valores en el otro tipo de secuencia INSERT. Por ejemplo, la primera columna insertada corresponde con la primera columna seleccionada; la segunda insertada con la segunda seleccionada, etc.

El tamaño y el tipo de datos de estas columnas correspondientes deben ser compatibles. Cada columna de la lista SELECT debe tener un tipo de datos que acepte el controlador de cliente ODBC o JDBC en una secuencia INSERT/UPDATE normal de la columna correspondiente de la lista INSERT. Si el tamaño del valor de la columna de lista SELECT es mayor que el de la columna de lista INSERT correspondiente, los valores se truncan.

La secuencia SELECT se evalúa antes de que se inserten los valores.

Notas 

  • En los campos contenedores, puede insertar solo texto (INSERT) a menos que cree una secuencia con parámetros y envíe los datos desde su aplicación. Para usar datos binarios, puede asignar simplemente el nombre de archivo escribiéndolo entre comillas simples o utilizar la función PutAs(). A la hora de especificar el nombre de archivo, el tipo de archivo se deduce de la extensión del mismo:

    Copiar
    INSERT INTO nombre_tabla (nombre_contenedor) VALUES (? AS 'nombrearchivo.extensión archivo')

    Los tipos de archivo que no se admitan se insertarán como FILE.

    Al usar la función PutAs(), especifique el tipo: PutAs(col, 'type'), donde el valor del tipo es un tipo de archivo compatible como se describe en Recuperación del contenido de un campo contenedor: Función CAST() y función GetAs().

  • nombre_columna también puede especificar una repetición de campo, por ejemplo, lastDates[4].