INSERT

La sentencia INSERT inserta una o más filas en una tabla utilizando los valores proporcionados.

Invocación

Esta sentencia puede utilizarse en un programa de aplicación utilizando las funciones de CLI de DB2 o emitirse a través del CLP.

Sintaxis

>>-INSERT INTO--nombre-tabla--+--------------------------+------>
                              |    .-,--------------.    |
                              |    V                |    |
                              '-(----nombre-columna-+--)-'
 
                .-,-------------.
                V               |
>--+-VALUES--(----| expresión |-+--)-+-------------------------><
   '-Sentencia SELECT----------------'
 
expresión:
 
   .-Operator---------------------.
   V                              |
|----+---+--+-literal-----------+-+-----------------------------|
     +-+-+  +-registro-especial-+
     '---'  +-función-----------+
            '-(expresión)-------'
 
operador:
 
|--+-/-+--------------------------------------------------------|
   +-*-+
   +-+-+
   '---'
 
 

Descripción

INTO nombre-tabla
Designa la tabla de la operación de inserción. El nombre debe especificar una tabla existente, pero no una tabla de catálogo.
(nombre-columna,...)
Especifica las columnas para las que se proporcionan valores de inserción. Cada nombre de columna debe ser un nombre no calificado que identifica una columna de la tabla. Una misma columna no puede estar especificada más de una vez.

La omisión de la lista de columnas equivale a una especificación implícita de una lista que designa, de izquierda a derecha, cada columna de la tabla.

VALUES
Presenta una fila de valores para insertar.

El número de valores para cada fila debe ser igual al número de nombres de la lista de columnas. El primer valor se inserta en la primera columna de la lista, el segundo valor en la segunda columna y así sucesivamente.

expresión
La expresión puede ser un literal, registro especial, función o expresión compleja.

No se da soporte a las operaciones aritméticas sobre los tipos de datos CHAR, VARCHAR, BLOB(n), DATE, TIME y TIMESTAMP.

literal
Un literal puede ser un valor de cualquier tipo de datos soportado como INTEGER, SMALLINT, DECIMAL, CHAR(n), VARCHAR(n), BLOB(n), DATE, TIME o TIMESTAMP.
registro-especial
Se pueden utilizar los registros especiales CURRENT DATE, CURRENT TIME y CURRENT TIMESTAMP para generar la fecha, la hora y la indicación de hora actuales.
Sentencia SELECT
Especifica un conjunto de columnas nuevas en el formato de la tabla resultante de una sentencia SELECT. Pueden haber una, más de una o ninguna. Si la tabla resultante está vacía, SQLCODE se establece en +100 y SQLSTATE se establece en '02000'. El objeto base de la sentencia SELECT no puede ser el objeto base de la sentencia INSERT.

Reglas

Valores por omisión
Se inserta un valor por omisión o nulo en las columnas que no aparecen en la lista de columnas. Las columnas que no aceptan valores por omisión o nulos se deben incluir en la lista de columnas.

Longitud
Si el valor para insertar en una columna es un número, la columna debe ser una columna numérica que pueda representar la parte entera del número. Si el valor para insertar en una columna es una cadena de caracteres, la columna debe ser una columna de tipo carácter cuya longitud sea como mínimo la longitud de la cadena.

Asignación
Los valores de inserción se asignan a las columnas de acuerdo con las reglas de asignación descritas en el manual DB2 Universal Database Consulta de SQL.

Ejemplos

Ejemplo 1: Inserción en la tabla EMPLOYEE de un empleado cuyas especificaciones son las siguientes:

INSERT INTO EMPLOYEE 
 VALUES ('002001', 'John', 'Harrison', '600', '4900', 50000, '01/12/1989')

Ejemplo 2: Inserción en la tabla EMPLOYEE de un nuevo empleado cuyas especificaciones son las siguientes:

     INSERT INTO EMPLOYEE (EMPNO, FIRSTNAME, LASTNAME)
       VALUES ('003002', 'Jim', 'Gray')

Ejemplo 3: Creación de una tabla EMP_ACT_COUNT. Cargar EMP_ACT_COUNT con las filas de la tabla EMP_ACT con número de empleado (EMPNO) y número de proyectos comprometidos.

CREATE TABLE EMP_ACT_COUNT
   ( EMPNO CHAR(6)  NOT NULL,
     COUNT          INTEGER)
 
INSERT INTO EMP_ACT_COUNT 
   SELECT EMPNO, COUNT(*)
   FROM EMP_ACT
   GROUP BY EMPNO  

Restricciones:

  1. Los tipos de datos de columna de la sentencia SELECT deben ser idénticos a las definiciones de columna de la tabla de destino (exceptuando la capacidad para contener nulos).
  2. No están permitidas las cláusulas ORDER BY y LIMIT.

Consulta relacionada