

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Keyspaces 入門 （適用於 Apache Cassandra)
<a name="getting-started"></a>

如果您是初次使用 Apache Cassandra 和 Amazon Keyspaces，本教學課程會引導您完成安裝必要的程式和工具，以成功使用 Amazon Keyspaces。您將了解如何使用 Cassandra 查詢語言 (CQL) AWS 管理主控台、 或 AWS Command Line Interface () 建立金鑰空間和資料表AWS CLI。然後，您可以使用 Cassandra 查詢語言 (CQL) 對 Amazon Keyspaces 資料表中的資料執行建立、讀取、更新和刪除 (CRUD) 操作。

本教學課程涵蓋下列步驟。
+ **先決條件 – **開始教學課程之前，請遵循 AWS 設定說明註冊 AWS 並建立可存取 Amazon Keyspaces 的 IAM 使用者。然後，設定 `cqhsh-expansion`和 AWS CloudShell。或者，您可以使用 AWS CLI 在 Amazon Keyspaces 中建立資源。
+ **步驟 1：建立金鑰空間和資料表 ** – 在此區段中，您將建立名為 "catalog" 的金鑰空間，以及其中名為 "book\$1awards" 的資料表。您將使用、CQL 或 指定資料表的資料欄、資料類型 AWS 管理主控台、分割區索引鍵和叢集資料欄 AWS CLI。
+ **步驟 2：執行 CRUD 操作 ** – 在這裡，您將使用 CloudShell `cqlsh-expansion`中的 來插入、讀取、更新和刪除「book\$1awards」資料表中的資料。您將了解如何使用各種 CQL 陳述式，例如 SELECT、INSERT、UPDATE 和 DELETE，以及練習篩選和修改資料。
+ **步驟 3：清除資源 ** – 為了避免未使用的資源產生費用，本節將引導您使用主控台、CQL 或 刪除「book\$1awards」資料表和「catalog」鍵空間 AWS CLI。

如需使用不同 Apache Cassandra 用戶端驅動程式以程式設計方式連線至 Amazon Keyspaces 的教學課程，請參閱 [使用 Cassandra 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](programmatic.drivers.md)。如需使用不同 AWS SDKs程式碼範例，請參閱[使用 AWS SDKs 的 Amazon Keyspaces 程式碼範例](https://docs.aws.amazon.com/keyspaces/latest/devguide/service_code_examples.html)。

**Topics**
+ [

# 教學的先決條件和考量事項
](getting-started.before-you-begin.md)
+ [

# 在 Amazon Keyspaces 中建立金鑰空間
](getting-started.keyspaces.md)
+ [

# 檢查 Amazon Keyspaces 中的金鑰空間建立狀態
](keyspaces-create.md)
+ [

# 在 Amazon Keyspaces 中建立資料表
](getting-started.tables.md)
+ [

# 在 Amazon Keyspaces 中檢查資料表建立狀態
](tables-create.md)
+ [

# 在 Amazon Keyspaces 中使用 CQL 建立、讀取、更新和刪除資料 (CRUD)
](getting-started.dml.md)
+ [

# 在 Amazon Keyspaces 中刪除資料表
](getting-started.clean-up.table.md)
+ [

# 在 Amazon Keyspaces 中刪除金鑰空間
](getting-started.clean-up.keyspace.md)

# 教學的先決條件和考量事項
<a name="getting-started.before-you-begin"></a>

在開始使用 Amazon Keyspaces 之前，請遵循中的 AWS 設定說明[存取 Amazon Keyspaces （適用於 Apache Cassandra)](accessing.md)。這些步驟包括註冊 AWS 和建立可存取 Amazon Keyspaces 的 AWS Identity and Access Management (IAM) 使用者。

若要完成教學課程的所有步驟，您需要安裝 `cqlsh`。您可以遵循 的設定指示[使用 `cqlsh` 連線至 Amazon Keyspaces](programmatic.cqlsh.md)。

若要使用 `cqlsh`或 存取 Amazon Keyspaces AWS CLI，建議使用 AWS CloudShell。CloudShell 是以瀏覽器為基礎、預先驗證身分的 Shell，您可以直接從 AWS 管理主控台啟動。您可以使用您偏好的 shell (Bash、PowerShell 或 Z shell AWS CLI) 對 Amazon Keyspaces 執行 AWS Command Line Interface () 命令。若要使用 `cqlsh`，您必須安裝 `cqlsh-expansion`。如需`cqlsh-expansion`安裝說明，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。如需 CloudShell 的詳細資訊，請參閱 [使用 AWS CloudShell 存取 Amazon Keyspaces](using-aws-with-cloudshell.md)。

若要使用 AWS CLI 在 Amazon Keyspaces 中建立、檢視和刪除資源，請遵循 中的設定說明[下載和設定 AWS CLI](access.cli.md#access.cli.installcli)。

完成先決條件步驟後，請繼續 [在 Amazon Keyspaces 中建立金鑰空間](getting-started.keyspaces.md)。

# 在 Amazon Keyspaces 中建立金鑰空間
<a name="getting-started.keyspaces"></a>

在本節中，您會使用主控台、 `cqlsh`或 建立金鑰空間 AWS CLI。

**注意**  
開始之前，請確定您已設定所有[教學的先決條件](getting-started.before-you-begin.md)。

與一或多個應用程式相關的*鍵空間*群組相關資料表。金鑰空間包含一或多個資料表，並為其包含的所有資料表定義複寫策略。如需金鑰空間的詳細資訊，請參閱下列主題：
+ CQL 語言參考中的資料定義語言 (DDL) 陳述式： [Keyspaces](cql.ddl.keyspace.md)
+ [Amazon Keyspaces 配額 （適用於 Apache Cassandra)](quotas.md)

