Añadir un nuevo registro

01 de enero de 2001
Valoración del artículo:
Sintaxis y ejemplos para introducir registros en una tabla
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.

Compartir en redes sociales

Comentarios
Fueron enviados 49 comentarios al artículo
27 comentarios no revisados
22 comentarios revisados:
Por: pedro almaguer
23/5/2002
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/2002
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/2002
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/2003
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/2003
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/2003
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/2003
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/2004
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/2004
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/2005
<?
for($i;$i<20;$i++){
INSERT INTO TPAIS (ID,PAIS) VALUES ($i,'Mexico');
}
?>
Por: Deavid
30/10/2005
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/2006
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/2007
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/2007
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/2009
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/2009
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/2009
en la base de dato al id, tienes que ponerle AUTO_INCREMENT

humusje...
Más de 2 registros a un solo campo
22/1/2010
Muy buen tutorial, felicidades.

Tengo una duda.
Cómo puedo agregar varios registros a un solo campo?

tabla user

id
name
user
pass


tabla admin

id
name
user
pass
add


Quiero agregar varios registros (ids de usuarios) al campo "add" de manera que dentro del campo add pueda quedar 1, 2, 3, 4, 5 y al momento de hacer el query me haga saber que el usuario Juan (por poner un ejemplo) tiene a 5 usuarios bajo su mando.

Ojala me haya explicado.
Saludos.

torro
para GUAYO
08/1/2011
tienes dos errores ala vista.
1°:- tu ACTION en el FORM no hace referencia a tu programa que hace conexion a tu BD osea tu programa es INSERT.php y tu ACTION="insertar".
2°:-Las Variables no pueden ser pasadas del FORM al programa .PHP si primero no son recividas osea esto en el .php

$nombre=$_POST("nombre");
Insert en Access
29/9/2011
Colegas, estoy haciendo un INSERT en una base de datos Access, sin embargo la excepción me dice que hay un error de sintaxis.

Este es el código


string agregar = "INSERT INTO Users (Login,Password,IsActive,UserTypeId,LastAccess,CreatedDate,UdateDate,Version) Values(@Login,@Password,@UserTypeId,@LastAccess,@CreatedDate,@UdateDate,@Version)";
OleDbCommand comando = new OleDbCommand(agregar,cone);

comando.Parameters.Add(new OleDbParameter("@Login", OleDbType.VarChar, 10));
comando.Parameters["@Login"].Value = login;

comando.Parameters.Add(new OleDbParameter("@Password", OleDbType.VarChar, 10));
comando.Parameters["@Password"].Value = passw;

comando.Parameters.Add(new OleDbParameter("@IsActive", OleDbType.Numeric, 1));
comando.Parameters["@IsActive"].Value = activo;

comando.Parameters.Add(new OleDbParameter("@UserTypeId", OleDbType.VarChar,10));
comando.Parameters["@UserTypeId"].Value = tipousuario;

comando.Parameters.Add(new OleDbParameter("@LastAccess", OleDbType.VarChar,10 ));
comando.Parameters["@LastAccess"].Value = ultimoacceso;

comando.Parameters.Add(new OleDbParameter("@CreatedDate", OleDbType.VarChar, 10));
comando.Parameters["@CreatedDate"].Value = fechacreacion;

comando.Parameters.Add(new OleDbParameter("@UdateDate", OleDbType.VarChar, 10));
comando.Parameters["@UdateDate"].Value = actualizado;

comando.Parameters.Add(new OleDbParameter("@Version", OleDbType.VarChar,10));
comando.Parameters["@Version"].Value = version;

comando.Connection.Open();
comando.ExecuteNonQuery();
comando.Connection.Close();
Excel
09/5/2012
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

Sabes, existe una forma: si tienes esa información en un Excel (si no la tienes puedes crear un archivo excel con la información) puedes importarla a tu BD el procedimiento es simple y te ahorra el trabajo de hacer todo un Query Insert por Insert. Saludos.
De la misma forma
09/5/2012
HO0LAA..YA SE COMO INGRESAR LOS OTROS REGISTROS...PERO CUANDO LLEGUE A ESTO ME ENREDE..

create table escribe
(
codigoautor varchar(15) not null foreign key references autor(codigoautor),
codigolibro varchar(10) not null foreign key references libro(codigolibro)

como ingreso registros en este campo..

grax..por adelantadoo..=)

Si lo que quieres es rellenar esos campos es muy simple, es de la misma manera que todos los demas solo hay una diferencia, que ese dato tiene que existir en la tabla que hace referencia, por ejemplo si en la tabla Autor hay un codigoautor = 'A01' entonces cuando ingreses los datos de la tabla escribe el codigo de autor debe ser igual a este codigoautor que se hace referencia, en todo caso quedaria asi:
insert into escribe (codigoautor,codigolibro) values ('A01','L01')

Y por su puesto recordarte que estos codigos deben existir en la tabla de origen osea en Autor y en Libro, nada mas Saludos.

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
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...