删除数据,可以删除表中的一行数据(不可删除多行),可指定过滤条件。

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; -- 必须给出主键列的条件