在本教學課程中，我們會建立單一區域金鑰空間，而金鑰空間的複寫策略為 `SingleRegionStrategy`。Amazon Keyspaces 使用 `SingleRegionStrategy`在一個可用區域中跨三個[可用區域](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)複寫資料 AWS 區域。若要了解如何建立多區域金鑰空間，請參閱 [在 Amazon Keyspaces 中建立多區域金鑰空間](keyspaces-mrr-create.md)。

## 使用主控台
<a name="getting-started.keyspaces.con"></a>

**使用主控台建立金鑰空間**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) 開啟 Amazon Keyspaces 主控台。

1. 在導覽窗格中，選擇 **金鑰空間**。

1. 選擇**建立金鑰空間**。

1. 在**金鑰空間名稱**方塊中，輸入 **catalog**做為金鑰空間的名稱。

   **名稱限制條件：**
   + 名稱不可為空白。
   + 允許的字元：英數字元和底線 `_` ()。
   + 長度上限為 48 個字元。

1. 在 下**AWS 區域**，確認**單一區域複寫**是 金鑰空間的複寫策略。

1. 若要建立金鑰空間，請選擇**建立金鑰空間**。

1. 執行下列動作，確認`catalog`已建立 金鑰空間：

   1. 在導覽窗格中，選擇 **金鑰空間**。

   1. `catalog` 在金鑰空間清單中找到您的金鑰空間。

## 使用 CQL
<a name="getting-started.keyspaces.cql"></a>

下列程序會使用 CQL 建立金鑰空間。

**使用 CQL 建立金鑰空間**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

   該命令的輸出應如下所示。

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   ```

1. 使用下列 CQL 命令建立您的金鑰空間。

   ```
   CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};
   ```

   `SingleRegionStrategy` 使用 3 的複寫係數，並在其區域中的三個 AWS 可用區域中複寫資料。
**注意**  
Amazon Keyspaces 會將所有輸入預設為小寫，除非您將其括在引號中。

1. 確認您的 金鑰空間已建立。

   ```
   SELECT * from system_schema.keyspaces;
   ```

   此命令的輸出看起來應該與此類似。

   ```
   cqlsh> SELECT * from system_schema.keyspaces;
   
    keyspace_name           | durable_writes | replication
   -------------------------+----------------+-------------------------------------------------------------------------------------
              system_schema |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
          system_schema_mcs |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
                     system |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
    system_multiregion_info |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
                    catalog |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
   
   (5 rows)
   ```

## 使用 AWS CLI
<a name="getting-started.keyspaces.cli"></a>

下列程序會使用 建立金鑰空間 AWS CLI。

**使用 建立金鑰空間 AWS CLI**

1. 若要確認您的環境已設定，您可以在 CloudShell 中執行下列命令。

   ```
   aws keyspaces help
   ```

1. 使用下列 AWS CLI 陳述式建立您的 金鑰空間。

   ```
   aws keyspaces create-keyspace --keyspace-name 'catalog'
   ```

1. 確認您的 金鑰空間已使用下列 AWS CLI 陳述式建立

   ```
   aws keyspaces get-keyspace --keyspace-name 'catalog'
   ```

   此命令的輸出看起來應該與此範例類似。

   ```
   {
       "keyspaceName": "catalog",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/",
       "replicationStrategy": "SINGLE_REGION"
   }
   ```

# 檢查 Amazon Keyspaces 中的金鑰空間建立狀態
<a name="keyspaces-create"></a>

Amazon Keyspaces 會以非同步方式執行資料定義語言 (DDL) 操作，例如建立和刪除金鑰空間。

您可以在 中監控新金鑰空間的建立狀態 AWS 管理主控台，這表示金鑰空間何時處於待定或作用中狀態。您也可以使用 金鑰空間，以程式設計方式監控新`system_schema_mcs`金鑰空間的建立狀態。準備好使用時，鍵空間會出現在`system_schema_mcs``keyspaces`資料表中。

檢查新金鑰空間何時可供使用的建議設計模式是輪詢 Amazon Keyspaces `system_schema_mcs``keyspaces`資料表 (system\$1schema\$1mcs.\$1)。如需金鑰空間的 DDL 陳述式清單，請參閱 CQL 語言參考中的[Keyspaces](cql.ddl.keyspace.md)一節。

下列查詢顯示是否已成功建立金鑰空間。

```
SELECT * FROM system_schema_mcs.keyspaces WHERE keyspace_name = 'mykeyspace';
```

對於已成功建立的金鑰空間，查詢的輸出如下所示。

```
keyspace_name | durable_writes  | replication
--------------+-----------------+--------------
   mykeyspace | true            |{...} 1 item
