Actualizar un registro: UPDATE

Sintaxis se la sentencia UPDATE del lenguaje SQL y ejemplos para editar registros en una tabla.
Update es la instrucción del lenguaje SQL que nos sirve para modificar los registros de una tabla. Como para el caso de Delete, necesitamos especificar por medio de Where cuáles son los registros en los que queremos hacer efectivas nuestras modificaciones. Además, obviamente, tendremos que especificar cuáles son los nuevos valores de los campos que deseamos actualizar.

La sintaxis es de este tipo:

Update nombre_tabla Set nombre_campo1 = valor_campo1, nombre_campo2 = valor_campo2,... Where condiciones_de_selección

Un ejemplo aplicado:

Update clientes Set nombre='José' Where nombre='Pepe'

Mediante esta sentencia cambiamos el nombre Pepe por el de José en todos los registros cuyo nombre sea Pepe.

Aquí también hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaríamos todos los registros de nuestra tabla.

Update producto Set precio=990, descuento=25

Esa sentencia modificaría el campo precio y el campo descuento en todos los productos de la tabla producto. Si tenemos una tabla con miles de productos con esa sentencia se actualizarían todos, de modo que la totalidad de los registros tendrían el mismo precio y el mismo descuento. Os aseguro que este problema de olvidarse el where no es algo extraño que ocurra, incluso para programadores experimentados y puede acarrear problemas serios.

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Compartir

Comentarios

Cesar

17/6/2003
Que pasa si tengo una tabla con tres campos y solo quiero modificar de un registro, dos campos, mis campos son. clave, nombre, pass.

El registro es:

clave= ce01
nombre= cesar
pass= 0215

Y el cambio que deseo hacer es

clave= ce01
nombre Cesar
pass= 215

RESPUESTA

Pues utiliza la sentencia update con una sintaxis así (supongo que tu tabla se llama usuario y quieres modificar los campos nombre y pass, los dos de tipo texto. También entiendo que la clave es de tipo texto y es única para cada usuario):

update usuario set nombre="Cesar", pass="215" where clave="ce01"

roberto

20/8/2003
es posible que, usando la sentencia update pueda modificar dos campos iguales al mismo tiempo, por ejemplo se necesita cambiar la comision a Juan: 5% y a ana 6%, por juan:8% y ana 10%

RESPUESTA

No, tendrías que utilizar dos sentencias SQL distintas. Algo como:

update user set portentaje=8 where nombre="juan"
update user set portentaje=10 where nombre="ana"

Marcelo Montecinos

31/1/2004
Sorry pero no faltaria el comando mysql_query(); ???

german

12/9/2004
je, kon respekto al ke eskribio si no faltaba la funcion mysql_query, supongo que es porque este es un manual de SQL, y que el mysql_query es propio de PHP para realizar la consulta solamente.

jose

04/11/2008
yo tengo este problema
create table Medicos(Clave_Med int primary key, Nombre varchar(30), Especialidad varchar(20), Telefono varchar(14) , Sueldo int);
select * from Medicos;
insert Medicos values (654321, 'Mauricio Rene Gozalez Lara','Neurologo','12-34-56-87',35421);
insert Medicos values (654322, 'Carlos Baeza Herrera','Cirugano Pediatra','12-34-56-88',45421);
insert Medicos values (654323, 'Marugenia Sandoval Sanchez','ginecologa','12-34-56-89',25421);
insert Medicos values (654324, 'Samantha Roman Carrillo','Medico General','12-34-56-92',7421);
insert Medicos values (654325, 'Julio Enrique Cruz Pastrana','Uriologo','12-34-56-87',55421);

y le quiero cambiar el sueldo a los doctores pero un 10 porciento mas como lo podriacer

teko

04/6/2009
Pregunta
por ejemplo si tengo estos datos

cod_factura=CO
(llave primaria) no_factura=102

y qiero actualizar a:

cod_factura=CO
(llave primaria) no_factura=103

mi codigo tendria q ir asi:

Update facturas set no_factura=103 where cod_factura='CO' and no_factura='102'

eso me da error cmo podria funcionar?

Yo

16/6/2009
Respuesta
Update facturas set no_factura='103' where no_factura='102'

O sin comillas simples, depende.

juan carlos

27/8/2009
sellecionar tablas
deseo seleccionar varias tablas a la vez y que se desplieguen inclkuyendo todos los datos y el url

Nancy

18/2/2010
agregar un numero consecutivo a una tabla
como agrego inf solo a una columna para que sea un numero consecutivo del 1 al que termine tengo aprox 550 registros

XQENK

13/3/2010
Ayuda
Pero si son varios campos y los datos son variables??
$sql = "UPDATE perfiles
SET Nombres='$nombresf', Apellido_p='$apellido_pf', Edad='$edadf', Edo_civil='$edo_civilf', WHERE Id_postulante='idf'";

