

# テーブルからデータを削除するときのリレーショナル (SQL) データベースと DynamoDB の相違点
<a name="SQLtoNoSQL.DeleteData"></a>

SQL では、`DELETE` ステートメントを使用してテーブルから 1 つ以上の行を削除します。Amazon DynamoDB では、この `DeleteItem` オペレーションを使用して一度に 1 つの項目を削除します。

**Topics**
+ [

## SQL を使ってテーブルからデータを削除する
](#SQLtoNoSQL.DeleteData.SQL)
+ [

## DynamoDB でテーブルからデータを削除する
](#SQLtoNoSQL.DeleteData.DynamoDB)

## SQL を使ってテーブルからデータを削除する
<a name="SQLtoNoSQL.DeleteData.SQL"></a>

SQL では、`DELETE` ステートメントを使用して、1 つ以上の行を削除します。`WHERE` 句は、変更する行を決定します。以下はその例です。

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

`WHERE` 句を変更して、複数行を削除できます。たとえば、次の例に示すように、特定のアーティストのすべての曲を削除できます。

```
DELETE FROM Music WHERE Artist = 'The Acme Band'
```

## DynamoDB でテーブルからデータを削除する
<a name="SQLtoNoSQL.DeleteData.DynamoDB"></a>

DynamoDB では、クラシック API または [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) (SQL 互換のクエリ言語) を使用して、単一の項目を削除できます。複数の項目を変更する場合は、複数のオペレーションを使用する必要があります。

------
#### [ DynamoDB API ]

DynamoDB API では、`DeleteItem` オペレーションを使用して、テーブルからデータを一度に 1 項目ずつ削除します。項目のプライマリキー値を指定する必要があります。

```
{
    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 では、`ExecuteStatement` オペレーションでの `Delete`ステートメントを使用して、テーブルからデータを一度に 1 項目ずつ削除します。項目のプライマリキー値を指定する必要があります。

このテーブルのプライマリキーは、*Artist* および *SongTitle* で構成されます。これらの属性の値を指定する必要があります。

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

オペレーションには、追加の条件を指定することもできます。次の `DELETE` オペレーションは、11 を超える *Awards* が項目に含まれる場合にのみ、その項目を削除します。

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

**注記**  
`DELETE` と `ExecuteStatement` を使用したコード例については、[DynamoDB 用の PartiQL 削除ステートメント](ql-reference.delete.md) を参照してください。

------