Añadir un nuevo registro

Valoración del artículo:
Sintaxis y ejemplos para introducir registros en una tabla
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Los registros pueden ser introducidos a partir de sentencias que emplean la instrucción Insert.

La sintaxis utilizada es la siguiente:

Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...) Values (valor_campo1, valor_campo2...)

Un ejemplo sencillo a partir de nuestra tabla modelo es la introducción de un nuevo cliente lo cual se haría con una instrucción de este tipo:

Insert Into clientes (nombre, apellidos, direccion, poblacion, codigopostal, email, pedidos) Values ('Perico', 'Palotes', 'Percebe n°13', 'Lepe', '123456', 'perico@desarrolloweb.com', 33)

Como puede verse, los campos no numéricos o booleanos van delimitados por apostrofes: '. También resulta interesante ver que el código postal lo hemos guardado como un campo no numérico. Esto es debido a que en determinados paises (Inglaterra,como no) los codigos postales contienen también letras.

Nota: Si deseamos practicar con una base de datos que está vacía primero debemos crear las tablas que vamos a llenar. Las tablas también se crean con sentencias SQL y aprendemos a hacerlo en el último capítulo.

Aunque, de todos modos, puede que sea más cómodo utilizar un programa con interfaz gráfica, como Access, que nos puede servir para crear las tablas en bases de datos del propio Access o por ODBC a otras bases de datos como SQL Server o MySQL, por poner dos ejemplos.

Otra posibilidad en una base de datos como MySQL, sería crear las tablas utilizando un software como PhpMyAdmin.


Por supuesto, no es imprescindible rellenar todos los campos del registro. Eso sí, puede ser que determinados campos sean necesarios. Estos campos necesarios pueden ser definidos cuando construimos nuestra tabla mediante la base de datos.

Nota: Si no insertamos uno de los campos en la base de datos se inicializará con el valor por defecto que hayamos definido a la hora de crear la tabla. Si no hay valor por defecto, probablemente se inicialice como NULL (vacío), en caso de que este campo permita valores nulos. Si ese campo no permite valores nulos (eso se define también al crear la tabla) lo más seguro es que la ejecución de la sentenca SQL nos de un error.

Resulta muy interesante, ya veremos más adelante el por qué, el introducir durante la creación de nuestra tabla un campo autoincrementable que nos permita asignar un único número a cada uno de los registros. De este modo, nuestra tabla clientes presentaría para cada registro un número exclusivo del cliente el cual nos será muy util cuando consultemos varias tablas simultáneamente.

Comentarios
Fueron enviados 27 comentarios al artículo
10 comentarios no revisados
17 comentarios revisados:
Por: pedro almaguer
23/5/02
Mi necesidad es saber como puedo insertar a una tabla 20 datos como este ejemplo

INSERT INTO TPAIS (ID,PAIS) VALUES (1,'Mexico');
INSERT INTO TPAIS (ID,PAIS) VALUES (2,'China');
INSERT INTO TPAIS (ID,PAIS) VALUES (3,'EUA');
INSERT INTO TPAIS (ID,PAIS) VALUES (4,'Espania');
INSERT INTO TPAIS (ID,PAIS) VALUES (5,'Estonia');

pero metiéndolos de un jalon, osea no tenerlo que meter uno por uno

Respuesta:

Yo creo que no puedes hacer eso en una sola sentencia, por lo menos que yo recuerde. De todos modos, ejecutar tantos insert no ocupará mucho tiempo de procesamiento y las páginas deberían funcionar rápida y correctamente.

Por: Pablo Manuel
19/6/02
por que no lo haces con un FOR, si te das cuenta todas las lineas son iguales menos el id y el pais. Por lo menos si tuvieses la información que pretendes insertar en una estructura de datos sería una opción válida.
Por: chiko
18/11/02
Creo ke la unica forma de hacerlo es creando un fichero .sql en el bloc de notas, y en el ke (copiando y pegando) pongas todo eso.Despues le dices al SQL*PLUS ke t abra ese fichero y ya esta.
Por: Juan
12/6/03
podes hacer un FOR como dice el amigo de esta manera en ASP:

<%
dim pais(3) 'este es un arreglo con 4 lugares
dim id(3)
pais(0)="Argentina"
pais(1)="Peru"
pais(2)="Uruguay"
pais(3)="Bolivia"
id(0)=1
id(1)=2
id(2)=48
id(3)=5
for i=0 to i=3
INSERT INTO TPAIS (ID,PAIS) VALUES (id(i),pais(i))
next
%>

espero que sirva
Por: -
22/10/03
Pero, si declaraste el id como autonuméricó, sólo tienes que hace un for con los países e ir insertándolos uno detrás de otro.
Por: Javier
23/11/03
MMh tengo un pequeño pero molesto problema. Las consultas rutinarias, como escribir los registros me van bien, pero tengo problemas cuando quiero crear/borrar registros.

Todo esta bien, lo he comprobado cien veces, pero por mas que lo intento, me devuelve un error de

"la operacion debe realizar una consulta actualizable".

Que puedo hacer?por favor ayuda, muy bueno el manual, de verdad, en solo un mes he aprendido javascript, vbscript, y ahora estoy empezando en asp y sql
Por: Javier
28/11/03
ya solucione el problema, el caso es que en el IIS del xp, hay un error frecuente, para corregirlo, todo lo que hay que hacer es: escribir en buscar "internet information server", un vez abierto, abrir las propiedades de la carpeta web, y en un apartado de seguridad o algo asi, vas a cambiar, y desactivas lo "anonimo", despues de eso todo usuario con iis y xp no tendra problemas;) venga un saludo a todos
Por: Antonio
24/3/04
Alguien puede decirme por favor como insertar una imagen o un archivo de imagen en un campo de mi tabla sql, mi tabla de inventarios debe contener la foto de mis productos para despues visualizarla.

