删除数据,可以删除表中的一行数据(不可删除多行),可指定过滤条件。
DELETE语法是高危操作,为了确保数据安全,Lindorm将DELETE的语义限制为只能使用完备的主键删除一行数据。
语法
delete_statement ::= DELETE FROM table_name
WHERE where_clause
说明 Where_Clause必须可以唯一限定一行数据。
语法限制
- DELETE的WHERE子句中,必须给出能够唯一定位一行数据的完备主键条件。
- 一条DELETE语句只能删除一行数据,不支持一条语句删除多行。
- 删除操作并非是先读取再删除,而是直接写入删除标记。所以无论被删除的行是否存在,删除都会成功。
- 可以指定删除的时间戳,带时间戳的delete会删除指定行中,小于等于指定时间戳的列。
示例
delete from dt where p1 = 10 and p2 = 20;
-- 以下语句是非法的
delete from dt where p1 = 10; -- dt表有两个主键列,p1=10无法唯一确定一行
delete from dt where c1 = 30; -- 必须给出主键列的条件