```

# 在 Amazon Keyspaces 中建立資料表
<a name="getting-started.tables"></a>

在本節中，您會使用 主控台、 `cqlsh`或 建立資料表 AWS CLI。

資料表是資料整理和存放的位置。資料表的主索引鍵決定如何在資料表中分割資料。主索引鍵由必要的分割區索引鍵和一或多個選用叢集資料欄組成。構成主索引鍵的組合值在所有資料表的資料中必須是唯一的。如需資料表的詳細資訊，請參閱下列主題：
+ 分割區索引鍵設計： [如何在 Amazon Keyspaces 中有效使用分割區金鑰](bp-partition-key-design.md)
+ 使用資料表： [在 Amazon Keyspaces 中檢查資料表建立狀態](tables-create.md)
+ CQL 語言參考中的 DDL 陳述式： [表格](cql.ddl.table.md)
+ 資料表資源管理： [在 Amazon Keyspaces 中管理無伺服器資源 （適用於 Apache Cassandra)](serverless_resource_management.md)
+ 監控資料表資源使用率： [使用 Amazon CloudWatch 監控 Amazon Keyspaces](monitoring-cloudwatch.md)
+ [Amazon Keyspaces 配額 （適用於 Apache Cassandra)](quotas.md)

建立資料表時，您可以指定下列項目：
+  資料表的名稱。
+ 資料表中每個資料欄的名稱和資料類型。
+ 資料表的主索引鍵。
  + **分割區索引鍵** – 必要
  + **叢集資料欄** – 選用

使用下列程序建立具有指定資料欄、資料類型、分割區索引鍵和叢集資料欄的資料表。

## 使用主控台
<a name="getting-started.tables.con"></a>

下列程序會建立`book_awards`具有這些資料欄和資料類型的資料表。

```
year           int
award          text
rank           int 
category       text
book_title     text
author         text
publisher      text
```

**使用主控台建立資料表**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) 開啟 Amazon Keyspaces 主控台。

1. 在導覽窗格中，選擇 **金鑰空間**。

1. 選擇 `catalog`做為您要建立此資料表的金鑰空間。

1. 選擇 **Create Table** (建立資料表)。

1. 在**資料表名稱**方塊中，輸入 **book\$1awards**做為資料表的名稱。

   **名稱限制條件：**
   + 名稱不可為空白。
   + 允許的字元：英數字元和底線 `_` ()。
   + 長度上限為 48 個字元。

1. 在**資料欄**區段中，針對您要新增至此表格的每個資料欄重複下列步驟。

   新增下列資料欄和資料類型。

   ```
   year           int
   award          text
   rank           int 
   category       text
   book_title     text
   author         text
   publisher      text
   ```

   1. **名稱** – 輸入資料欄的名稱。

      **名稱限制條件：**
      + 名稱不可為空白。
      + 允許的字元：英數字元和底線 `_` ()。
      + 長度上限為 48 個字元。

   1. **類型** – 在資料類型清單中，選擇此欄的資料類型。

   1. 若要新增其他資料欄，請選擇**新增資料欄**。

1. 選擇 `award`和 `year`做為分割區索引鍵下的**分割區索引鍵**。每個資料表都需要分割區索引鍵。分割區索引鍵可由一或多個資料欄組成。

1. 新增 `category`和 `rank`做為**叢集資料欄**。叢集資料欄是選用的，並決定每個分割區內的排序順序。

   1. 若要新增叢集資料欄，請選擇**新增叢集資料欄**。

   1. 在**資料欄**清單中，選擇**類別**。在**順序**清單中，選擇 **ASC** 以遞增順序排序此欄中的值。（選擇遞減順序的 **DESC**。)

   1. 然後選取**新增叢集欄**，然後選擇**排名**。

1. 在**資料表設定**區段中，選擇**預設設定**。

1. 選擇 **Create Table** (建立資料表)。

1. 確認您的資料表已建立。

   1. 在導覽窗格中，選擇 **Tables** (資料表)。

   1. 確認您的資料表位於資料表清單中。

   1. 選擇資料表的名稱。

   1. 確認您的所有資料欄和資料類型都正確。
**注意**  
這些欄可能不會以您將其新增至資料表的相同順序列出。

## 使用 CQL
<a name="getting-started.tables.cql"></a>

此程序會使用 CQL 建立具有下列資料欄和資料類型的資料表。`year` 和 `award`欄是具有 `category`和 `rank`做為叢集欄的分割區索引鍵，它們共同構成資料表的主索引鍵。

```
year           int
award          text
rank           int 
category       text
book_title     text
author         text
publisher      text
```

**使用 CQL 建立資料表**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

   該命令的輸出應如下所示。

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   ```

1. 在金鑰空間提示字元 (`cqlsh:keyspace_name>`) 中，在命令視窗中輸入下列程式碼來建立資料表。

   ```
   CREATE TABLE catalog.book_awards (
      year int,
      award text,
      rank int, 
      category text,
      book_title text,
      author text, 
      publisher text,
      PRIMARY KEY ((year, award), category, rank)
      );
   ```
**注意**  
`ASC` 是預設叢集順序。您也可以`DESC`為遞減順序指定 。

   請注意， `year`和 `award`是分割區索引鍵資料欄。然後， `category`和 `rank`是依遞增順序排序的叢集資料欄 (`ASC`)。這些資料欄共同形成資料表的主索引鍵。

1. 確認您的資料表已建立。

   ```
   SELECT * from system_schema.tables WHERE keyspace_name='catalog.book_awards' ;
   ```

   輸出看起來應該與此類似。

   ```
    keyspace_name | table_name | bloom_filter_fp_chance | caching | cdc | comment | compaction | compression | crc_check_chance | dclocal_read_repair_chance | default_time_to_live | extensions | flags | gc_grace_seconds | id | max_index_interval | memtable_flush_period_in_ms | min_index_interval | read_repair_chance | speculative_retry
   ---------------+------------+------------------------+---------+-----+---------+------------+-------------+------------------+----------------------------+----------------------+------------+-------+------------------+----+--------------------+-----------------------------+--------------------+--------------------+-------------------
   
   (0 rows)
   ```

1. 驗證資料表的結構。

   ```
   SELECT * FROM system_schema.columns WHERE keyspace_name = 'catalog' AND table_name = 'book_awards';
   ```

   此陳述式的輸出看起來應該與此範例類似。

   ```
    keyspace_name | table_name  | column_name | clustering_order | column_name_bytes      | kind          | position | type
   ---------------+-------------+-------------+------------------+------------------------+---------------+----------+------
          catalog | book_awards |        year |             none |             0x79656172 | partition_key |        0 |  int
          catalog | book_awards |       award |             none |           0x6177617264 | partition_key |        1 | text
          catalog | book_awards |    category |              asc |     0x63617465676f7279 |    clustering |        0 | text
          catalog | book_awards |        rank |              asc |             0x72616e6b |    clustering |        1 |  int
          catalog | book_awards |      author |             none |         0x617574686f72 |       regular |       -1 | text
          catalog | book_awards |  book_title |             none | 0x626f6f6b5f7469746c65 |       regular |       -1 | text
          catalog | book_awards |   publisher |             none |   0x7075626c6973686572 |       regular |       -1 | text
   
   (7 rows)
   ```

   確認所有資料欄和資料類型都如預期。資料欄的順序可能與 `CREATE`陳述式中的順序不同。

