Removes rows from a table.


DELETE FROM [ ONLY ] table [ WHERE condition ]



The name of the table from which you are deleting rows.


The condition that identifies rows to be deleted. This is just like the WHERE clause of a SELECT query; refer to the reference entry titled “SELECT” for more information on constructing conditions. Note that not providing a WHERE condition will cause all rows to be deleted from a table.


DELETE count

The message returned when the command is executed. The count is the number of rows that were removed. If that number is 0, then either no rows met the specified condition, or there were no rows in the table to be removed.


Use DELETE to remove rows from a table. Only rows that match a condition you specify will be deleted. To delete all rows from a table, do not specify a condition. Issuing a DELETE with no condition results in all rows being deleted from the target table. You will then be left with an empty table.



Use TRUNCATE to empty a table more efficiently (and explicitly) than with an unconditional DELETE statement.

Use the ONLY clause to prevent the deletion of rows from tables that inherit from the target table. ONLY restricts the delete operation to only the target table. Otherwise, the delete operation will affect not only the target table, but all tables that inherit from it.


The following ...

Get Practical PostgreSQL now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.