全部产品
Search
文档中心

云原生数据仓库AnalyticDB:DELETE

更新时间:May 08, 2025

DELETE用于删除表中的数据。

注意事项

  • 执行DELETE命令时,表中必须存在主键。

  • DELETE暂不支持使用表的别名。

  • 不建议通过DELETE命令删除全表、全分区的数据,建议使用TRUNCATE TABLETRUNCATE TABLE PARTITION命令,详情请参见TRUNCATE TABLE

  • 删除多表数据时,一条SQL语句只能删除一张表,不支持同时删除多张表。

语法

单表删除是指查询一个表,并删除满足WHERE子句指定条件的数据。多表删除是指单个SQL语句进行多表关联查询,并在一个表中删除满足WHERE子句指定条件的数据。

单表删除

DELETE FROM table_name
[ WHERE condition ]        

多表删除

重要

仅3.2.0.0及以上内核版本的集群支持多表删除。

云原生数据仓库AnalyticDB MySQL控制台集群信息页面的配置信息区域,查看和升级内核版本

DELETE table_name1
FROM table_name1 [INNER JOIN | LEFT JOIN | RIGHT JOIN] table_name2 ON table_name1.column1 = table_name2.column1
[WHERE where_condition]

示例

  • 删除customer表中name张三的数据。

    DELETE FROM customer WHERE customer_name='张三';                  
  • 删除customer表中的多行。

    DELETE FROM customer WHERE age<18;                
  • 在customer表中,查询并删除id与orders表中id相同,且age为18的数据。

    DELETE customer FROM customer JOIN orders ON customer.id = orders.id WHERE customer.age = 18;

常见问题

为什么在删除表中数据后,存储空间占用没有减少?

原因:DELETE是异步操作,执行DELETE语句删除表数据后,存储空间占用不会立即减少。

解决方法:在执行DELETE语句后,触发BUILD任务。

AnalyticDB for MySQL集群会在满足一定条件后自动触发BUILD任务,您也可以手动触发BUILD任务