## 使用 AWS CLI
<a name="getting-started.tables.cli"></a>

此程序會使用 建立具有下列資料欄和資料類型的資料表 AWS CLI。`year` 和 `award`資料欄使用 `category`和 `rank` 做為叢集資料欄組成分割區索引鍵。

```
year           int
award          text
rank           int 
category       text
book_title     text
author         text
publisher      text
```

**使用 建立資料表 AWS CLI**

下列命令會建立名稱為 *book\$1awards* 的資料表。資料表的分割區索引鍵由欄 `year``award`和 組成，叢集索引鍵由欄 `category`和 組成`rank`，兩個叢集欄都使用遞增排序順序。（為了更容易閱讀，本節中資料表建立命令`schema-definition`的 會分成不同的行。)

1. 您可以使用下列陳述式建立資料表。

   ```
   aws keyspaces create-table --keyspace-name 'catalog' \
                         --table-name 'book_awards' \
                         --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int},
               {name=category,type=text}, {name=author,type=text},{name=book_title,type=text},{name=publisher,type=text}],
               partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]'
   ```

   此命令會產生下列輸出。

   ```
   {
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards"
   }
   ```

1. 若要確認資料表的中繼資料和屬性，您可以使用下列命令。

   ```
   aws keyspaces get-table --keyspace-name 'catalog' --table-name 'book_awards'
   ```

   此命令會傳回下列輸出。

   ```
   {
       "keyspaceName": "catalog",
       "tableName": "book_awards",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards",
       "creationTimestamp": "2024-07-11T15:12:55.571000+00:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "year",
                   "type": "int"
               },
               {
                   "name": "award",
                   "type": "text"
               },
               {
                   "name": "category",
                   "type": "text"
               },
               {
                   "name": "rank",
                   "type": "int"
               },
               {
                   "name": "author",
                   "type": "text"
               },
               {
                   "name": "book_title",
                   "type": "text"
               },
               {
                   "name": "publisher",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "year"
               },
               {
                   "name": "award"
               }
           ],
           "clusteringKeys": [
               {
                   "name": "category",
                   "orderBy": "ASC"
               },
               {
                   "name": "rank",
                   "orderBy": "ASC"
               }
           ],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2024-07-11T15:12:55.571000+00:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       },
       "replicaSpecifications": []
   }
   ```

若要對資料表中的資料執行 CRUD （建立、讀取、更新和刪除） 操作，請繼續。 [在 Amazon Keyspaces 中使用 CQL 建立、讀取、更新和刪除資料 (CRUD)](getting-started.dml.md)

# 在 Amazon Keyspaces 中檢查資料表建立狀態
<a name="tables-create"></a>

Amazon Keyspaces 會以非同步方式執行資料定義語言 (DDL) 操作，例如建立和刪除資料表。您可以在 中監控新資料表的建立狀態 AWS 管理主控台，這表示資料表何時處於待定或作用中狀態。您也可以使用系統結構描述資料表，以程式設計方式監控新資料表的建立狀態。

準備好使用時，資料表會在系統結構描述中顯示為作用中。檢查新資料表何時可供使用的建議設計模式是輪詢 Amazon Keyspaces 系統結構描述資料表 (`system_schema_mcs.*`)。如需資料表的 DDL 陳述式清單，請參閱 CQL 語言參考中的[表格](cql.ddl.table.md)一節。

下列查詢顯示資料表的狀態。

```
SELECT keyspace_name, table_name, status FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
```

對於仍在建立且待定的資料表，查詢的輸出如下所示。

```
keyspace_name | table_name | status
--------------+------------+--------
   mykeyspace |    mytable | CREATING
```

對於已成功建立且作用中的資料表，查詢的輸出如下所示。

```
keyspace_name | table_name | status
--------------+------------+--------
   mykeyspace |    mytable | ACTIVE
```

# 在 Amazon Keyspaces 中使用 CQL 建立、讀取、更新和刪除資料 (CRUD)
<a name="getting-started.dml"></a>

在教學課程的此步驟中，您將了解如何使用 CQL 資料處理語言 (DML) 陳述式在 Amazon Keyspaces 資料表中插入、讀取、更新和刪除資料。在 Amazon Keyspaces 中，您只能以 CQL 語言建立 DML 陳述式。在本教學課程中，您將練習在 [AWS CloudShell](using-aws-with-cloudshell.md)中使用 `cqlsh-expansion` 搭配 執行 DML 陳述式 AWS 管理主控台。
+ **插入資料** – 本節涵蓋使用 `INSERT`陳述式將單一和多個記錄插入資料表。您將了解如何從 CSV 檔案上傳資料，並使用`SELECT`查詢驗證成功插入。
+ **讀取資料** – 在這裡，您將探索`SELECT`陳述式的不同變化，以從資料表擷取資料。主題包括選取所有資料、選取特定資料欄、使用 `WHERE`子句根據條件篩選資料列，以及了解簡單和複合條件。
+ **更新資料** – 在本節中，您將了解如何使用 `UPDATE`陳述式修改資料表中的現有資料。您將練習更新單一資料欄和多個資料欄，同時了解更新主索引鍵資料欄的限制。
+ **刪除資料** – 最後一節涵蓋使用 `DELETE`陳述式從資料表刪除資料。您將了解如何刪除特定儲存格、整個資料列，以及刪除資料相對於刪除整個資料表或金鑰空間的影響。

