DELETE FROM table [WHERE expression]This SQL
DELETEstatement 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 OFcursor_nameconstruction). The "searched delete" deletes all rows of the table that satisfy theWHEREcondition.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 Nis specified, records with the lowest values of x are removed.In all other cases the order is not specified and any
Nof records can be deleted by theDELETEwithLIMITstatement.