La
forma más simple de la sentencia INSERT inserta una fila en una
tabla, proyendo valores en una linea de comando. La sintaxis es como
sigue:
INSERT
INTO tabla [(column [,column...])] VALUES (value [,value]);
--
COMANDO 1
INSERT
INTO HR.REGIONS VALUES(5,'REGION 5');
--
COMANDO 2
INSERT
INTO HR.REGIONS(REGION_ID, REGION_NAME) VALUES(6,'REGION 6');
--
COMANDO 3
INSERT
INTO HR.REGIONS(REGION_NAME, REGION_ID) VALUES('REGION 8',8);
--
COMANDO 4
INSERT
INTO HR.REGIONS(REGION_ID) VALUES(7);
--
COMANDO 5
INSERT
INTO HR.REGIONS(REGION_ID, REGION_NAME) VALUES(9, NULL);
El
primer comando provee valores para ambas columnas de la tabla
REGIONS. Si la tabla tiene tres columnas, la sentencia fallaría
porque se basa en notación posicional. La sentencia no dice que
valores deberían ser insertados en que columnas. Depende de la
posición de los valores. Se basa en la posición de los valores, su
ordenación en el comando. Cuando la base de datos recibe una
sentencia utilizando notación posicional, el orden de los valores
debe coincidir con el orden de las columnas definidas en la tabla
destino. La sentencia debería falla si el orden de los valores es
erróneo. La base de datos fallaría porque los tipos de datos no
coinciden.
El
segundo y tercer comando define las columnas a ser pobladas y los
valores con las que van a ser pobladas, el orden es el mismo que la
definición de la tabla en el segundo comando y puede ser modificado
a como se desee como se ve en el tercer comando. El orden de las
columnas es irrelevante, los valores deben tener el mismo orden de
las columnas definidas en el comando y deben ser las misma cantidad
de valores que de columnas.
El
cuarto comando nomina solo una columna y por lo tanto un solo valor
todas las otras columnas serán nulas. Esta sentencia fallaría si
la columna REGION_NAME no fuera nullable, el quinto ejemplo produce
el mismo resultado, pero en este ejemplo si se nominan dos columnas y
se especifica solo un valor y los demás campos se pone con el valor
NULL.
Muy
a menudo, una sentencia INSERT incluye funciones de casting o otro
trabajo de edición.
INSERT
INTO EMPLOYEES2(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, EMAIL)
VALUES(1001,'SANTIAGO','DE
LA CRUZ DE LOS SANTOS','01-NOV-2013','EMAIL');
INSERT
INTO EMPLOYEES2(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, EMAIL)
VALUES(1002,UPPER('santiago'),UPPER('de
la cruz de los santos'),TO_DATE('01-10-2013','dd-mm-yy'),
UPPER('email'));
Las
filas insertadas con las dos sentencias anteriores son idénticas,
pero la primera provee todos los valores literales exactos, la
segunda realiza un trabajo de edición. Utilizar funciones para
preprocesar valores antes de ser insertados puede ser
particularmente importante cuando ejecuta script con sustitución de
variables o en aplicación de usuarios finales donde ocurren
variaciones al ingresar datos cuando los usuarios ingresan valores
interactiva mente. Para insertar muchas filas mediante el comando
INSERT, los valores de las filas deben ser generados mediante una
consulta. Su sintaxis es la siguiente:
INSERT
INTO tabla [ ( column [, column...] ) ] subquery;
Tenga
en cuenta que esta sintaxis no utiliza la palabra VALUES; si la lista
de columnas es omitida, entonces el subquery debe proveer valores
para cada una columna en la tabla Target.
Para
copiar cada fila de una tabla a otra, si la tabla tiene las mismas
columnas, un comando como el siguiente es el necesario:
INSERT
INTO REGIONS2
SELECT
* FROM REGIONS;
Este
comando inserta cada fila de tabla REGIONS en la tabla REGIONS2. No
hay ninguna restricción en el subquery. Cualquier consulta devuelve
un arreglo de dos dimensiones de filas, si la tabla Target tiene las
columnas para recibirlas, la inserción sera un éxito. Este paso de
información es necesario cuando tenermos que presentar a los
usuarios resúmenes de información con algún formato especial,
funciones de agregado, etc. o mejor conocido como desnormalización
para que los usuarios puedan comprender fácilmente.
Cualquier
sentencia SELECT, especificada como un subquery puede ser utilizado
como fuente de datos para un INSERT. Esto permite la inserción de
muchas filas. Alternativamente, utilizando la clausula VALUES podemos
insertar una fila, los valores pueden ser literales solicitados por
sustitución de variables.
Comentarios
Publicar un comentario