在整個教學課程中，您會找到範例、秘訣和機會，練習為各種案例撰寫自己的 CQL 查詢。

**Topics**
+ [

# 將資料插入和載入 Amazon Keyspaces 資料表
](getting-started.dml.create.md)
+ [

# 使用 Amazon Keyspaces 中的 CQL `SELECT`陳述式從資料表讀取資料
](getting-started.dml.read.md)
+ [

# 使用 CQL 更新 Amazon Keyspaces 資料表中的資料
](getting-started.dml.update.md)
+ [

# 使用 CQL `DELETE`陳述式從資料表刪除資料
](getting-started.dml.delete.md)

# 將資料插入和載入 Amazon Keyspaces 資料表
<a name="getting-started.dml.create"></a>

若要在`book_awards`資料表中建立資料，請使用 `INSERT`陳述式來新增單一資料列。

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

   該命令的輸出應如下所示。

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   ```

1. 您必須先將目前 cqlsh 工作階段的寫入一致性設定為 ，才能使用 cqlsh 將資料寫入 Amazon Keyspaces 資料表`LOCAL_QUORUM`。如需支援的一致性層級的詳細資訊，請參閱 [寫入一致性層級](consistency.md#WriteConsistency)。請注意，如果您在 中使用 CQL 編輯器，則不需要此步驟 AWS 管理主控台。

   ```
   CONSISTENCY LOCAL_QUORUM;
   ```

1. 若要插入單一記錄，請在 CQL 編輯器中執行下列命令。

   ```
   INSERT INTO catalog.book_awards (award, year, category, rank, author, book_title, publisher)
   VALUES ('Wolf', 2023, 'Fiction',3,'Shirley Rodriguez','Mountain', 'AnyPublisher') ;
   ```

1. 執行下列命令，確認資料已正確新增至資料表。

   ```
   SELECT * FROM catalog.book_awards;
   ```

   陳述式的輸出應該如下所示。

   ```
    year | award | category | rank | author            | book_title | publisher
   ------+-------+----------+------+-------------------+------------+--------------
    2023 |  Wolf |  Fiction |    3 | Shirley Rodriguez |   Mountain | AnyPublisher
   
   (1 rows)
   ```

**使用 cqlsh 從檔案插入多筆記錄**

1. 下載封存檔案 [samplemigration.zip](samples/samplemigration.zip) 中包含的範例 CSV 檔案 (`keyspaces_sample_table.csv`)。解壓縮封存，並記下 的路徑`keyspaces_sample_table.csv`。  
![\[CSV 檔案的螢幕擷取畫面，顯示匯入 csv 檔案後資料表的輸出。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/keyspaces-awards.png)

1. 在 AWS CloudShell 中開啟 AWS 管理主控台 ，並使用下列命令連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 在`cqlsh`提示 (`cqlsh>`) 中，指定金鑰空間。

   ```
   USE catalog ;
   ```

1. 將寫入一致性設定為 `LOCAL_QUORUM`。如需支援的一致性層級的詳細資訊，請參閱 [寫入一致性層級](consistency.md#WriteConsistency)。

   ```
   CONSISTENCY LOCAL_QUORUM;
   ```

1. 在畫面右上角 AWS CloudShell 選擇**動作**，然後選擇**上傳檔案**以上傳先前下載的 csv 檔案。請記下 檔案的路徑。

1. 在金鑰空間提示 (`cqlsh:catalog>`) 中，執行下列陳述式。

   ```
   COPY book_awards (award, year, category, rank, author, book_title, publisher) FROM '/home/cloudshell-user/keyspaces_sample_table.csv' WITH header=TRUE ;
   ```

   陳述式的輸出看起來應該與此類似。

   ```
   cqlsh:catalog> COPY book_awards (award, year, category, rank, author, book_title, publisher)                      FROM '/home/cloudshell-user/keyspaces_sample_table.csv' WITH delimiter=',' AND header=TRUE ;
   cqlsh current consistency level is LOCAL_QUORUM.
   Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy]: {'numprocesses': '16', 'maxattempts': '1000'}
   Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy-from]: {'ingestrate': '1500', 'maxparseerrors': '1000', 'maxinserterrors': '-1', 'maxbatchsize': '10', 'minbatchsize': '1', 'chunksize': '30'}
   Reading options from the command line: {'delimiter': ',', 'header': 'TRUE'}
   Using 16 child processes
   
   Starting copy of catalog.book_awards with columns [award, year, category, rank, author, book_title, publisher].
   OSError: handle is closed      0 rows/s; Avg. rate:       0 rows/s
   Processed: 9 rows; Rate:       0 rows/s; Avg. rate:       0 rows/s
   9 rows imported from 1 files in 0 day, 0 hour, 0 minute, and 26.706 seconds (0 skipped).
   ```

1. 執行下列查詢，確認資料已正確新增至資料表。

   ```
   SELECT * FROM book_awards ;
   ```

   您應該會看到下列輸出。

   ```
    year | award            | category    | rank | author             | book_title            | publisher
   ------+------------------+-------------+------+--------------------+-----------------------+---------------
    2020 |             Wolf | Non-Fiction |    1 |        Wang Xiulan |      History of Ideas | Example Books
    2020 |             Wolf | Non-Fiction |    2 | Ana Carolina Silva |         Science Today | SomePublisher
    2020 |             Wolf | Non-Fiction |    3 |  Shirley Rodriguez | The Future of Sea Ice |  AnyPublisher
    2020 | Kwesi Manu Prize |     Fiction |    1 |         Akua Mansa |     Where did you go? | SomePublisher
    2020 | Kwesi Manu Prize |     Fiction |    2 |        John Stiles |             Yesterday | Example Books
    2020 | Kwesi Manu Prize |     Fiction |    3 |         Nikki Wolf | Moving to the Chateau |  AnyPublisher
    2020 |      Richard Roe |     Fiction |    1 |  Alejandro Rosalez |           Long Summer | SomePublisher
    2020 |      Richard Roe |     Fiction |    2 |        Arnav Desai |               The Key | Example Books
    2020 |      Richard Roe |     Fiction |    3 |      Mateo Jackson |      Inside the Whale |  AnyPublisher
   
   (9 rows)
   ```

若要進一步了解如何使用 `cqlsh COPY` 將資料從 csv 檔案上傳至 Amazon Keyspaces 資料表，請參閱 [教學課程：使用 cqlsh 將資料載入 Amazon Keyspaces](bulk-upload.md)。

# 使用 Amazon Keyspaces 中的 CQL `SELECT`陳述式從資料表讀取資料
<a name="getting-started.dml.read"></a>

在 [將資料插入和載入 Amazon Keyspaces 資料表](getting-started.dml.create.md)區段中，您使用 `SELECT`陳述式來驗證您已成功將資料新增至資料表。在本節中，您可以精簡使用 `SELECT` 以顯示特定資料欄，以及僅顯示符合特定條件的資料列。

`SELECT` 陳述式的一般形式如下。

```
SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;
```

**Topics**
+ [

## 選取資料表中的所有資料
](#getting-started.dml.read.all)
+ [

## 選取欄的子集
](#getting-started.dml.read.columns)
+ [

## 選取資料列的子集
](#getting-started.dml.read.rows)

## 選取資料表中的所有資料
<a name="getting-started.dml.read.all"></a>

最簡單的`SELECT`陳述式形式會傳回資料表中的所有資料。

**重要**  
 在生產環境中，執行此命令通常不是最佳實務，因為它會傳回資料表中的所有資料。

**若要選取資料表的所有資料**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 執行下列查詢。

   ```
   SELECT * FROM catalog.book_awards ;
   ```

   針對 使用萬用字元 `*` () 會`column_list`選取所有資料欄。陳述式的輸出如下所示。

   ```
    year | award            | category    | rank | author             | book_title            | publisher
   ------+------------------+-------------+------+--------------------+-----------------------+---------------
    2020 |             Wolf | Non-Fiction |    1 |        Wang Xiulan |      History of Ideas |  AnyPublisher
    2020 |             Wolf | Non-Fiction |    2 | Ana Carolina Silva |         Science Today | SomePublisher
    2020 |             Wolf | Non-Fiction |    3 |  Shirley Rodriguez | The Future of Sea Ice |  AnyPublisher
    2020 | Kwesi Manu Prize |     Fiction |    1 |         Akua Mansa |     Where did you go? | SomePublisher
    2020 | Kwesi Manu Prize |     Fiction |    2 |        John Stiles |             Yesterday | Example Books
    2020 | Kwesi Manu Prize |     Fiction |    3 |         Nikki Wolf | Moving to the Chateau |  AnyPublisher
    2020 |      Richard Roe |     Fiction |    1 |  Alejandro Rosalez |           Long Summer | SomePublisher
    2020 |      Richard Roe |     Fiction |    2 |        Arnav Desai |               The Key | Example Books
    2020 |      Richard Roe |     Fiction |    3 |      Mateo Jackson |      Inside the Whale |  AnyPublisher
   ```

## 選取欄的子集
<a name="getting-started.dml.read.columns"></a>

**查詢欄的子集**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 若要僅擷取 `award`、 `category`和 `year`資料欄，請執行下列查詢。

   ```
   SELECT award, category, year FROM catalog.book_awards ;
   ```

   輸出僅包含`SELECT`依陳述式中所列順序列出的指定資料欄。

   ```
    award            | category    | year
   ------------------+-------------+------
                Wolf | Non-Fiction | 2020
                Wolf | Non-Fiction | 2020
                Wolf | Non-Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
    Kwesi Manu Prize |     Fiction | 2020
         Richard Roe |     Fiction | 2020
         Richard Roe |     Fiction | 2020
         Richard Roe |     Fiction | 2020
   ```

## 選取資料列的子集
<a name="getting-started.dml.read.rows"></a>

查詢大型資料集時，您可能只想要符合特定條件的記錄。若要這樣做，您可以將 `WHERE`子句附加到`SELECT`陳述式的結尾。

**查詢資料列子集**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 若要僅擷取指定年份獎勵的記錄，請執行下列查詢。

   ```
   SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Wolf' ;
   ```

   上述`SELECT`陳述式會傳回下列輸出。

   ```
    year | award | category    | rank | author             | book_title            | publisher
   ------+-------+-------------+------+--------------------+-----------------------+---------------
    2020 |  Wolf | Non-Fiction |    1 |        Wang Xiulan |      History of Ideas |  AnyPublisher
    2020 |  Wolf | Non-Fiction |    2 | Ana Carolina Silva |         Science Today | SomePublisher
    2020 |  Wolf | Non-Fiction |    3 |  Shirley Rodriguez | The Future of Sea Ice |  AnyPublisher
   ```

### 了解 `WHERE`子句
<a name="getting-started.dml.where"></a>

`WHERE` 子句用於篩選資料，並僅傳回符合指定條件的資料。指定的條件可以是簡單條件或複合條件。

**如何在 `WHERE`子句中使用條件**
+ 簡單條件 – 單一資料欄。

  ```
  WHERE column_name=value
  ```

  如果符合下列任一條件，您可以在 `WHERE`子句中使用簡單的條件：
  + 資料欄是資料表的唯一分割區索引鍵資料欄。
  + 您可以在 `WHERE`子句中的 條件`ALLOW FILTERING`之後新增 。

    請注意，使用 `ALLOW FILTERING`可能會導致效能不一致，特別是對於大型和多分割區資料表。
+ 複合條件 – 由 連接的多個簡單條件`AND`。

  ```
  WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...
  ```

  如果符合下列任一條件，您可以在 `WHERE`子句中使用複合條件：
  + 您可以在 `WHERE`子句中使用的資料欄需要包含資料表分割區索引鍵中所有或一部分的資料欄。如果只想在 `WHERE`子句中使用資料欄的子集，您必須從左到右包含一組連續的分割區索引鍵資料欄，從分割區索引鍵的前導資料欄開始。例如，如果分割區索引鍵資料欄是 `year`、 `month``award`，則您可以在 `WHERE`子句中使用下列資料欄：
    + `year`
    + `year` 和 `month`
    + `year` AND `month` 和 `award`
  + 您可以在 `WHERE`子句中的複合條件`ALLOW FILTERING`之後新增 ，如下列範例所示。

    ```
    SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;
    ```

    請注意，使用 `ALLOW FILTERING`可能會導致效能不一致，特別是對於大型和多分割區資料表。

### 試試看
<a name="getting-started.dml.try"></a>

建立您自己的 CQL 查詢，從`book_awards`資料表尋找下列項目：
+ 尋找 2020 Wolf 獎勵的得主，並顯示依排名排序的書名和作者。
+ 顯示 2020 年所有獎勵的第一個得主，並顯示書籍標題和獎勵名稱。

# 使用 CQL 更新 Amazon Keyspaces 資料表中的資料
<a name="getting-started.dml.update"></a>

若要更新`book_awards`資料表中的資料，請使用 `UPDATE`陳述式。

`UPDATE` 陳述式的一般形式如下。

```
UPDATE table_name SET column_name=new_value WHERE primary_key=value ;
```

**提示**  
您可以使用逗號分隔的 `column_names`和 值清單來更新多個資料欄，如下列範例所示。  

  ```
  UPDATE my_table SET col1='new_value_1', col2='new_value2' WHERE col3='1' ;
  ```
如果主索引鍵是由多個資料欄組成，則所有主索引鍵資料欄及其值都必須包含在 `WHERE`子句中。
您無法更新主索引鍵中的任何資料欄，因為這會變更記錄的主索引鍵。

**更新單一儲存格**  
使用您的`book_awards`資料表，為 2020 年非小說 Wolf 獎勵的得主變更發佈者的名稱。

```
UPDATE book_awards SET publisher='new Books' WHERE year = 2020 AND award='Wolf' AND category='Non-Fiction' AND rank=1;
```

確認發佈者現在是 `new Books`。

```
SELECT * FROM book_awards WHERE year = 2020 AND award='Wolf' AND category='Non-Fiction' AND rank=1;
```

陳述式應傳回下列輸出。

```
 year | award | category    | rank | author      | book_title       | publisher
