Secuencia INSERT
Utilice la secuencia INSERT
para crear registros en una tabla de base de datos. Puede especificar:
-
Una lista de valores para insertar como nuevo registro
-
Una secuencia
SELECT
que copia datos de otra tabla para insertarlos como conjunto de registros nuevos.
El formato de la secuencia INSERT
es:
INSERT INTO nombre_tabla [(nombre_columna, ...)] VALUES (expr, ...)
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
, las expresiones de valor (expr
) deben 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. nombre_columna
también puede especificar una repetición de campo, por ejemplo, lastDates[4]
.
expr
es la lista de expresiones que proporcionan los valores para las columnas del nuevo registro. Normalmente, las expresiones son valores constantes para las columnas (pero también pueden ser subconsultas). 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.
Inserte una lista de expresiones.
INSERT INTO emp (apellidos, nombre, id_emp, salario, fecha_contratación)
VALUES ('Smith', 'John', 'E22345', 27500, DATE '05/06/2028')
Cada secuencia INSERT
añade un registro a la tabla de la base de datos. En este caso, se ha añadido un registro a la tabla de 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.
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:
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.
A la hora de utilizar la función PutAs()
, especifique el tipo: PutAs(col, 'tipo')
, donde el valor tipo es un tipo de archivo admitido tal y como se describe en Recuperación del contenido de un campo contenedor: Función CAST() y función GetAs().
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
.
Realice la inserción mediante la secuencia SELECT
.
INSERT INTO emp1 (nombre, apellidos, id_emp, dept, salario)
SELECT nombre, apellidos, 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.