Updating Data#

Use the UPDATE command.

mydb=> UPDATE farm_products SET price = price * 1.16;  -- add 16% VAT perhaps
UPDATE 7
mydb=> SELECT * FROM farm_products LIMIT 3;
  name   | price | units_in_stock 
---------+-------+----------------
 Carrots |  1.74 |             64
 Garlic  |  2.32 |             40
 unnamed |       |              0
(3 rows)

You can add a WHERE clause to specify a condition that row(s) must meet in order to be updated:

mydb=> UPDATE farm_products SET name = 'unknown' WHERE name = 'unnamed';
UPDATE 2
mydb=> SELECT * FROM farm_products;
   name   | price | units_in_stock 
----------+-------+----------------
 Carrots  |  1.74 |             64
 Garlic   |  2.32 |             40
 Apples   | 29.00 |            100
 Bananas  | 11.60 |             32
 Cherries |  3.48 |             74
 unknown  |       |              0
 unknown  |       |               
(7 rows)

You can update more than one column by listing more than one assignment in the SET clause:

mydb=> UPDATE farm_products SET price = 0, units_in_stock=0 WHERE name =
 'unknown';
UPDATE 2
mydb=> SELECT * FROM farm_products;
   name   | price | units_in_stock 
----------+-------+----------------
 Carrots  |  1.74 |             64
 Garlic   |  2.32 |             40
 Apples   | 29.00 |            100
 Bananas  | 11.60 |             32
 Cherries |  3.48 |             74
 unknown  |  0.00 |              0
 unknown  |  0.00 |              0
(7 rows)