Saltar a contenido

La sentencia UPDATE de PostgreSQL permite actualizar datos en una o más columnas de una o más filas de una tabla.

Esta es la sintaxis básica de la sentencia UPDATE:

UPDATE table_name
SET column1 = value1,
    column2 = value2,
    ...
WHERE condition;

En esta sintaxis:

  • En primer lugar, especifique el nombre de la tabla cuyos datos desea actualizar después de la palabra clave UPDATE.
  • En segundo lugar, especifique las columnas y sus nuevos valores después de la palabra clave SET. Las columnas que no aparecen en la cláusula SET conservan sus valores originales.
  • En tercer lugar, determine las filas que desea actualizar en la condición de la cláusula WHERE.

La cláusula WHERE es opcional. Si omite la cláusula WHERE, la sentencia UPDATE actualizará todas las filas de la tabla.

Cuando la sentencia UPDATE se ejecuta correctamente, devuelve la siguiente etiqueta de comando:

UPDATE count

El count es el número de filas actualizadas, incluidas las filas cuyos valores no cambiaron.

Devolución de filas actualizadas

La sentencia UPDATE tiene una cláusula RETURNING opcional que devuelve las filas actualizadas:

UPDATE table_name
SET column1 = value1,
    column2 = value2,
    ...
WHERE condition
RETURNING * | output_expression AS output_name;

Ejemplos de UPDATE

Veamos algunos ejemplos de uso de la sentencia UPDATE de PostgreSQL.

Creación de una tabla de ejemplo

Las siguientes sentencias crean una tabla llamada cursos e insertan datos en ella:

CREATE TABLE courses(
  course_id serial PRIMARY KEY, 
  course_name VARCHAR(255) NOT NULL, 
  price DECIMAL(10,2) NOT NULL,
  description VARCHAR(500), 
  published_date date
);


INSERT INTO courses( course_name, price, description, published_date) 
VALUES 
('PostgreSQL for Developers', 299.99, 'A complete PostgreSQL for Developers', '2020-07-13'), 
('PostgreSQL Admininstration', 349.99, 'A PostgreSQL Guide for DBA', NULL), 
('PostgreSQL High Performance', 549.99, NULL, NULL), 
('PostgreSQL Bootcamp', 777.99, 'Learn PostgreSQL via Bootcamp', '2013-07-11'), 
('Mastering PostgreSQL', 999.98, 'Mastering PostgreSQL in 21 Days', '2012-06-30');

SELECT * FROM courses;

Salida:

 course_id |         course_name         | price  |             description              | published_date
-----------+-----------------------------+--------+--------------------------------------+----------------
         1 | PostgreSQL for Developers   | 299.99 | A complete PostgreSQL for Developers | 2020-07-13
         2 | PostgreSQL Admininstration  | 349.99 | A PostgreSQL Guide for DBA           | null
         3 | PostgreSQL High Performance | 549.99 | null                                 | null
         4 | PostgreSQL Bootcamp         | 777.99 | Learn PostgreSQL via Bootcamp        | 2013-07-11
         5 | Mastering PostgreSQL        | 999.98 | Mastering PostgreSQL in 21 Days      | 2012-06-30
(5 rows)Code language: JavaScript (javascript)

Ejemplo básico de UPDATE

La siguiente sentencia utiliza la sentencia UPDATE para actualizar el curso con id 3 cambiando la fecha_publicada a '2020-08-01'.

UPDATE courses
SET published_date = '2020-08-01' 
WHERE course_id = 3;

La sentencia devuelve el siguiente mensaje indicando que se ha actualizado una fila:

UPDATE 1Code language: Shell Session (shell)

La siguiente sentencia recupera el curso con id 3 para verificar la actualización:

SELECT course_id, course_name, published_date
FROM courses
WHERE course_id = 3;

Salida:

 course_id |         course_name         | published_date
-----------+-----------------------------+----------------
         3 | PostgreSQL High Performance | 2020-08-01
(1 row)

Actualizar una fila y devolver la fila actualizada

La siguiente sentencia utiliza la sentencia UPDATE update published_date del id de curso 2 a 2020-07-01 y devuelve el curso actualizado.

UPDATE courses
SET published_date = '2020-07-01'
WHERE course_id = 2
RETURNING *;

Salida:

 course_id |        course_name         | price  |        description         | published_date
-----------+----------------------------+--------+----------------------------+----------------
         2 | PostgreSQL Admininstration | 349.99 | A PostgreSQL Guide for DBA | 2020-07-01
(1 row)

Actualizar una columna con una expresión

La siguiente sentencia utiliza una expresión UPDATE para aumentar el precio de todos los cursos un 5%:

UPDATE courses
SET price = price * 1.05;

Como no utilizamos una cláusula WHERE, la sentencia UPDATE actualiza todas las filas de la tabla courses.

Salida:

UPDATE 5

La siguiente sentencia recupera datos de la tabla de cursos para verificar la actualización:

SELECT * FROM courses;

Salida:

SELECT 
  course_name, 
  price 
FROM 
  courses;

Salida:

         course_name         |  price
-----------------------------+---------
 PostgreSQL for Developers   |  314.99
 PostgreSQL Bootcamp         |  816.89
 Mastering PostgreSQL        | 1049.98
 PostgreSQL High Performance |  577.49
 PostgreSQL Admininstration  |  367.49
(5 rows)

Resumen

  • Utilice la sentencia UPDATE para actualizar los datos de una o varias columnas de una tabla.
  • Especifique una condición en una cláusula WHERE para determinar qué filas deben actualizar los datos.
  • Utilice la cláusula RETURNING para devolver las filas actualizadas de la sentencia UPDATE.