------+-------+-------------+------+-------------+------------------+-----------
 2020 |  Wolf | Non-Fiction |    1 | Wang Xiulan | History of Ideas | new Books
```

## 試試看
<a name="getting-started.dml.update.try"></a>

**進階：**2020 年虛構「Kwezi Manu Prize」的獲勝者已變更其名稱。更新此記錄，將名稱變更為 `'Akua Mansa-House'`。

# 使用 CQL `DELETE`陳述式從資料表刪除資料
<a name="getting-started.dml.delete"></a>

若要刪除`book_awards`資料表中的資料，請使用 `DELETE`陳述式。

您可以從資料列或分割區刪除資料。刪除資料時請小心，因為刪除是不可復原的。

從資料表刪除一列或所有資料列並不會刪除資料表。因此，您可以將資料重新填入其中。刪除資料表會刪除資料表及其中的所有資料。若要再次使用資料表，您必須重新建立資料表並將其新增資料。刪除金鑰空間會刪除金鑰空間及其中的所有資料表。若要使用 金鑰空間和資料表，您必須重新建立它們，然後將資料填入它們。您可以使用 Amazon Keyspaces Point-in-time(PITR) 復原來協助還原已刪除的資料表，進一步了解 [使用 point-in-time復原來備份和還原資料](PointInTimeRecovery.md) 。若要了解如何還原已啟用 PITR 的已刪除資料表，請參閱 [使用 Amazon Keyspaces PITR 還原已刪除的資料表](restoredeleted.md)。

## 刪除儲存格
<a name="getting-started.dml.delete-cell"></a>

從資料列刪除資料欄會從指定的儲存格移除資料。當您使用`SELECT`陳述式顯示該資料欄時，資料會顯示為 *null*，但 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 的存留時間 (TTL) 過期資料 （適用於 Apache Cassandra)](TTL.md)。

# 在 Amazon Keyspaces 中刪除資料表
<a name="getting-started.clean-up.table"></a>

為了避免對您不需要的資料表和資料收費，請刪除您未使用的所有資料表。當您刪除資料表時，資料表及其資料會遭到刪除，而且您會停止產生這些資料表的費用。不過，金鑰空間仍會保留。當您刪除金鑰空間時，金鑰空間及其所有資料表都會遭到刪除，並停止產生費用。

您可以使用 主控台、CQL 或 刪除資料表 AWS CLI。當您刪除資料表時，資料表及其所有資料都會遭到刪除。

## 使用主控台
<a name="getting-started.clean-up.table.con"></a>

下列程序會使用 刪除資料表及其所有資料 AWS 管理主控台。

**使用主控台刪除資料表**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) 開啟 Amazon Keyspaces 主控台。

1. 在導覽窗格中，選擇 **Tables** (資料表)。

1. 選擇您要刪除之每個資料表名稱左側的方塊。

1. 選擇 **刪除**。

1. 在**刪除資料表**畫面上，**Delete**在方塊中輸入 。然後，選擇**刪除資料表**。

1. 若要驗證資料表是否已刪除，請在導覽窗格中選擇**資料表**，並確認`book_awards`資料表不再列出。

## 使用 CQL
<a name="getting-started.clean-up.table.cql"></a>

下列程序會使用 CQL 刪除資料表及其所有資料。

**使用 CQL 刪除資料表**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 輸入下列陳述式來刪除資料表。

   ```
   DROP TABLE IF EXISTS catalog.book_awards ;
   ```

1. 確認您的資料表已刪除。

   ```
   SELECT * FROM system_schema.tables WHERE keyspace_name = 'catalog' ;
   ```

   輸出看起來應該像這樣。請注意，這可能需要一些時間，因此如果您沒有看到此結果，請在一分鐘後重新執行陳述式。

   ```
   keyspace_name | table_name | bloom_filter_fp_chance | caching | cdc | comment | compaction | compression | crc_check_chance | dclocal_read_repair_chance | default_time_to_live | extensions | flags | gc_grace_seconds | id | max_index_interval | memtable_flush_period_in_ms | min_index_interval | read_repair_chance | speculative_retry
   ---------------+------------+------------------------+---------+-----+---------+------------+-------------+------------------+----------------------------+----------------------+------------+-------+------------------+----+--------------------+-----------------------------+--------------------+--------------------+-------------------
   
   (0 rows)
   ```

## 使用 AWS CLI
<a name="getting-started.clean-up.table.cli"></a>

下列程序會使用 刪除資料表及其所有資料 AWS CLI。

**使用 刪除資料表 AWS CLI**

1. 開啟 CloudShell 

1. 使用下列陳述式刪除資料表。

   ```
   aws keyspaces delete-table --keyspace-name 'catalog' --table-name 'book_awards'
   ```

1. 若要確認您的資料表已刪除，您可以列出金鑰空間中的所有資料表。

   ```
   aws keyspaces list-tables --keyspace-name 'catalog'
   ```

   您應該會看到下列輸出。請注意，此非同步操作可能需要一些時間。稍後再次重新執行命令，以確認資料表已刪除。

   ```
   {
       "tables": []
   }
   ```

# 在 Amazon Keyspaces 中刪除金鑰空間
<a name="getting-started.clean-up.keyspace"></a>

若要避免收取金鑰空間的費用，請刪除您未使用的所有金鑰空間。當您刪除金鑰空間時，金鑰空間及其所有資料表都會遭到刪除，並停止產生費用。

您可以使用 主控台、CQL 或 刪除金鑰空間 AWS CLI。

## 使用主控台
<a name="getting-started.clean-up.keyspace.con"></a>

下列程序會使用主控台刪除金鑰空間及其所有資料表和資料。

**使用主控台刪除金鑰空間**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) 開啟 Amazon Keyspaces 主控台。

1. 在導覽窗格中，選擇 **金鑰空間**。

1. 選擇您要刪除之每個金鑰空間名稱左側的方塊。

1. 選擇 **刪除**。

1. 在**刪除鍵空間**畫面上，**Delete**在方塊中輸入 。然後，選擇**刪除金鑰空間**。

1. 若要確認金鑰空間`catalog`已刪除，請在導覽窗格中選擇**金鑰空間**，並確認它不再列出。由於您已刪除其金鑰空間，`book_awards`資料表下的**資料表**也不應列出。

## 使用 CQL
<a name="getting-started.clean-up.keyspace.cql"></a>

下列程序會使用 CQL 刪除金鑰空間及其所有資料表和資料。

**使用 CQL 刪除金鑰空間**

1. 使用下列命令開啟 AWS CloudShell 並連線至 Amazon Keyspaces。請務必使用您自己的區域更新 *us-east-1*。

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

1. 輸入下列陳述式來刪除您的金鑰空間。

   ```
   DROP KEYSPACE IF EXISTS catalog ;
   ```

1. 確認您的 金鑰空間已刪除。

   ```
   SELECT * from system_schema.keyspaces ;
   ```

   不應列出您的 金鑰空間。請注意，由於這是非同步操作，因此在刪除金鑰空間之前，可能會有延遲。刪除金鑰空間後，陳述式的輸出應如下所示。

   ```
   keyspace_name           | durable_writes | replication
   -------------------------+----------------+-------------------------------------------------------------------------------------
              system_schema |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
          system_schema_mcs |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
                     system |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
    system_multiregion_info |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
   
   (4 rows)
   ```

## 使用 AWS CLI
<a name="getting-started.clean-up.keyspace.cli"></a>

下列程序會使用 刪除金鑰空間及其所有資料表和資料 AWS CLI。

**使用 刪除金鑰空間 AWS CLI**

1. 開啟 AWS CloudShell 

1. 輸入下列陳述式來刪除您的金鑰空間。

   ```
   aws keyspaces delete-keyspace --keyspace-name 'catalog' 
   ```

1. 確認您的 金鑰空間已刪除。

   ```
   aws keyspaces list-keyspaces
   ```

   此陳述式的輸出看起來應該與此類似，並且只列出系統金鑰空間。請注意，由於這是非同步操作，因此在刪除您的金鑰空間之前，可能會有延遲。

   ```
   {
       "keyspaces": [
           {
               "keyspaceName": "system_schema",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system_schema/",
               "replicationStrategy": "SINGLE_REGION"
           },
           {
               "keyspaceName": "system_schema_mcs",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system_schema_mcs/",
               "replicationStrategy": "SINGLE_REGION"
           },
           {
               "keyspaceName": "system",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system/",
               "replicationStrategy": "SINGLE_REGION"
           },
           {
               "keyspaceName": "system_multiregion_info",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system_multiregion_info/",
               "replicationStrategy": "SINGLE_REGION"
           }
       ]
   }
   ```