Actualizar registros con UPDATE en PostgreSQL

En este artículo vamos aprender actualizar registros con UPDATE en PostgreSQL de una tabla. Usaremos la cláusula UPDATE para actualizarlos, que junto al where actualizaremos solo aquellos registros que cumplan la condición.

Sintaxis

Para actualizar registros en PostgreSQL utilizamos la siguiente sintaxis:

UPDATE nombreTabla
SET columna1 = valor1,
    columna2 = valor2,
     ...
WHERE condicion;

En la sintaxis anterior:

  • Primero le indicamos el nombre de la tabla que queremos actualizar después de escribir la palabra UPDATE.
  • En segundo lugar después de la palabra SET escribimos el nombre del campo que queremos actualizar seguido del valor. Si queremos actualizar más de un campo lo separamos con una coma.
  • En tercer lugar le indicamos después de la palabra WHERE cuando debe actualizar esos registros escribiendo una condición.

Ten en cuenta que la cláusula WHERE es opcional y si no lo especificas actualizara toda la tabla.

Al realizar una actualización nos devolverá un mensaje informando de cuántas filas se han actualizado al no ser que le especifiques lo contrario.

Si quieres que al actualizar registros en lugar de mostrarte el numero de registros que se han actualizado quieres que te muestre los datos, puedes utilizar la palabra RETURNING. Ten en cuenta que el uso de esta palabra solo te mostrará los registros que se han actualizado, no toda la tabla.

Ejemplos

Actualizar un campo de toda la tabla

Actualizar el campo id_departamento de todos los empleados utilizando un operador relacional:

update empleados
set id_departamento = 1;
Actualizar registros con UPDATE en PostgreSQL

Actualizar un campo que cumpla con la condición

Actualizar el campo id_departamento de todos los empleados utilizando un operador relacional, pero solo aquellos que cumplan la condición:

update empleados
set id_departamento = 2
where id_empleado > 1;

Actualizar un campo que cumpla con la condición y que al finalizar muestre los datos

En el siguiente ejemplo actualizamos los registros y le indicamos que nos los muestre al terminar. La cláusula RETURNING la puedes utilizar junto al asterisco para mostrar todos los campos o puedes especificar que campos quieres mostrar.

update empleados
set id_departamento = 2
where id_empleado > 1
RETURNING *;

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:

-- borramos la tabla si existe
drop table if exists empleados;
 
-- creamos la tabla
create table empleados (
  id_empleado numeric(2),
  id_departamento numeric(2),
  nombre varchar(50),
  puesto varchar(50),
  sueldo integer);

-- Insertamos registros:
insert into empleados (id_empleado, id_departamento, nombre, 
    puesto, sueldo) 
values (1,1,'Miguel', 'Analista',1000),
       (2,2,'Ismael','Responsable',4000),
       (3,1,'Pilar','Desarrollador',3000),
       (3,1,'Jose','Desarrollador',5000);

-- Consultamos los datos
select *
from empleados;

-- actualizamos todos los empleados al departamento 1
update empleados
set id_departamento = 1;

-- Actualizamos el departamento a todos los
-- empleados donde su id es mayor a 1
update empleados
set id_departamento = 2
where id_empleado > 1;

-- Actualizamos el departamento a todos los
-- empleados donde su id es mayor a 1 y
-- después que nos muestre los datos
update empleados
set id_departamento = 2
where id_empleado > 1
RETURNING *;

-- Actualizamos el sueldo a todos los empleados con 
-- el mismo sueldo que el de Pilar
UPDATE empleados
SET sueldo=subquery.sueldo
FROM (SELECT sueldo
            FROM empleados
	   WHERE nombre = 'Pilar') AS subquery;

-- Consultamos de nuevo los datos
select *
from empleados;

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.