Inserción de filas utilizando la sentencia INSERT
Una forma de insertar datos en tablas es utilizar la sentencia SQL INSERT. Este método es útil para insertar pequeñas cantidades de datos o insertar datos de otra tabla o vista.
Procedimiento
Para añadir nuevas filas a una tabla o vista:
- Especifique los valores de columna para insertar una sola fila. Puede especificar constantes, variables de host, expresiones, DEFAULT o NULL utilizando la cláusula VALUES.
- En un programa de aplicación, especifique matrices de valores de columna para insertar varias filas en una tabla. Utilice matrices de variables de host en la cláusula VALUES de la instrucción INSERT FOR n ROWS para añadir varias filas de valores de columna a una tabla.
- Incluya una sentencia SELECT en la sentencia INSERT para indicar a Db2 que otra tabla o vista contiene los datos para la nueva fila o filas.
En cada caso, por cada fila que inserte, debe proporcionar un valor para cualquier columna que no tenga un valor predeterminado. Para una columna que cumpla una de las siguientes condiciones, especifique DEFAULT para indicar a Db2 que inserte el valor predeterminado para esa columna:
- La columna es anulable.
- La columna se define con un valor predeterminado.
- La columna tiene el tipo de datos ROWID. Las columnas ROWID siempre tienen valores predeterminados.
- La columna es una columna de identidad. Las columnas de identidad siempre tienen valores predeterminados.
- La columna es una columna de marca de tiempo de cambio de fila.
Los valores que puede insertar en una columna ROWID, una columna de identidad o una columna de cambio de marca de tiempo de fila dependen de si la columna está definida con GENERATED ALWAYS o GENERATED BY DEFAULT.
Puede utilizar la cláusula VALUES de la instrucción INSERT para insertar una sola fila de valores de columna en una tabla. Puede nombrar todas las columnas para las que está proporcionando valores u omitir la lista de nombres de columnas. Si omite la lista de nombres de columna, debe especificar valores para todas las columnas.
- Su declaración INSERT es independiente del formato de la tabla. (Por ejemplo, no es necesario cambiar el extracto cuando se añade una columna a la tabla)
- Puede verificar que está especificando los valores en orden.
- Sus declaraciones de origen son más autoexplicativas.
Si no nombra las columnas en una instrucción INSERT estática y se añade una columna a la tabla, puede producirse un error si se vuelve a ejecutar la instrucción INSERT. Se producirá un error después de cualquier reasignación de la instrucción INSERT a menos que cambie la instrucción INSERT para incluir un valor para la nueva columna. Esto es así incluso si la nueva columna tiene un valor predeterminado.
Cuando enumere los nombres de las columnas, debe especificar sus valores correspondientes en el mismo orden que en la lista de nombres de columnas.
Ejemplo INSERT statements
La siguiente sentencia inserta información sobre un nuevo departamento en la tabla YDEPT.
INSERT INTO YDEPT (DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION) VALUES ('E31', 'DOCUMENTATION', '000010', 'E01', ' ');Después de insertar una nueva fila de departamento en su tabla YDEPT, puede utilizar una instrucción SELECT para ver lo que ha cargado en la tabla. La siguiente instrucción SQL muestra todas las nuevas filas de departamento que ha insertado:
SELECT * FROM YDEPT WHERE DEPTNO LIKE 'E%' ORDER BY DEPTNO;La tabla de resultados tiene un aspecto similar al siguiente:
DEPTNO DEPTNAME MGRNO ADMRDEPT LOCATION ====== ==================================== ====== ======== =========== E01 SUPPORT SERVICES 000050 A00 ----------- E11 OPERATIONS 000090 E01 ----------- E21 SOFTWARE SUPPORT 000100 E01 ----------- E31 DOCUMENTATION 000010 E01 -----------La siguiente declaración inserta información sobre un nuevo empleado en la tabla YEMP. Debido a que la columna WORKDEPT es una clave externa, el valor que se inserta para esa columna ( E31 ) debe ser un valor en la columna de clave primaria, que es DEPTNO en la tabla YDEPT.
INSERT INTO YEMP VALUES ('000400', 'RUTHERFORD', 'B', 'HAYES', 'E31', '5678', '1998-01-01', 'MANAGER', 16, 'M', '1970-07-10', 24000, 500, 1900);La siguiente declaración también inserta una fila en la tabla YEMP. Debido a que las columnas no especificadas permiten valores nulos, Db2 inserta valores nulos en las columnas que no especifique.
INSERT INTO YEMP (EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, JOB) VALUES ('000410', 'MILLARD', 'K', 'FILLMORE', 'D11', '4888', 'MANAGER');