

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 CQL `DELETE` 语句从表中删除数据
<a name="getting-started.dml.delete"></a>

要删除 `book_awards` 表中的数据，请使用 `DELETE` 语句。

您可以从行或分区中删除数据。删除数据时要小心，因为删除是不可逆操作。

从表中删除一行或所有行不会删除该表。因此，您可以用数据重新填充该表。删除表将删除表及其中的所有数据。要再次使用表，必须重新创建表并向其中添加数据。删除键空间会删除键空间及其中的所有表。要使用键空间和表，必须重新创建，然后用数据填充。您可以使用 Amazon Keyspaces Point-in-time (PITR) 恢复来帮助恢复已删除的表，要了解更多信息，请参阅。[使用 Amazon Keyspaces 的 point-in-time恢复功能备份和还原数据](PointInTimeRecovery.md)要了解如何在启用 PITR 的情况下还原已删除的表，请参阅[使用 Amazon Keyspaces PITR 还原已删除的表](restoredeleted.md)。

## 删除单元格
<a name="getting-started.dml.delete-cell"></a>

从行中删除列会从指定单元格中删除数据。使用`SELECT`语句显示该列时，数据显示为*null*，尽管该位置没有存储空值。

删除一个或多个特定列的一般语法如下所示。

```
DELETE column_name1[, column_name2...] FROM table_name WHERE condition ;
```

在 `book_awards` 表中，您可以看到荣获 2020 年“Richard Roe”奖第一名的书名是《Long Summer》。想象一下，该书名已被召回，您需要从该单元格中删除数据。

**删除特定单元格**

1. 使用以下 AWS CloudShell 命令打开并连接到 Amazon Keyspaces。请务必*us-east-1*使用您自己的地区进行更新。

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

1. 运行以下 `DELETE` 查询。

   ```
   DELETE book_title FROM catalog.book_awards WHERE year=2020 AND award='Richard Roe' AND category='Fiction' AND rank=1;
   ```

1. 验证删除请求是否如预期。

   ```
   SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Richard Roe' AND category='Fiction' AND rank=1;
   ```

   该语句的输出如下所示。

   ```
    year | award       | category | rank | author            | book_title | publisher
   ------+-------------+----------+------+-------------------+------------+---------------
    2020 | Richard Roe |  Fiction |    1 | Alejandro Rosalez |       null | SomePublisher
   ```

## 删除行
<a name="getting-started.dml.delete-row"></a>

有时您可能需要删除整行，例如为了满足数据删除请求。删除行的一般语法如下所示。

```
DELETE FROM table_name WHERE condition ;
```

**删除行**

1. 使用以下 AWS CloudShell 命令打开并连接到 Amazon Keyspaces。请务必*us-east-1*使用您自己的地区进行更新。

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

1. 运行以下 `DELETE` 查询。

   ```
   DELETE FROM catalog.book_awards WHERE year=2020 AND award='Richard Roe' AND category='Fiction' AND rank=1;
   ```

1. 验证删除操作是否如预期。

   ```
   SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Richard Roe' AND category='Fiction' AND rank=1;
   ```

   删除行后，此语句的输出如下所示。

   ```
    year | award | category | rank | author | book_title | publisher
   ------+-------+----------+------+--------+------------+-----------
   
   (0 rows)
   ```

您可以使用 Amazon Keyspaces 生存时间自动从表中删除过期的数据，有关更多信息，请参阅[使用 Amazon Keyspaces（Apache Cassandra 兼容）的生存时间（TTL）功能让数据过期](TTL.md)。