

# 테이블에서 데이터를 삭제할 때 관계형(SQL) 데이터베이스와 DynamoDB 비교
<a name="SQLtoNoSQL.DeleteData"></a>

SQL에서 `DELETE` 문은 테이블에서 하나 이상의 행을 제거합니다. Amazon DynamoDB에서는 `DeleteItem` 작업을 사용하여 항목을 한 번에 하나씩 삭제합니다.

**Topics**
+ [SQL에서 테이블의 데이터 삭제](#SQLtoNoSQL.DeleteData.SQL)
+ [DynamoDB에서 테이블의 데이터 삭제](#SQLtoNoSQL.DeleteData.DynamoDB)

## SQL에서 테이블의 데이터 삭제
<a name="SQLtoNoSQL.DeleteData.SQL"></a>

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에서 테이블의 데이터 삭제
<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` 작업을 사용하여 테이블에서 데이터를 한 번에 한 항목씩 삭제합니다. 항목의 기본 키 값을 지정해야 합니다.

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

**참고**  
Amazon DynamoDB는 `DeleteItem` 외에도 여러 항목을 동시에 삭제하는 `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` 문을 사용하여 테이블에서 데이터를 한 번에 한 항목씩 삭제합니다. 항목의 기본 키 값을 지정해야 합니다.

이 테이블의 기본 키는 *Artist* 및 *SongTitle*로 구성됩니다. 이 속성들의 값을 지정해야 합니다.

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

작업에 대한 추가 조건을 지정할 수 있습니다. 다음 `DELETE` 작업은 *Awards*가 11 이상인 경우에만 항목을 삭제합니다.

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

**참고**  
`DELETE` 및 `ExecuteStatement`를 사용하는 코드 예제는 [DynamoDB의 PartiQL delete 문](ql-reference.delete.md) 섹션을 참조하세요.

------