DELETE

Removes the specified rows from a table and returns a count of the deleted rows. A count of 0 is not an error, but indicates that no rows matched the condition. An unqualified DELETE statement (omits a WHERE clause) removes all rows but leaves intact table columns, projections, and constraints.

DELETE supports subqueries and joins, so you can delete values in a table based on values in other tables.

Syntax

DELETE [ /*+ hint[, hint] */ ]  FROM [schema.]table‑name [ where-clause ]

Parameters

/*+ hint[, hint] */

One or both of the following hints:

schema

Specifies a schema. If multiple schemas are defined in the database, include the schema name. For example:

myschema.thisDbObject
table‑name

Any table, including temporary tables.

where‑clause

Specifies which rows to mark for deletion. If you omit this clause, DELETE behavior varies depending on whether the table is persistent or temporary. See below for details.

Privileges

Table owner or user with GRANT OPTION is grantor.

Restrictions

You cannot execute DELETE on a projection.

Deleting from Persistent Tables

Unlike TRUNCATE TABLE, DELETE does not delete data from disk storage. Rather, it marks rows for deletion in the WOS. These rows are no longer valid in the current epoch. By default, DELETE uses WOS. If WOS fills up, the operation overflows to the ROS.

Deleting from a Temporary Table

DELETE execution on temporary tables varies, depending on whether the table was created with ON COMMIT DELETE ROWS (default) or ON COMMIT PRESERVE ROWS:

Examples

The following command removes all rows from temporary table temp1:

=> DELETE FROM temp1;

The following command deletes all records from anchor table T where C1 = C2 - C1.

=> DELETE FROM T WHERE C1=C2-C1;

The following command deletes all records from the customer table in the retail schema where the state attribute is in MA or NH:

=> DELETE FROM retail.customer WHERE  state IN ('MA', 'NH');

For examples that show how to nest a subquery within a DELETE statement, see Subqueries in UPDATE and DELETE in Analyzing Data.