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áusulaSET
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 sentenciaUPDATE
.