Saltar la navegación

3.1.- Inserción de registros.

La sentencia INSERT permite la inserción de nuevas filas o registros en un tabla existente.

El formato más sencillo de utilización de la sentencia INSERT tiene la siguiente sintaxis:

INSERT INTO nombre_tabla (lista_campos) VALUES (lista_valores);

Donde nombre_tabla será el nombre de la tabla en la que quieras añadir nuevos registros. En lista_campos se indicarán los campos de dicha tabla en los que se desea escribir los nuevos valores indicados en lista_valores. Es posible omitir la lista de campos (lista_campos), si se indican todos los valores de cada campo y en el orden en el que se encuentran en la tabla.

Tanto la lista de campos lista_campos como la de valores lista_valores, tendrán separados por comas cada uno de sus elementos. Hay que tener en cuenta también que cada campo de lista_campos debe tener un valor válido en la posición correspondiente de la lista_valores (Si no recuerdas los valores válidos para cada campo puedes utilizar la sentencia DESCRIBE seguida del nombre de la tabla que deseas consultar).

Para poder probar los ejemplos debes tener creadas y cargadas las tablas de JuegosOnline en el usuario c##juegos o similar. Si no lo has hecho en la unidad anterior, descárgate el script de este enlace, conecta con sys as sysdba y a continuación ejecútalo. Recuerda que si lo haces desde sqlplus solo tienes que escribir la ruta y el nombre del script precedido del símbolo @ o bien de la palabra start.  

Antes de ejecutar el siguiente ejemplo que inserta un nuevo registro en la tabla USUARIOS en el que se tienen todos los datos disponibles debes ejecutar la sentencia

 ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY';

para que tome la fecha en ese formato en el que le estamos dando el dato fecha.

INSERT INTO USUARIOS (Login, Password, Nombre, Apellidos, Direccion, CP, Localidad, Provincia, Pais, F_Nac,
F_Ing, Correo, Credito, Sexo) VALUES ('migrod86', '6PX5=V', 'MIGUEL ANGEL', 'RODRIGUEZ RODRIGUEZ', 'ARCO DEL LADRILLO,PASEO', 
'47001', 'VALLADOLID', 'VALLADOLID', 'ESPAÑA', '27/04/1977', '10/01/2008', 'migrod86@gmail.com', 200, 'H');

En este otro ejemplo, se inserta un registro de igual manera, pero sin disponer de todos los datos:

INSERT INTO USUARIOS (Login, Password, Nombre, Apellidos, direccion,cp,localidad,provincia,pais,Correo) VALUES ('natsan63', 
'VBROMI', 'NATALIA', 'SANCHEZ GARCIA','C/Blanca','28003','Madrid','Madrid','Spain', 'natsan63@hotmail.com');

Al hacer un INSERT en el que no se especifiquen los valores de todos los campos, se obtendrá el valor NULL en aquellos campos que no se han indicado.

Si la lista de campos indicados no se corresponde con la lista de valores, o si no se proporcionan valores para campos que no admiten el valor NULL, se obtendrá un error en la ejecución. Por ejemplo, si no se indica el campo Apellidos pero sí se especifica un valor para dicho campo:

INSERT INTO USUARIOS (Login, Password, Nombre, Correo) VALUES ('caysan56', 'W4IN5U', 'CAYETANO', 'SANCHEZ CIRIZA', 'caysan56@gmail.com');

Se obtiene el siguiente error:

ORA-00913: demasiados valores

Autoevaluación

Pregunta

¿Cuál de las siguientes sentencias INSERT es correcta?

Respuestas

INSERT INTO PRODUCTOS (Codigo, Nombre, Existencias) VALUES (3, Leche, 100);

INSERT INTO PRODUCTOS (3, 'Leche', 100);

INSERT INTO PRODUCTOS (Codigo, Nombre, Existencias) VALUES (3, 'Leche', 100);

INSERT INTO PRODUCTOS (Codigo, Nombre, Existencias) VALUES ('Leche', 3, 100);

Retroalimentación