DELETE FROM table [WHERE expression]This SQL
DELETE
statement deletes zero or more rows of the specified table. eXtremeSQL deletes are “searched deletes.” Currently, eXtremeSQL does not support “positioned delete” (i.e., theWHERE CURRENT OF
cursor_name
construction). The "searched delete" deletes all rows of the table that satisfy theWHERE
condition.For example,
DELETE FROM Employee or DELETE FROM Employee WHERE name LIKE “X%”Note: eXtremeDB and, by extension, eXtremeSQL, do not enforce referential integrity. Take care NOT to delete rows with primary key values for which there are one or more referencing foreign keys.
LIMIT Clause
eXtremeSQL supports the LIMIT clause in DELETE statements. For example:
XSQL>create table foo(x integer primary key); XSQL>insert into foo values (4),(5),(2),(1),(3); XSQL>delete from foo limit 1; XSQL>select * from foo; x ------------------------------------------------------------------------------ 2 3 4 5 Selected records: 4 XSQL>select * from foo where x < 4 limit 2; x ------------------------------------------------------------------------------ 2 3 Selected records: 2 XSQL>delete from foo where x < 4 limit 2; XSQL>select * from foo; x ------------------------------------------------------------------------------ 4 5 Selected records: 2Note that there is no guarantee that records will be deleted in any particular order. The optimizer's rule is the following:
If the query contains a predicate x<?, x<=?, x>? or x>=? and an ordered (
tree
) index exists for the "x" field, then the optimizer performs the index search and traverses records in ascending order of "x". Thus ifLIMIT N
is specified, records with the lowest values of x are removed.In all other cases the order is not specified and any
N
of records can be deleted by theDELETE
withLIMIT
statement.