Por su ayuda, muchas gracias.
Por: Carlos Marcelo Aguilar
20/11/04
Me parece que un SELECT(TABLA.CAMPO.*) FROM tabla ORDER BY campo ASC INTO CURSOR XXX WHERE..., esto es mejor que un LOCATE FOR, osea mejor que usat un índice.
Por: luis
22/10/05
<?
for($i;$i<20;$i++){
INSERT INTO TPAIS (ID,PAIS) VALUES ($i,'Mexico');
}
?>
Por: Deavid
30/10/05
Meter esto de una tacada:

INSERT INTO TPAIS (ID,PAIS) VALUES (1,'Mexico');
INSERT INTO TPAIS (ID,PAIS) VALUES (2,'China');
INSERT INTO TPAIS (ID,PAIS) VALUES (3,'EUA');
INSERT INTO TPAIS (ID,PAIS) VALUES (4,'Espania');
INSERT INTO TPAIS (ID,PAIS) VALUES (5,'Estonia');

Se puede. De hecho el phpmyadmin lo hace al exportar si lo configuras.

INSERT INTO TPAIS (ID,PAIS) VALUES (1,'Mexico'), (2,'China'), (3,'EUA'), (4,'Espania'), (5,'Estonia');

No se recomienda insertar más de 20 de golpe por la perdida de rendimiento.
Si se van a efectuar muchas inserciones (inserción masiva) en mysql, se deben enviar tacadas de unas 20 consultas que inserten 20 registros cada una.
Entre tacada y tacada hay que bloquear y desbloquear las tablas.

LOCK TABLES;

Si se siguen las indicaciones, se gana una aceleración de mysql en la transacción de unas 2-3 veces sobre la forma convencional para inserciones de ma&#347; de 10000 registros.

Para más información, revisad el apartado del manual online de MySQl, los apartados de INSERT INTO y lOCK TABLES.
Por: iceclocker
15/6/06
Puedes automatizar esa entrada empleando Power Builder, relacionas estre programa con la BBDD e importas a una tabla temporal con un campo unico desde el origen de los datos, y el progrma automaticamente convierte las linesas de texto en inserts de SQl, incluso te genera una tabla temporal de un campo unico donde inserta todo.

Luego defines un insert en el que cortas la informacion en diferentes cadenas para almacenarla en los campos correspondientes, y lo ejecutas, con eso ya tienes creados todos tus registros en la tabla que querias, te lo digo por que 20 ergistros no procupan mucho, pero en el caso de grandes volumenes, cientos o miles....

A mi me va muy bien asi
Por: JORGE LUIS
02/1/07
yo creo que un ciclo For es lo mas adecuado por que de esa manera puedes insertar los registros nesesarioas y si no sirve lo intento de otra forma y se los paso pero si nesesita un programa para aserlo
Por: FIZCO
10/5/07
SI POSEES OTRA TABLA CON LOS DATOS, PUEDES INSERTARLO MEDIANTE UN

INSERT INTO nombre_tabla
(subconsulta);

chulino
ingresar varios datos a una tabla con un solo insert
18/4/09
si la tabla ala que vas a ingresar los datos esta vacia podrias acer esto:

use Empresa;

insert ignore into Departamento values
('10','Cuentas','New York'),
('20','Investigacion','Dallas'),
('30','Ventas','Chicago'),
('40','Operaciones','Boston');

#donde la tabla Departamento tiene solo 3 parametros y tienes que ingresar exactamente de tres parametros en tres parametros, esto esta en un bloc de notas y se manda llamar
NO LOGRO AGRAGAR EL REGISTRO
16/10/09
HICE MI PAGINA DE REGISRO DE USURIO
<td>Insertar un registro
<br>
<FORM METHOD="POST" ACTION="insertar.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Apellido<br>
<INPUT TYPE="TEXT" NAME="apellido"><br>
Fecha de Nacimiento<br>
<INPUT TYPE="text" NAME="nacimiento"><br>
Teléfono<br>
<INPUT TYPE="TEXT" NAME="telefono"><br>
Correo Electronico<br>
<INPUT TYPE="TEXT" NAME="email"><br>
Pais<br>
<INPUT TYPE="TEXT" NAME="pais"><br>
Ciudad<br>
<INPUT TYPE="TEXT" NAME="ciudad"><br>
codigo postal<br>
<INPUT TYPE="TEXT" NAME="cp"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</td>
</tr>
LUEGO LA DE INSERT.PHP
<?php
//Conexion con la base
mysql_connect("localhost","edgaralzolay","11226283");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("usuarios");
//Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...) Values (valor_campo1, valor_campo2...)
//Ejecucion de la sentencia SQL
Insert Into registro (nombre, apellidos, nacimiento, telefono, email, pais, ciudad, cp) values ('$nombre','$apellidos','$nacimiento','$telefono','$emal','$pais','$ciudad','$cp');
?>
Y NO LOGRO QUE ME AGREGUE EL REGISTRO DE UN USURIOS, SERA QUE EL ENLA CON LA BASE DE DATO ESTA MALO, LA TENGO GRABADO EN UN SITIO QUE NO ES , QUE HE HECHO MAL, ALGUIEN QUE ME PUEDA AYUDAR
para carla
10/11/09
en la base de dato al id, tienes que ponerle AUTO_INCREMENT

Manuales relacionados
Categorias relacionadas
El autor
Rubén Alvarez
Redactor de DesarrolloWeb.com
http://www.desarrolloweb.com
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo