

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Keyspaces の DDL ステートメント (データ定義言語)
<a name="cql.ddl"></a>

*データ定義言語* (DDL) は、キー空間やテーブルなどの Amazon Keyspaces (Apache Cassandra 向け) のデータ構造を管理するために使用する一連の Cassandra クエリ言語 (CQL) ステートメントです。DDL を使用して、これらのデータ構造の作成、作成後の変更、および、使用しなくなったときの削除を行います。Amazon Keyspaces では DDL オペレーションが非同期的に実行されます。非同期操作が完了したことを確認する方法の詳細については、「[キースペースとテーブルの非同期的な作成および削除](functional-differences.md#functional-differences.table-keyspace-management)」を参照してください。

 次の DDL ステートメントがサポートされています。
+  [CREATE KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.create) 
+  [ALTER KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.alter) 
+  [DROP KEYSPACE](cql.ddl.keyspace.md#cql.ddl.keyspace.drop) 
+  [使用](cql.ddl.keyspace.md#cql.ddl.keyspace.use) 
+  [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) 
+  [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter) 
+  [RESTORE TABLE](cql.ddl.table.md#cql.ddl.table.restore) 
+  [DROP TABLE](cql.ddl.table.md#cql.ddl.table.drop) 
+  [タイプの作成](cql.ddl.type.md#cql.ddl.type.create) 
+  [ドロップタイプ](cql.ddl.type.md#cql.ddl.type.drop) 

**Topics**
+ [Keyspaces](cql.ddl.keyspace.md)
+ [テーブル](cql.ddl.table.md)
+ [ユーザー定義タイプ (UDTs)](cql.ddl.type.md)

# Keyspaces
<a name="cql.ddl.keyspace"></a>

*キー空間*は、1 つ以上のアプリケーションに関係している関連テーブルをグループ化するものです。リレーショナルデータベース管理システム (RDBMS) に関しては、キー空間が、データベース、テーブルスペース、または類似の構造とほぼ同じです。

**注記**  
Apache Cassandra では、キー空間により、複数のストレージノードにおけるデータのレプリケーション方法が決まります。ただし、Amazon Keyspaces はフルマネージドサービスであり、ストレージレイヤーの詳細情報がユーザーに代わって管理されます。このため、Amazon Keyspaces の Keyspaces は論理構造のみであり、基礎となる物理ストレージとは関係ありません。

Amazon Keyspaces キー空間のクォータ制限と制約については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

**Topics**
+ [CREATE KEYSPACE　](#cql.ddl.keyspace.create)
+ [ALTER KEYSPACE](#cql.ddl.keyspace.alter)
+ [DROP KEYSPACE](#cql.ddl.keyspace.drop)
+ [使用](#cql.ddl.keyspace.use)

## CREATE KEYSPACE　
<a name="cql.ddl.keyspace.create"></a>

`CREATE KEYSPACE` ステートメントを使用して、新しいキー空間を作成します。

[**Syntax (構文)**]

```
create_keyspace_statement ::= 
    CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name
    WITH options
```

Where:
+ `keyspace_name` は作成するキー空間の名前です。
+ *options* は以下のうちの 1 つ以上です。
  + `REPLICATION` — キー空間のレプリケーション戦略を示すマップ。
    + `SingleRegionStrategy` — 単一リージョンのキー空間用。(必須)
    + `NetworkTopologyStrategy` – 少なくとも 2 つ指定します AWS リージョン。各リージョンのレプリケーション係数は 3 です。(オプション)
  + `DURABLE_WRITES` — Amazon Keyspaces への書き込みは常に耐久性があるため、このオプションは必要ありません。ただし、指定する場合は、値は `true` でなければなりません。
  + `TAGS` – 作成時にリソースにアタッチされるキー値のペアタグのリスト。(オプション)

**例**

次のようなキー空間を作成します。

```
CREATE KEYSPACE my_keyspace
    WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;
```

マルチリージョンキースペースを作成するには、 を指定`NetworkTopologyStrategy`し、少なくとも 2 つ含めます AWS リージョン。各リージョンのレプリケーション係数は 3 です。

```
CREATE KEYSPACE my_keyspace
    WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'us-east-1':'3', 'ap-southeast-1':'3','eu-west-1':'3'};
```

## ALTER KEYSPACE
<a name="cql.ddl.keyspace.alter"></a>

`ALTER KEYSPACE WITH` ステートメントは、次の*オプション*に使用できます。
+ `REPLICATION` – このオプションを使用して、キースペースに新しい AWS リージョン レプリカを追加します。新しいリージョンを単一リージョンまたはマルチリージョンのキースペースに追加できます。
+ `TAGS` – このオプションを使用して、キースペースからタグを追加または削除します。

**[Syntax]** (構文)

```
alter_keyspace_statement ::= 
    ALTER KEYSPACE keyspace_name
    WITH options
```

Where:
+ `keyspace_name` は変更するキー空間の名前です。
+ *オプション*は次のいずれかです。
  + `ADD | DROP TAGS` — キー空間で追加または削除されるキーバリューペアタグのリスト。
  + `REPLICATION` – キースペースのレプリケーション戦略を示すマップ。
    + `class`– キースペースをマルチリージョンキースペースとして`NetworkTopologyStrategy`定義します。
    + `region`– このキースペース AWS リージョン に追加の 1 つを指定します。各リージョンのレプリケーション係数は 3 です。
    + `CLIENT_SIDE_TIMESTAMPS` – デフォルトは です`DISABLED`。ステータスは にのみ変更できます`ENABLED`。

**例**

次の例に示すようにキースペースを変更してタグを追加します。

```
ALTER KEYSPACE my_keyspace ADD TAGS {'key1':'val1', 'key2':'val2'};
```

マルチリージョンキースペースに 3 番目のリージョンを追加するには、次のステートメントを使用できます。

```
ALTER KEYSPACE my_keyspace
WITH REPLICATION = {
    'class': 'NetworkTopologyStrategy',
    'us-east-1': '3',
    'us-west-2': '3',
    'us-west-1': '3'
} AND CLIENT_SIDE_TIMESTAMPS = {'status': 'ENABLED'};
```

## DROP KEYSPACE
<a name="cql.ddl.keyspace.drop"></a>

`DROP KEYSPACE` ステートメントを使用してキー空間(テーブルなどあらゆるコンテンツを含む)を削除します。

[**Syntax (構文)**]

```
drop_keyspace_statement ::= 
    DROP KEYSPACE [ IF EXISTS ] keyspace_name
```

Where:
+ *keyspace\$1name* は、削除 (ドロップ) されるキー空間の名前です。

**例**

```
DROP KEYSPACE my_keyspace;
```

## 使用
<a name="cql.ddl.keyspace.use"></a>

`USE` ステートメントを使用して、現在のキースペースを定義します。これにより、キースペースプレフィックスを含む完全修飾名を使用せずに、テーブルやタイプなど、特定のキースペースにバインドされたオブジェクトを参照できます。

**[Syntax]** (構文)

```
use_statement ::= 
    USE keyspace_name
```

Where:
+ *keyspace\$1name* は、使用するキースペースの名前です。

**例**

```
USE my_keyspace;
```

# テーブル
<a name="cql.ddl.table"></a>

*テーブル*は Amazon Keyspaces の主要なデータ構造です。テーブル内のデータは行と列で編成されます。これらの列のサブセットは、パーティションキーの指定によるパーティショニング (および最終的にはデータ配置) を決定するために使用されます。

別の列セットをクラスタリング列に定義できます。つまり、クエリ実行に述語として盛り込めるということです。

デフォルトでは、新規のテーブルは*オンデマンド*のスループットキャパシティがある状態で作成されます。新規のテーブルと既存のテーブルのキャパシティモードは変更できます。読み込み/書き込みのキャパシティスループットモードの詳細については、「[Amazon Keyspaces で読み取り/書き込みのキャパシティモードを設定する](ReadWriteCapacityMode.md)」を参照してください。

プロビジョンドモードのテーブルでは、オプションの `AUTOSCALING_SETTINGS` を設定できます。Amazon Keyspaces の自動スケーリングと使用可能なオプションの詳細については、「[既存のテーブルに対して自動スケーリングを設定する](autoscaling.configureTable.md)」を参照してください。

Amazon Keyspaces テーブルのクォータ制限と制約については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

**Topics**
+ [CREATE TABLE](#cql.ddl.table.create)
+ [ALTER TABLE](#cql.ddl.table.alter)
+ [RESTORE TABLE](#cql.ddl.table.restore)
+ [DROP TABLE](#cql.ddl.table.drop)

## CREATE TABLE
<a name="cql.ddl.table.create"></a>

`CREATE TABLE` ステートメントを使用して新しいテーブルを作成します。

 [**Syntax (構文)**]

```
create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_name
    '('
        column_definition 
        ( ',' column_definition )*
        [ ',' PRIMARY KEY '(' primary_key ')' ]
    ')' [ WITH table_options ]

column_definition      ::=  column_name cql_type [ FROZEN ][ STATIC ][ PRIMARY KEY]

primary_key            ::=  partition_key [ ',' clustering_columns ]

partition_key          ::=  column_name
                              | '(' column_name ( ',' column_name )* ')'

clustering_columns     ::=  column_name ( ',' column_name )*

table_options          ::=  [table_options]
                              | CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ]
                              | cdc
                              | CUSTOM_PROPERTIES
                              | AUTOSCALING_SETTINGS
                              | default_time_to_live
                              | TAGS

clustering_order       ::=  column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*
```

Where:
+ `table_name` は作成するテーブルの名前です。完全修飾名には、キースペースプレフィックスが含まれます。または、keyspace ステートメントを使用して現在の`USE`キースペースを設定することもできます。
+ `column_definition` は以下で構成されます。
  +  *`column_name`* – 列の名前。
  + `cql_type` — Amazon Keyspaces のデータ型 (「[データ型](cql.elements.md#cql.data-types)」を参照)。
  + `FROZEN` – ユーザー定義またはタイプ `collection` (、、 など`SET``MAP`) `LIST`のこの列をフリーズとして指定します。*フリーズ*コレクションは 1 つの不変の値にシリアル化され、`BLOB`と同様に扱われます。詳細については、「[コレクション型](cql.elements.md#cql.data-types.collection)」を参照してください。
  + `STATIC` — この列を静的として指定します。静的列には、同じパーティション内のすべての行で共有される値が保存されます。
  + `PRIMARY KEY` — この列をテーブルのプライマリキーとして指定します。
+ `primary_key` は以下で構成されます。
  + `partition_key`
  + `clustering_columns`
+ `partition_key`:
  + パーティションキーは、1 つの列である場合もあれば、2 つ以上の列で構成される複合値である場合もあります。プライマリキーのパーティションキー部分は必須で、これによって Amazon Keyspaces におけるデータの保存方法が決まります。
+ `clustering_columns`:
  + プライマリキーのオプションのクラスタリング列部分は、各パーティションにおけるデータのクラスター処理方法とソート方法を決定するものです。
+ `table_options` は以下で構成されます。
  + *`CLUSTERING ORDER BY`* — テーブルのデフォルトの CLUSTERING ORDER は、`ASC` (昇順) ソート方向のクラスタリングキーで構成されます。デフォルトのソート動作をオーバーライドするには、この値を指定します。
  +  *`cdc`* – Amazon Keyspaces がテーブルの変更データキャプチャ (CDC) ストリームを作成するかどうかを指定するブール値。デフォルトは `false` です。ストリームを有効にする`view type`ときに を指定するには、 `cdc_specification`で `CUSTOM_PROPERTIES` を設定します。
  +  *`CUSTOM_PROPERTIES`* — Amazon Keyspaces に固有の設定のマップ。
    +  `capacity_mode`: テーブルの読み取り/書き込みスループットキャパシティモードを指定します。オプションは `throughput_mode:PAY_PER_REQUEST` と `throughput_mode:PROVISIONED` です。プロビジョンドキャパシティモードには入力として `read_capacity_units` と `write_capacity_units` が必要です。デフォルトは `throughput_mode:PAY_PER_REQUEST` です。
    +  `cdc_specification`: CDC ストリーム`view_type`の を指定します。オプションは以下のとおりです。
      + `NEW_AND_OLD_IMAGES` – 変更前と変更後の両方のバージョンの行。これがデフォルトです。
      + `NEW_IMAGE` – 変更後の行のバージョン。
      + `OLD_IMAGE` – 変更前の行のバージョン。
      + `KEYS_ONLY` – 変更された行のパーティションキーとクラスタリングキー。

      CDC ストリームの詳細については、「」を参照してください[Amazon Keyspaces での変更データキャプチャ (CDC) ストリームの使用](cdc.md)。コード例については、[Amazon Keyspaces で新しいテーブルを作成するときに CDC ストリームを有効にする](keyspaces-enable-cdc-new-table.md) を参照してください。
    +  `client_side_timestamps`: テーブルに対してクライアント側のタイムスタンプを有効にするか無効にするかを指定します。オプションは `{'status': 'enabled'}` と `{'status': 'disabled'}` です。指定しない場合、デフォルトの `status:disabled` になります。クライアント側のタイムスタンプをテーブルで有効にした後は、この設定を無効にすることはできません。
    +  `encryption_specification`: 保管データ暗号化の暗号化オプションを指定します。指定しない場合、デフォルトの `encryption_type:AWS_OWNED_KMS_KEY` になります。暗号化オプションのカスタマーマネージドキーでは、入力として Amazon リソースネーム (ARN) 形式の AWS KMS キーが必要です: `kms_key_identifier:ARN`: `kms_key_identifier:ARN`。
    +  `point_in_time_recovery`: テーブルに対してポイントインタイムリストアを有効にするか無効にするかを指定します。オプションは `status:enabled` と `status:disabled` です。指定しない場合、デフォルトの `status:disabled` になります。
    + `replica_updates`: マルチリージョンテーブルの AWS リージョン固有の設定を指定します。マルチリージョンテーブルの場合、テーブルの読み取りキャパシティの設定を AWS リージョンごとに変えることができます。その場合は、次のパラメータを設定します。詳細な説明と例については、[Amazon Keyspaces で自動スケーリングが有効なプロビジョンドモードのマルチリージョンテーブルを作成する](tables-mrr-create-provisioned.md) を参照してください。
      + `region` – 次の設定のテーブルレプリカ AWS リージョン の 。
        + `read_capacity_units`
    +  `TTL`: テーブルの 有効期限 (TTL) カスタム設定を有効にします。有効にする場合は、`status:enabled` を使用します。デフォルトは `status:disabled` です。`TTL` を有効にした後、そのテーブルに対してそれを無効にすることはできません。
  + `AUTOSCALING_SETTINGS` には、プロビジョンドモードのテーブルに対する次のオプションの設定が含まれています。詳細な説明と例については、[自動スケーリングを有効にして新規テーブルを作成する](autoscaling.createTable.md) を参照してください。
    + `provisioned_write_capacity_autoscaling_update`:
      + `autoscaling_disabled` – 書き込みキャパシティの自動スケーリングを有効にするには、値を `false` に設定します。デフォルトは `true` です。(オプション)
      + `minimum_units` – テーブルで常に処理できるようにしておくべき最低限の書き込みスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
      + `maximum_units` – テーブルで常に処理できるようにしておくべき最大限の書き込みスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
      + `scaling_policy` – Amazon Keyspaces はターゲット追跡ポリシーに対応しています。自動スケーリングのターゲットは、テーブルのプロビジョニング済みの書き込みキャパシティです。
        + `target_tracking_scaling_policy_configuration` – ターゲット追跡ポリシーを定義するには、目標 (ターゲット) 値を定義する必要があります。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。
          + `target_value` – テーブルの目標とする使用率。Amazon Keyspaces の自動スケーリングでは、プロビジョニング済みのキャパシティに占める実際のキャパシティ消費の割合が、この値と同じか近い値で維持されます。`target_value` をパーセンテージとして定義します。20～90 の倍精度浮動小数点数。(必須)
          + `scale_in_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールインアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
          + `scale_out_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールアウトアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
          + `disable_scale_in`: テーブルに対して `scale-in` が無効か有効かを指定する`boolean`。このパラメータは、デフォルトでは無効になっています。`scale-in` を有効にするには、`boolean` 値を `FALSE` に設定します。その場合は、テーブルのキャパシティが自動的にスケールダウンされます。(オプション) 
    + `provisioned_read_capacity_autoscaling_update`:
      + `autoscaling_disabled` – 読み取りキャパシティの自動スケーリングを有効にするには、値を `false` に設定します。デフォルトは `true` です。(オプション)
      + `minimum_units` – テーブルで常に処理できるようにしておくべき最低限のスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
      + `maximum_units` – テーブルで常に処理できるようにしておくべき最大限のスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
      + `scaling_policy` – Amazon Keyspaces はターゲット追跡ポリシーに対応しています。自動スケーリングのターゲットは、テーブルのプロビジョニング済みの読み取りキャパシティです。
        + `target_tracking_scaling_policy_configuration` – ターゲット追跡ポリシーを定義するには、目標 (ターゲット) 値を定義する必要があります。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。
          + `target_value` – テーブルの目標とする使用率。Amazon Keyspaces の自動スケーリングでは、プロビジョニング済みのキャパシティに占める実際のキャパシティ消費の割合が、この値と同じか近い値で維持されます。`target_value` をパーセンテージとして定義します。20～90 の倍精度浮動小数点数。(必須)
          + `scale_in_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールインアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
          + `scale_out_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールアウトアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
          + `disable_scale_in`: テーブルに対して `scale-in` が無効か有効かを指定する`boolean`。このパラメータは、デフォルトでは無効になっています。`scale-in` を有効にするには、`boolean` 値を `FALSE` に設定します。その場合は、テーブルのキャパシティが自動的にスケールダウンされます。(オプション) 
    + `replica_updates`: マルチリージョンテーブルの AWS リージョン 特定の自動スケーリング設定を指定します。マルチリージョンテーブルの場合、テーブルの読み取りキャパシティの設定を AWS リージョンごとに変えることができます。その場合は、次のパラメータを設定します。詳細な説明と例については、[Amazon Keyspaces でマルチリージョンテーブルのプロビジョンドキャパシティと自動スケーリングの設定を更新する](tables-mrr-autoscaling.md) を参照してください。
      + `region` – 次の設定のテーブルレプリカ AWS リージョン の 。
        + `provisioned_read_capacity_autoscaling_update`
          + `autoscaling_disabled` – テーブルの読み取りキャパシティの自動スケーリングを有効にするには、値を `false` に設定します。デフォルトは `true` です。(オプション) 
**注記**  
マルチリージョンテーブルの自動スケーリングは、そのテーブルのすべてのレプリカに対して有効または無効にする必要があります。
          + `minimum_units` – テーブルで常に処理できるようにしておくべき最低限の読み取りスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
          + `maximum_units` – テーブルで常に処理できるようにしておくべき最大限の読み取りスループット。1 から、アカウントの秒単位のスループット上限 (デフォルトは 40,000) までの値を指定する必要があります。
          + `scaling_policy` – Amazon Keyspaces はターゲット追跡ポリシーに対応しています。自動スケーリングのターゲットは、テーブルのプロビジョニング済みの読み取りキャパシティです。
            + `target_tracking_scaling_policy_configuration` – ターゲット追跡ポリシーを定義するには、目標 (ターゲット) 値を定義する必要があります。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。
              + `target_value` – テーブルの目標とする使用率。Amazon Keyspaces の自動スケーリングは、プロビジョニング済みの読み取りキャパシティに占める実際の読み取りキャパシティ消費の割合が、この値と同じか近い値で維持されます。`target_value` をパーセンテージとして定義します。20～90 の倍精度浮動小数点数。(必須)
              + `scale_in_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールインアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
              + `scale_out_cooldown` – スケーリングアクティビティ間のクールダウン期間 (秒数)。この期間を使って、別のスケールアウトアクティビティが開始する前にテーブルを安定させます。値を指定しない場合、デフォルト値は 0 です。(オプション)
              + `disable_scale_in`: テーブルに対して `scale-in` が無効か有効かを指定する`boolean`。このパラメータは、デフォルトでは無効になっています。`scale-in` を有効にするには、`boolean` 値を `FALSE` に設定します。つまり、テーブルの読み取りキャパシティが自動的にスケールダウンされます。(オプション) 
  + `default_time_to_live` — テーブルのデフォルトの有効期限 (TTL) 設定 (秒)。
  + `TAGS` – 作成時にリソースにアタッチされるキーバリューペアタグのリスト。
  + `clustering_order` は以下で構成されます。
    +  *`column_name`* – 列の名前。
    +  *`ASC | DESC`* — 昇順修飾子 (`ASC`) または降順修飾子 (`DESC`) を設定します。指定しない場合、デフォルトの順序 ASC になります。

**例**

```
CREATE TABLE IF NOT EXISTS my_keyspace.my_table (
                                            id text,
                                            name text,
                                            region text,
                                            division text,
                                            project text,
                                            role text,
                                            pay_scale int,
                                            vacation_hrs float,
                                            manager_id text,
                                            PRIMARY KEY (id,division))
                                            WITH CUSTOM_PROPERTIES={
                                                'capacity_mode':{
                                                        'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20
                                                    },
                                                'point_in_time_recovery':{'status': 'enabled'},
                                                'encryption_specification':{
                                                        'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                                                        'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'
                                                    }
                                            }
                                            AND CLUSTERING ORDER BY (division ASC) 
                                            AND TAGS={'key1':'val1', 'key2':'val2'}
                                            AND default_time_to_live = 3024000;
```

クラスタリング列を使用しているテーブルでは、テーブル定義で非クラスタリング列を静的として宣言できます。静的列の詳細については、「[Amazon Keyspaces の静的列のキャパシティ消費量を推定する](static-columns.md)」を参照してください。

**例**

```
CREATE TABLE my_keyspace.my_table (
                                            id int,
                                            name text,
                                            region text,
                                            division text,
                                            project text STATIC,
                                            PRIMARY KEY (id,division));
```

ユーザー定義タイプ (UDT) を使用する列を使用してテーブルを作成できます。例の最初のステートメントは タイプを作成し、2 番目のステートメントは タイプを使用する列を持つテーブルを作成します。

**例**

```
CREATE TYPE my_keyspace."udt""N@ME" (my_field int);
CREATE TABLE my_keyspace.my_table (my_col1 int pri key, my_col2 "udt""N@ME");
```

## ALTER TABLE
<a name="cql.ddl.table.alter"></a>

`ALTER TABLE` ステートメントを使用して、新しい列の追加、タグの追加、テーブルのカスタムプロパティの変更を行います。

**[Syntax]** (構文)

```
alter_table_statement ::=  ALTER TABLE table_name    
 
        [ ADD ( column_definition | column_definition_list)  ] 
        [[ADD | DROP] TAGS {'key1':'val1', 'key2':'val2'}]            
        [ WITH table_options [ , ... ] ] ;
        
column_definition      ::=  column_name cql_type
```

Where:
+ `table_name` は変更するテーブルの名前です。
+ `column_definition` は追加する列の名前とデータ型です。
+ `column_definition_list` は括弧内に配置された列のリストでカンマで区切られています。
+ `table_options` は以下で構成されます。
  + `AUTOSCALING_SETTINGS` には、プロビジョニング済みのテーブルに対するオプションの自動スケーリング設定が含まれています。構文と詳しい説明については、「[CREATE TABLE](#cql.ddl.table.create)」を参照してください。例については「[既存のテーブルに対して自動スケーリングを設定する](autoscaling.configureTable.md)」を参照してください。
  +  *`cdc`* – Amazon Keyspaces がテーブルの変更データキャプチャ (CDC) ストリームを作成するかどうかを指定するブール値。デフォルトは `false` です。ストリームを有効にする`view type`ときに を指定するには、 `cdc_specification`で `CUSTOM_PROPERTIES` を設定します。
  +  *`CUSTOM_PROPERTIES`* — Amazon Keyspaces に固有の設定のマップ。
    +  `capacity_mode`: テーブルの読み取り/書き込みスループットキャパシティモードを指定します。オプションは `throughput_mode:PAY_PER_REQUEST` と `throughput_mode:PROVISIONED` です。プロビジョンドキャパシティモードには入力として `read_capacity_units` と `write_capacity_units` が必要です。デフォルトは `throughput_mode:PAY_PER_REQUEST` です。
    +  `cdc_specification`: CDC ストリーム`view_type`の を指定します。オプションは以下のとおりです。
      + `NEW_AND_OLD_IMAGES` – 変更前と変更後の両方のバージョンの行。これがデフォルトです。
      + `NEW_IMAGE` – 変更後の行のバージョン。
      + `OLD_IMAGE` – 変更前の行のバージョン。
      + `KEYS_ONLY` – 変更された行のパーティションキーとクラスタリングキー。

      CDC ストリームの詳細については、「」を参照してください[Amazon Keyspaces での変更データキャプチャ (CDC) ストリームの使用](cdc.md)。コード例については、[Amazon Keyspaces で既存のテーブルの CDC ストリームを有効にする](keyspaces-enable-cdc-alter-table.md) を参照してください。
    +  `client_side_timestamps`: テーブルに対してクライアント側のタイムスタンプを有効にするか無効にするかを指定します。オプションは `{'status': 'enabled'}` と `{'status': 'disabled'}` です。指定しない場合、デフォルトの `status:disabled` になります。クライアント側のタイムスタンプをテーブルで有効にした後は、この設定を無効にすることはできません。
    +  `encryption_specification`: 保管データ暗号化の暗号化オプションを指定します。オプションは `encryption_type:AWS_OWNED_KMS_KEY` と `encryption_type:CUSTOMER_MANAGED_KMS_KEY` です。暗号化オプションのカスタマーマネージドキーには、入力として Amazon リソースネーム (ARN) 形式の AWS KMS キーが必要です: `kms_key_identifier:ARN`。
    +  `point_in_time_recovery`: テーブルに対してポイントインタイムリストアを有効にするか無効にするかを指定します。オプションは `status:enabled` と `status:disabled` です。デフォルトは `status:disabled` です。
    + `replica_updates`: マルチリージョンテーブルの特定 AWS リージョン の設定を指定します。マルチリージョンテーブルの場合、テーブルの読み取りキャパシティの設定を AWS リージョンごとに変えることができます。その場合は、次のパラメータを設定します。詳細な説明と例については、[Amazon Keyspaces でマルチリージョンテーブルのプロビジョンドキャパシティと自動スケーリングの設定を更新する](tables-mrr-autoscaling.md) を参照してください。
      + `region` – 次の設定のテーブルレプリカ AWS リージョン の 。
        + `read_capacity_units` 
    +  `ttl`: テーブルの 有効期限 (TTL) カスタム設定を有効にします。有効にする場合は、`status:enabled` を使用します。デフォルトは `status:disabled` です。`ttl` を有効にした後、そのテーブルに対してそれを無効にすることはできません。
+ `default_time_to_live`: テーブルのデフォルトの有効期限 (TTL) 設定 (秒)。
+ `TAGS` はリソースにアタッチされるキーバリューペアタグのリストです。

**注記**  
ALTER TABLE では、1 つのカスタムプロパティしか変更できません。同一ステートメント内で複数の ALTER TABLE コマンドを組み合わせることはできません。

**例**

次のステートメントは、既存のテーブルに列を追加する方法を示しています。

```
ALTER TABLE mykeyspace.mytable ADD (ID int);
```

このステートメントは、既存のテーブルに 2 つのコレクション列を追加する方法を示します。
+ ネストされたフリーズコレクションを含むフリーズコレクション列 `col_frozen_list`
+ ネストされたフリーズコレクションを含む非フリーズコレクション列 `col_map`

```
ALTER TABLE my_Table ADD(col_frozen_list FROZEN<LIST<FROZEN<SET<TEXT>>>>, col_map MAP<INT, FROZEN<SET<INT>>>);
```

次の例は、ユーザー定義タイプ (UDT) を使用する列をテーブルに追加する方法を示しています。

```
ALTER TABLE my_keyspace.my_table ADD (my_column, my_udt;);
```

テーブルのキャパシティモードを変更し、読み取りおよび書き込みのキャパシティユニットを指定するには、次のステートメントを使用します。

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};
```

次のステートメントでは、テーブルのカスタマー管理 KMS キーが指定されます。

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={     
              'encryption_specification':{ 
                      'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                      'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'     
                  } 
         };
```

テーブルのポイントインタイムリストアを有効にするには、次のステートメントを使用できます。

```
ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};
```

テーブルのデフォルトの有効期限 (TTL) 値を秒単位で設定するには、次のステートメントを使用します。

```
ALTER TABLE my_table WITH default_time_to_live = 2592000;
```

このステートメントは、テーブルのカスタムの有効期限 (TTL) 設定を有効にします。

```
ALTER TABLE mytable WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};
```

## RESTORE TABLE
<a name="cql.ddl.table.restore"></a>

`RESTORE TABLE` ステートメントを使用して、特定時点 (ポイントインタイム) にテーブルを復元 (リストア) します。このステートメントでは、テーブルでポイントインタイムリカバリを有効にする必要があります。詳細については、「[Amazon Keyspaces のポイントインタイムリカバリでデータをバックアップおよび復元する](PointInTimeRecovery.md)」を参照してください。

**[Syntax]** (構文)

```
restore_table_statement ::=  
    RESTORE TABLE restored_table_name FROM TABLE source_table_name 
                    [ WITH table_options [ , ... ] ];
```

Where:
+ `restored_table_name` は復元されたテーブルの名前です。
+ `source_table_name` はソーステーブルの名前です。
+ `table_options` は以下で構成されます。
  + `restore_timestamp` は ISO 8601 形式の復元ポイントタイムです。これが指定されない場合は、現在のタイムスタンプが使用されます。
  +  *`CUSTOM_PROPERTIES`* — Amazon Keyspaces に固有の設定のマップ。
    +  `capacity_mode`: テーブルの読み取り/書き込みスループットキャパシティモードを指定します。オプションは `throughput_mode:PAY_PER_REQUEST` と `throughput_mode:PROVISIONED` です。プロビジョンドキャパシティモードには入力として `read_capacity_units` と `write_capacity_units` が必要です。デフォルトは、ソーステーブルの現在の設定です。
    +  `encryption_specification`: 保管データ暗号化の暗号化オプションを指定します。オプションは `encryption_type:AWS_OWNED_KMS_KEY` と `encryption_type:CUSTOMER_MANAGED_KMS_KEY` です。暗号化オプションのカスタマーマネージドキーでは、入力として Amazon リソースネーム (ARN) 形式の AWS KMS キー が必要です。 `kms_key_identifier:ARN`カスタマーマネージドキーで暗号化されたテーブルを で暗号化されたテーブルに復元するには AWS 所有のキー、Amazon Keyspaces はソーステーブルの AWS KMS キーにアクセスする必要があります。
    +  `point_in_time_recovery`: テーブルに対してポイントインタイムリストアを有効にするか無効にするかを指定します。オプションは `status:enabled` と `status:disabled` です。新しいテーブルを作成する場合とは異なり、復元されたテーブルのデフォルトのステータスは `status:enabled` になります。これは設定がソーステーブルから継承されるためです。復元されたテーブルの PITR を無効にするには、`status:disabled` を明示的に設定する必要があります。
    + `replica_updates`: マルチリージョンテーブルの特定 AWS リージョン の設定を指定します。マルチリージョンテーブルの場合、テーブルの読み取りキャパシティの設定を AWS リージョンごとに変えることができます。その場合は、次のパラメータを設定します。
      + `region` – 次の設定のテーブルレプリカ AWS リージョン の 。
        + `read_capacity_units` 
  + `AUTOSCALING_SETTINGS` には、プロビジョニング済みのテーブルに対するオプションの自動スケーリング設定が含まれています。構文と詳しい説明については、「[CREATE TABLE](#cql.ddl.table.create)」を参照してください。
  + `TAGS` はリソースにアタッチされるキーバリューペアタグのリストです。

**注記**  
削除されたテーブルは、削除時にのみ復元できます。

**例**

```
RESTORE TABLE mykeyspace.mytable_restored from table mykeyspace.my_table 
WITH restore_timestamp = '2020-06-30T04:05:00+0000'
AND custom_properties = {'point_in_time_recovery':{'status':'disabled'}, 'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}}
AND TAGS={'key1':'val1', 'key2':'val2'};
```

## DROP TABLE
<a name="cql.ddl.table.drop"></a>

キー空間からテーブルを削除するには `DROP TABLE` ステートメントを使用します。

**[Syntax]** (構文)

```
drop_table_statement ::=  
    DROP TABLE [ IF EXISTS ] table_name
```

Where:
+ `IF EXISTS` により、テーブルが存在しない場合の `DROP TABLE` の失敗が阻止されます。(オプション)
+ `table_name` は削除 (ドロップ) されるテーブルの名前です。

**例**

```
DROP TABLE my_keyspace.my_table;
```

# ユーザー定義タイプ (UDTs)
<a name="cql.ddl.type"></a>

*UDT* – Amazon Keyspaces で 1 つの列を定義するために使用できるフィールドとデータ型のグループ化。UDTs の有効なデータ型は、同じキースペースで既に作成したコレクションやその他の UDTs を含む、サポートされているすべての Cassandra データ型です。サポートされている Cassandra データ型の詳細については、「」を参照してください[Cassandra データ型サポート](cassandra-apis.md#cassandra-data-type)。

```
user_defined_type::= udt_name
udt_name::= [ keyspace_name '.' ] identifier
```

**Topics**
+ [CREATE TYPE](#cql.ddl.type.create)
+ [DROP TYPE](#cql.ddl.type.drop)

## CREATE TYPE
<a name="cql.ddl.type.create"></a>

`CREATE TYPE` ステートメントを使用して新しいタイプを作成します。

 **[Syntax]** (構文)

```
create_type_statement ::=  CREATE TYPE [ IF NOT EXISTS ] udt_name
    '('field_definition ( ',' field_definition)* ')'
            field_definition::= identifier cql_type
```

Where:
+ `IF NOT EXISTS` タイプが既に存在する場合、 は失敗`CREATE TYPE`しません。(オプション)
+ `udt_name` は、タイプ形式の UDT の完全修飾名です`my_keyspace.my_type`。例: 。`USE` ステートメントで現在のキースペースを定義する場合、キースペース名を指定する必要はありません。
+ `field_definition` は名前とタイプで構成されます。

次の表は、許可された UDT 名の例を示しています。最初の列はタイプの作成時に名前を入力する方法を示し、2 番目の列は Amazon Keyspaces が内部で名前をフォーマットする方法を示しています。Amazon Keyspaces では、 のようなオペレーションにフォーマットされた名前が必要です`GetType`。


| 入力した名前 | フォーマットされた名前 | メモ | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | 二重引用符を使用しない場合、Amazon Keyspaces はすべての大文字を小文字に変換します。 | 
|  "MY\$1UDT"  | MY\$1UDT | 二重引用符を使用すると、Amazon Keyspaces は大文字を尊重し、フォーマットされた名前から二重引用符を削除します。 | 
|  "1234"  | 1234 | 二重引用符を使用すると、名前は数字で始まることができ、Amazon Keyspaces はフォーマットされた名前から二重引用符を削除します。 | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | 二重引用符では、名前に特殊文字を含めることができ、Amazon Keyspaces はフォーマットされた名前から二重引用符を削除します。 | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces は、フォーマットされた名前から外部二重引用符とエスケープ二重引用符を削除します。 | 

**例**

```
CREATE TYPE my_keyspace.phone (
    country_code int,
    number text
);
```

ネストされた UDTs がフリーズしている場合は、UDT をネストできます。タイプのデフォルト値とクォータの詳細については、「」を参照してください[Amazon Keyspaces UDT クォータとデフォルト値](quotas.md#udt-table)。

```
CREATE TYPE my_keyspace.user (
    first_name text,
    last_name text,
    phones FROZEN<phone>
);
```

UDTs「」を参照してください[Amazon Keyspaces でのユーザー定義型 (UDT)](udts.md)。

## DROP TYPE
<a name="cql.ddl.type.drop"></a>

`DROP TYPE` ステートメントを使用して UDT を削除します。削除できるのは、別のタイプまたはテーブルで使用されていないタイプのみです。

 **[Syntax]** (構文)

```
drop_type_statement ::=  DROP TYPE [ IF EXISTS ] udt_name
```

Where:
+ `IF EXISTS` タイプが存在しない場合、 は失敗`DROP TYPE`しません。(オプション)
+ `udt_name` は、タイプ形式の UDT の完全修飾名です`my_keyspace.my_type`。例: 。`USE` ステートメントで現在のキースペースを定義する場合、キースペース名を指定する必要はありません。

**例**

```
DROP TYPE udt_name;
```