Yo lo tengo asi pero me actualiza todos los registros :S

jeancarlos baldera capuñay

03/12/2010
consulta
como actualizaria si mi tabla alumno tiene 5 campos y quiero modificar solo los dato de nombre y telefono del alumno

Fernando

11/1/2011
Modificar todos los precios de una tabla de productos
Hola quisiera saber como actualizar los precios de una tabla productos de manera automatica, por ejemplo que pueda incrementar un 5 o 10 % a todo los articulos, o mejor aún incrementar el porcentaje que desee según el rubro. Gracias

Axel

31/3/2011
sql
hola a todos tengo una serie de dudas pero la mas resaltante es la que les planteare aqui.
Bueno yo he desarrollado un programa en un copilador c# este trata de una empresa de transporte al cual se le aplico una base de datos el programa funciona con procedimientos almacenados ya hechos en sql ahora para culminarlo necesito crear una gran serie d eprocedimientos de modificacion de datos, es decir usando UPDATE.
la sintaxis que usaria en una de la sventanas seria esta "update Ruta set Origen="Origen", Destino="DEstino" where clave=" "

pero yo quiero saber como seria la corecta si al insertar desde la interfase el qery me lea lo que estoy insertando desde la intrfase de c# ejemplo saben que para insertar usando INSERT INTO solo en VALUES pongo un @ antes cada campo a sr afectado ejemplo;


[InsertarServicios]
@Nombre varchar(50),
@Asientos smallint
AS
BEGIN
INSERT INTO
Servicios(Nombre,Asientos)

VALUES
(@Nombre,@Asientos)


END

pero en esta sintaxis
"update Ruta set Origen="Origen", Destino="DEstino" where clave=" " .... funcionara igual?
1- quiero que modifique de 2 a 5 campos a la vez.
2- que solo lea lo que estoy insertando desde la interfase del programa hecho en c#. sinseramente no tengo una idea clara de como hacerlo porlomenos con el este caso de UPDATE. gracias

joemith

03/6/2011
pregunta
como hago para editar registros de una base de datos en sql
por ejemplo nesecito que juan ya no sea juan si no pedro pero necesito hacerlo desde .net conectandome con la base de datos de oracle, pero funciona igual con comandos sql

Lucrecia

26/9/2011
Error en update
Necesito actualizar un campo de una tabla, pero la misma la relaciono de la siguiente manera:

UPDATE S_ACT_EMP, S_EVT_ACT
SET ACT_EVT_STAT_CD = 'Finalizado'
where COMMENTS_LONG = 'RESULTADO SATISFACTORIO' and EVT_STAT_CD = 'Finalizado' and
NAME = 'CAMBIO DE PAQUETE POR MIGRACIÓ' and ACT_EVT_STAT_CD = 'Incluido' and ROW_ID = ACTIVITY_ID

Si consulto los datos utilizando ese JOIN no tengo problemas, pero el update muestra el siguiente mensaje:

The following error has occurred:

ORA-00971: missing SET keyword

roberto

11/10/2011
.- Necesito transferir de sucursal a todos aquellos empleados que trabajan en la sucursal 4 a la sucursal 5
como le puedo hacer alguien me puede ayudar por favor

fernando

23/11/2011
actualizar registros
Buen dia, amigos
Deseo saber, como puede modificar parte de unos registros en una tabla
Ejemplo:
tengo un campo, DOCUMENTO, donde esta 'FV00678', deseo modificarlo por 'CT00678'

Gracias de antemano

FAYDELSYSTEM

24/11/2011
RESPUESTA A SU DUDA DE JOSE
con esta consulta puedes sumarle el 10% mas de sueldo a todos los medicos en general.

update Medicos set sueldo=(Sueldo*1.1)

si deseas asignar el sueldo para cada medico utilizas el where con el nombre de cada medico.



===============================================

create table Medicos
(
Clave_Med int primary key,
Nombre varchar(30),
Especialidad varchar(20),
Telefono varchar(14) ,
Sueldo int);
--mostrar tablas
select * from Medicos;

-- insertar los datos

insert into Medicos (Clave_Med, Nombre, Especialidad,Telefono, Sueldo)
values (654321, 'Mauricio Rene Gozalez Lara','Neurologo','12-34-56-87',35421);
insert into Medicos (Clave_Med, Nombre, Especialidad,Telefono, Sueldo)
values (654322, 'Carlos Baeza Herrera','Cirugano Pediatra','12-34-56-88',45421);
insert into Medicos (Clave_Med, Nombre, Especialidad,Telefono, Sueldo)
values (654323, 'Marugenia Sandoval Sanchez','ginecologa','12-34-56-89',25421);
insert into Medicos (Clave_Med, Nombre, Especialidad,Telefono, Sueldo)
values (654324, 'Samantha Roman Carrillo','Medico General','12-34-56-92',7421);
insert into Medicos (Clave_Med, Nombre, Especialidad,Telefono, Sueldo)
values (654325, 'Julio Enrique Cruz Pastrana','Uriologo','12-34-56-87',55421);


