关系(SQL)数据库和 DynamoDB 在从表中删除数据方面的差异 - Amazon DynamoDB

关系(SQL)数据库和 DynamoDB 在从表中删除数据方面的差异

在 SQL 中,DELETE 语句从表检索一个或多个行。Amazon DynamoDB 使用 DeleteItem 操作一次删除一个项目。

使用 SQL 删除表中的数据

在 SQL 中,可使用 DELETE 语句删除一个或多个行。WHERE 子句确定要修改的行。示例如下:

DELETE FROM Music WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';

您可以修改 WHERE 子句以删除多个行。例如,您可以删除某个特定艺术家的所有歌曲,如以下示例所示。

DELETE FROM Music WHERE Artist = 'The Acme Band'

在 DynamoDB 中删除表中的数据

在 DynamoDB 中,您可以使用 DynamoDB API 或 PartiQL(一种与 SQL 兼容的查询语言)删除单个项目。(如果要修改多个项目,则必须使用多个操作。)

DynamoDB API

借助 DynamoDB API,您可以使用 DeleteItem 操作删除表中的数据(一次删除一个项目)。您必须指定项目的主键值。

{ TableName: "Music", Key: { Artist: "The Acme Band", SongTitle: "Look Out, World" } }
注意

除了 DeleteItem 之外,Amazon DynamoDB 还支持使用 BatchWriteItem 操作同时删除多个项目。

DeleteItem 支持条件写入,在此情况下,操作仅在特定 ConditionExpression 的计算结果为 true 时成功完成。例如,以下 DeleteItem 操作仅在项目具有 RecordLabel 属性时删除项目。

{ TableName: "Music", Key: { Artist: "The Acme Band", SongTitle: "Look Out, World" }, ConditionExpression: "attribute_exists(RecordLabel)" }
PartiQL for DynamoDB

使用 PartiQL,您可以使用 Delete 语句通过 ExecuteStatement 操作删除表中的数据(一次删除一个项目)。您必须指定项目的主键值。

此表的主键包含 ArtistSongTitle。您必须为这些属性指定值。

DELETE FROM Music WHERE Artist = 'Acme Band' AND SongTitle = 'PartiQL Rocks'

您还可以指定操作的其他选项。以下 DELETE 操作只有在项目超过 11 个奖项时才会删除该项目。

DELETE FROM Music WHERE Artist = 'Acme Band' AND SongTitle = 'PartiQL Rocks' AND Awards > 11
注意

有关使用 DELETEExecuteStatement 的代码示例,请参阅 PartiQL for DynamoDB Delete 语句