sqlite.h


INSERT

Sintaxis INSERT
INSERT

La sentencia INSERT tiene tres formatos básicos:

  • El primer formato (con la palabra clave "VALUES") crea una nueva fila sencilla en una tabla existente. Si no se especifica una 'lista de columnas', entonces el número de valores debe ser el mismo que el número de columnas de la tabla. En ese caso el resultado de la evaluación de la expresión más a la izquierda de la lista en VALUES se inserta en la columna más a la izquierda de la nueva fila, y sucesivamente. Si se especifica una 'lista de columnas', entonces el número de valores debe coincidir con el número de columnas especificado. Cada una de las columnas nombradas de la nueva fila se rellena con el resultado de la evaluación de la expresión de VALUES correspondiente. Las columnas de la tabla que no aparecen en la lista de columnas se rellenan con el valor por defecto para la columna (especificado como parte de la sentencia CREATE TABLE), or NULL si no se ha especificado un valor por defecto.
  • El segundo formato de la sentencia INSERT contiene una sentencia SELECT en lugar de una cláusula VALUES. Se insertará en la tabla una nueva entrada para cada fila de datos retornada por la ejecución de la sentencia SELECT. Si se especifica una 'lista de columnas', el número de columnas en el resultado del SELECT debe ser el mismo que el número de ítems en la 'lista de columnas'. En caso contrario, si no se especifica una 'lista de columnas', el número de columnas en el resultado del SELECT debe ser el mismo que el número de columnas de la tabla. Cualquier sentencia SELECT, incluyendo selecciones compuestas y sentencias SELECT con cláusulas ORDER BY y/o LIMIT, puede ser usada en una sentencia INSERT con este formato.
  • La tercera forma de una sentencia INSERT es con DEFAULT VALUES. La sentencia The INSERT ... DEFAULT VALUES inserta una fila en la tabla indicada. Cada columna de la nueva fila se rellena con el valor por defecto, o con NULL si no se espefificó un valor por defecto como parte de la definición de columna en la sentencia CREATE TABLE.

La cláusula opcional de conficto permite especificar un algoritmo de resolución de conflictos alternativa que se usará durante esta sentecia INSERT. Ver la sección ON CONFLICT para información adicional. Por compatibilidad con MySQL, el analizador permite usar la palabla clave REPLACE como un alias para INSERT OR REPLACE.

El prefijo opcional "nombre-base-datos" en el 'nombre-tabla' sólo está soportado para sentencias INSERT de alto nivel. El nombre de la tabla debe estar sin añadidos para sentencias INSERT que aparezcan dentro de sentencias CREATE TRIGGER. De forma similar, la forma "DEFAULT VALUES" de la sentencia INSERT sólo está soportada en sentencias INSERT de alto nivel, y no para sentencias INSERT en el interior de triggers.