Pregunta
cambiar el sueldo a los doctores pero un 10 porciento mas como lo podriacer

aurOo27

02/4/2012
como actualizar un registro
ola ...i como hago para actualizar un registro con 2 campos como clave primaria..mi codigo es
$folio=$_POST['folio'];
$registro=$_POST['registro'];
$nombre=$_POST['nombre'];
$apellido=$_POST['apellido'];
$direccion=$_POST['direccion'];
$cantidad=$_POST['cantidad'];
$concepto=$_POST['concepto'];
$fec_pago=$_POST['fec_pago'];


$q="update recibo set nombre='$nombre',apellido='$apellido',direccion='$direccion',cantidad='$cantidad',concepto='$concepto' ,fec_pago='$fec_pago' where folio=$folio || regisro=$registro";
mysql_query($q,$conn);

y mi clave primaria es folio y registro

JOPSE

23/4/2012
falso
no se podeis hace reso estais mal

arianna

06/6/2012
modificar un canto con lo registro de otra tabla
hola buenas tardes, tengo una duda soy algo nueva con php y mysql tengo que modificar un campo que tiene cierto datos y lo quieren que se traiga la dirección de otra tabla y actualiza.

ricardo

25/1/2013
como puedo actualizar datos como en una factura
como se puede actualizar unos datos en una factura si que realizo una venta y me vaya restando en stock inicial automaticamente

SQL

27/4/2013
Duda UPDATE
No consigo actualizar los registros de una base de datos. El código que tengo es;

Public Shared Function modPersona(ByRef dni As String, ByRef nombre As String) As Integer
Dim lin As Integer = 0
If nombre Is Nothing Then
lin = AgenteBD.getInstancia().create _
("UPDATE Personas SET Nombre = null WHERE DNI = '" + dni + "'")
Else
lin = AgenteBD.getInstancia().create _
("UPDATE Personas SET Nombre = '" + nombre + "' WHERE DNI = '" + dni + "'")
End If
Return lin
End Function

carlos

06/6/2013
tengo este asunto por resolver
he realizado este select al precio minimo
select idProducto, nombre, precio from Producto
where precio = (select min(precio) from producto);

pero kiero k el precio minimo aumente en un 30% peor con un update .. es para ahora tengo practica calificada

Alejandro

04/12/2013
Necesito trabajar con sql
Tengo el sistema Saint Administrativo y necesito trabajar con sus tablas a traves de SQL pero no se como accesar dichas tablas con un manejador de bases de datos compatible con estes sistema de Saint. Por favor si alguien puede ayudarme al respecto... Gracias

18022014

18/2/2014
Duda
Quiero Actualizar una columna en donde la celda se llame Cruce de Anden, tengo el SQL de esta forma pero arroja error, me pueden asesorar.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & (ThisWorkbook.Path) & "00_CM001_DBsDBs_CM_Indicadores.mdb"
sql = "UPDATE 00_Vtas_Dias INNER JOIN z_Tmp_VtasCA ON ([00_Vtas_Dias].Id_Cte = z_Tmp_VtasCA.Id_Cte) AND ([00_Vtas_Dias].Dia = z_Tmp_VtasCA.dia) AND ([00_Vtas_Dias].Sem = z_Tmp_VtasCA.Sem) SET [00_Vtas_Dias].VtaB_CA = z_Tmp_VtasCA.VtaB_CA, [00_Vtas_Dias].VtaN_CA = [z_Tmp_VtasCA].[VtaN_CA];" & vbCrLf
sql= sql & "Where [[00_Vtas_Dias].SubCanal = " Cruce de Anden "];" & vbCrLf
rec.Open sql, conn
conn.Close

esteban

05/5/2014
Actualizar un campo pasado 3 dias
Hola buen dia, quisiera saber como puedo actualizar un campo (estado= Temporal) a (estado= finalizado) al paso de 3 dias automaticamente, agradeceria cualquier comentario, gracias

Mariana

12/6/2014
actualuizacion de campo
hola, buenos días necesito una ayuda me piden actualizar el campo Dias-Pagados de una tabla utilizando una resta de campo es decir, realizar algo así... Dias Pagados=(DiasMes - Diasdescontados), pero cada campo pertenece a una tabla distinta como podría hacer? e intentado algunas cosas pero no me salen. GRACIAS de ante mano !!