

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Instructions DDL (langage de définition des données) dans Amazon Keyspaces
<a name="cql.ddl"></a>

Le *langage de définition des données* (DDL) est l'ensemble des instructions Cassandra Query Language (CQL) que vous utilisez pour gérer les structures de données dans Amazon Keyspaces (pour Apache Cassandra), telles que les espaces de touches et les tables. Vous utilisez DDL pour créer ces structures de données, les modifier après leur création et les supprimer lorsqu'elles ne sont plus utilisées. Amazon Keyspaces exécute des opérations DDL de manière asynchrone. Pour plus d'informations sur la façon de confirmer qu'une opération asynchrone est terminée, consultez. [Création et suppression asynchrones d'espaces clés et de tables](functional-differences.md#functional-differences.table-keyspace-management)

 Les instructions DDL suivantes sont prises en charge : 
+  [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) 
+  [UTILISER](cql.ddl.keyspace.md#cql.ddl.keyspace.use) 
+  [CRÉER UNE TABLE](cql.ddl.table.md#cql.ddl.table.create) 
+  ALTER TABLE 
+  [RESTAURER LA TABLE](cql.ddl.table.md#cql.ddl.table.restore) 
+  [SUPPRIMER LA TABLE](cql.ddl.table.md#cql.ddl.table.drop) 
+  [CRÉER UN TYPE](cql.ddl.type.md#cql.ddl.type.create) 
+  [TYPE DE CHUTE](cql.ddl.type.md#cql.ddl.type.drop) 

**Topics**
+ [Keyspaces](cql.ddl.keyspace.md)
+ [Tables](cql.ddl.table.md)
+ [Types définis par l'utilisateur () UDTs](cql.ddl.type.md)

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

Un *keyspace* regroupe les tables associées qui sont pertinentes pour une ou plusieurs applications. En termes de système de gestion de base de données relationnelle (SGBDR), les keyspaces sont à peu près similaires aux bases de données, tablespaces ou constructions similaires.

**Note**  
Dans Apache Cassandra, les keyspaces déterminent la réplique des données entre plusieurs nœuds de stockage. Cependant, Amazon Keyspaces est un service entièrement géré : les détails de sa couche de stockage sont gérés en votre nom. Pour cette raison, les espaces clés d'Amazon Keyspaces sont uniquement des constructions logiques et ne sont pas liés au stockage physique sous-jacent.

Pour plus d'informations sur les limites de quota et les contraintes pour les espaces de clés Amazon Keyspaces, consultez. [Quotas pour Amazon Keyspaces (pour Apache Cassandra)](quotas.md)

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

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

Utilisez l'instruction `CREATE KEYSPACE` pour créer un nouveau keyspace.

**Syntaxe**

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

Où :
+ `keyspace_name` est le nom du keyspace à créer.
+ Les *options* peuvent être les suivantes :
  + `REPLICATION`— Une carte qui indique la stratégie de réplication pour le keyspace :
    + `SingleRegionStrategy`— Pour un keyspace à région unique. (Obligatoire)
    + `NetworkTopologyStrategy`— Spécifiez au moins deux Régions AWS. Le facteur de réplication pour chaque région est de trois. (Facultatif)
  + `DURABLE_WRITES`— Les écritures sur Amazon Keyspaces sont toujours durables, cette option n'est donc pas requise. Toutefois, si elle est spécifiée, la valeur doit être `true`.
  + `TAGS`— Une liste de balises de paires clé-valeur à associer à la ressource lorsque vous la créez. (Facultatif)

**Exemple**

Créez un keyspace comme suit.

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

Pour créer un espace de touches multirégional, spécifiez-en `NetworkTopologyStrategy` et incluez-en au moins deux. Régions AWS Le facteur de réplication pour chaque région est de trois.

```
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>

Vous pouvez utiliser l'`ALTER KEYSPACE WITH`instruction pour les *options* suivantes
+ `REPLICATION`— Utilisez cette option pour ajouter une nouvelle Région AWS réplique à un keyspace. Vous pouvez ajouter une nouvelle région à un keyspace à région unique ou multirégional. 
+ `TAGS`— Utilisez cette option pour ajouter ou supprimer des balises dans un espace de touches.

**Syntaxe**

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

Où :
+ `keyspace_name` est le nom du keyspace à modifier.
+ *les options* sont l'une des suivantes :
  + `ADD | DROP TAGS`— Une liste de balises de paires clé-valeur à ajouter ou à supprimer de l'espace clé. 
  + `REPLICATION`— Une carte qui indique la stratégie de réplication pour le keyspace ; 
    + `class`— `NetworkTopologyStrategy` définit le keyspace comme étant un keyspace multirégional.
    + `region`— Spécifiez une touche supplémentaire Région AWS pour cet espace de touches. Le facteur de réplication pour chaque région est de trois.
    + `CLIENT_SIDE_TIMESTAMPS`— La valeur par défaut est`DISABLED`. Vous ne pouvez modifier le statut que sur`ENABLED`.

**Exemples**

Modifiez un espace de touche comme indiqué dans l'exemple suivant pour ajouter des balises.

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

Pour ajouter une troisième région à un espace de touches multirégional, vous pouvez utiliser l'instruction suivante.

```
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>

Utilisez l'`DROP KEYSPACE`instruction pour supprimer un espace de touches, y compris l'ensemble de son contenu, tel que les tableaux.

**Syntaxe**

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

Où :
+ *keyspace\$1name* est le nom du keyspace à supprimer.

**Exemple**

```
DROP KEYSPACE my_keyspace;
```

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

Utilisez l'`USE`instruction pour définir le keyspace actuel. Cela vous permet de faire référence à des objets liés à un espace de touches spécifique, par exemple des tables et des types, sans utiliser le nom complet qui inclut le préfixe d'espace-clé. 

**Syntaxe**

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

Où :
+ *keyspace\$1name* est le nom du keyspace à utiliser.

**Exemple**

```
USE my_keyspace;
```

# Tables
<a name="cql.ddl.table"></a>

Les *tables* sont les principales structures de données d'Amazon Keyspaces. Les données d'une table sont organisées en lignes et en colonnes. Un sous-ensemble de ces colonnes est utilisé pour déterminer le partitionnement (et finalement le placement des données) via la spécification d'une clé de partition.

Un autre ensemble de colonnes peut être défini en colonnes de clustering, ce qui signifie qu'elles peuvent participer en tant que prédicats à l'exécution de la requête. 

Par défaut, de nouvelles tables sont créées avec une capacité de débit *à la demande*. Vous pouvez modifier le mode de capacité pour les tables nouvelles et existantes. Pour plus d'informations sur les modes read/write de débit de capacité, consultez[Configurer les modes de read/write capacité dans Amazon Keyspaces](ReadWriteCapacityMode.md). 

Pour les tables en mode provisionné, vous pouvez configurer en option`AUTOSCALING_SETTINGS`. Pour plus d'informations sur le dimensionnement automatique d'Amazon Keyspaces et les options disponibles, consultez. [Configurer le dimensionnement automatique sur une table existante](autoscaling.configureTable.md)

Pour plus d'informations sur les limites de quota et les contraintes pour les tables Amazon Keyspaces, consultez. [Quotas pour Amazon Keyspaces (pour Apache Cassandra)](quotas.md)

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

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

Utilisez l'instruction `CREATE TABLE` pour créer une nouvelle table.

 **Syntaxe**

```
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) )*
```

Où :
+ `table_name` est le nom de la table à créer. Le nom complet inclut le préfixe keyspace. Vous pouvez également définir le keyspace actuel à l'aide de l'instruction `USE` keyspace.
+ `column_definition` comprend les éléments suivants :
  +  *`column_name`*— Le nom de la colonne.
  + `cql_type`— Un type de données Amazon Keyspaces (voir[Types de données](cql.elements.md#cql.data-types)).
  + `FROZEN`— Désigne cette colonne définie par l'utilisateur ou de type `collection` (par exemple, `LIST``SET`, ou`MAP`) comme figée. Une collection *figée* est sérialisée en une seule valeur immuable et traitée comme une. `BLOB` Pour de plus amples informations, veuillez consulter [Types de collections](cql.elements.md#cql.data-types.collection).
  + `STATIC`— Désigne cette colonne comme statique. Les colonnes statiques stockent les valeurs partagées par toutes les lignes d'une même partition.
  + `PRIMARY KEY`— Désigne cette colonne comme clé primaire de la table.
+ `primary_key` comprend les éléments suivants :
  + `partition_key`
  + `clustering_columns`
+ `partition_key`:
  + La clé de partition peut être une seule colonne ; il peut aussi s'agir d'une valeur composée de deux colonnes ou plus. La partie clé de partition de la clé primaire est obligatoire et détermine la manière dont Amazon Keyspaces stocke vos données. 
+ `clustering_columns`:
  + La partie facultative de la colonne de clustering de votre clé primaire détermine la façon dont les données sont regroupées et triées dans chaque partition. 
+ `table_options`se composent des éléments suivants :
  + *`CLUSTERING ORDER BY`*— L'ORDRE DE CLUSTERING par défaut sur une table est composé de vos clés de clustering dans le sens de `ASC` tri (croissant). Spécifiez-le pour remplacer le comportement de tri par défaut. 
  +  *`cdc`*— Un booléen qui indique si Amazon Keyspaces crée un flux de capture des données de modification (CDC) pour la table. La valeur par défaut est `false`. Pour spécifier le `view type` lors de l'activation d'un flux, définissez le `cdc_specification` avec`CUSTOM_PROPERTIES`. 
  +  *`CUSTOM_PROPERTIES`*— Une carte des paramètres spécifiques à Amazon Keyspaces.
    +  `capacity_mode`: spécifie le mode de capacité de débit en lecture/écriture pour la table. Les options sont `throughput_mode:PAY_PER_REQUEST` et `throughput_mode:PROVISIONED`. Le mode de capacité allouée nécessite `read_capacity_units` et `write_capacity_units` en tant qu'entrées. La valeur par défaut est `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: Spécifie `view_type` le flux CDC. Les options sont :
      + `NEW_AND_OLD_IMAGES`— les deux versions de la ligne, avant et après la modification. Il s’agit de l’option par défaut.
      + `NEW_IMAGE`— la version de la ligne après la modification.
      + `OLD_IMAGE`— la version de la ligne avant la modification.
      + `KEYS_ONLY`— les clés de partition et de clustering de la ligne qui a été modifiée.

      Pour plus d'informations sur les flux CDC, consultez[Utilisation des flux de capture des données modifiées (CDC) dans Amazon Keyspaces](cdc.md). Pour des exemples de code, consultez [Activer un flux CDC lors de la création d'une nouvelle table dans Amazon Keyspaces](keyspaces-enable-cdc-new-table.md).
    +  `client_side_timestamps`: Spécifie si les horodatages côté client sont activés ou désactivés pour la table. Les options sont `{'status': 'enabled'}` et `{'status': 'disabled'}`. S'il n'est pas spécifié, la valeur par défaut est`status:disabled`. Une fois les horodatages côté client activés pour une table, ce paramètre ne peut pas être désactivé. 
    +  `encryption_specification`: Spécifie les options de chiffrement pour le chiffrement au repos. S'il n'est pas spécifié, la valeur par défaut est`encryption_type:AWS_OWNED_KMS_KEY`. L'option de chiffrement (clé gérée par le client) nécessite la AWS KMS clé au format Amazon Resource Name (ARN) comme entrée : `kms_key_identifier:ARN` :`kms_key_identifier:ARN`. 
    +  `point_in_time_recovery`: Spécifie si point-in-time la restauration est activée ou désactivée pour la table. Les options sont `status:enabled` et `status:disabled`. S'il n'est pas spécifié, la valeur par défaut est`status:disabled`.
    + `replica_updates`: Spécifie les paramètres d'une table multirégionale spécifiques à un Région AWS. Pour une table multirégionale, vous pouvez configurer la capacité de lecture de la table différemment selon Région AWS les régions. Vous pouvez le faire en configurant les paramètres suivants. Pour plus d’informations et d’exemples, consultez [Création d'une table multirégionale en mode provisionné avec mise à l'échelle automatique dans Amazon Keyspaces](tables-mrr-create-provisioned.md).
      + `region`— La réplique Région AWS de la table avec les paramètres suivants :
        + `read_capacity_units`
    +  `TTL`: active les paramètres personnalisés Time to Live pour le tableau. Pour l'activer, utilisez`status:enabled`. La valeur par défaut est `status:disabled`. Une fois `TTL` activé, vous ne pouvez pas le désactiver pour le tableau.
  + `AUTOSCALING_SETTINGS`inclut les paramètres facultatifs suivants pour les tables en mode provisionné. Pour plus d’informations et d’exemples, consultez [Création d'un nouveau tableau avec mise à l'échelle automatique](autoscaling.createTable.md).
    + `provisioned_write_capacity_autoscaling_update`:
      + `autoscaling_disabled`— Pour activer la mise à l'échelle automatique en fonction de la capacité d'écriture, définissez la valeur sur`false`. La valeur par défaut est `true`. (Facultatif)
      + `minimum_units`— Le niveau minimum de débit d'écriture que la table doit toujours être prête à prendre en charge. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
      + `maximum_units`— Le niveau maximal de débit d'écriture que la table doit toujours être prête à prendre en charge. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
      + `scaling_policy`— Amazon Keyspaces soutient la politique de suivi des cibles. La cible de dimensionnement automatique est la capacité d'écriture allouée à la table.
        + `target_tracking_scaling_policy_configuration`— Pour définir la politique de suivi de la cible, vous devez définir la valeur cible. Pour plus d'informations sur le suivi des cibles et les périodes de recharge, consultez les [politiques de dimensionnement de Target Tracking](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) dans le *guide de l'utilisateur d'Application Auto Scaling*. 
          + `target_value`— Le taux d'utilisation cible de la table. Le dimensionnement automatique d'Amazon Keyspaces garantit que le rapport entre la capacité consommée et la capacité allouée reste égal ou proche de cette valeur. Vous définissez `target_value` en tant que pourcentage. Un double entre 20 et 90. (Obligatoire)
          + `scale_in_cooldown`— Un temps de recharge en secondes entre les activités de mise à l'échelle, qui permet à la table de se stabiliser avant qu'une autre activité d'échelle ne commence. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
          + `scale_out_cooldown`— Un temps de recharge en secondes entre les activités de redimensionnement qui permet à la table de se stabiliser avant le début d'une autre activité de redimensionnement. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
          + `disable_scale_in`: A `boolean` qui indique si la table `scale-in` est désactivée ou activée. Ce paramètre est désactivé par défaut. Pour l'activer`scale-in`, définissez la `boolean` valeur sur`FALSE`. Cela signifie que la capacité est automatiquement réduite pour une table en votre nom. (Facultatif) 
    + `provisioned_read_capacity_autoscaling_update`:
      + `autoscaling_disabled`— Pour activer la mise à l'échelle automatique en fonction de la capacité de lecture, définissez la valeur sur`false`. La valeur par défaut est `true`. (Facultatif)
      + `minimum_units`— Le niveau de débit minimal que la table doit toujours être prête à prendre en charge. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
      + `maximum_units`— Le niveau de débit maximal que la table doit toujours être prête à supporter. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
      + `scaling_policy`— Amazon Keyspaces soutient la politique de suivi des cibles. L'objectif de dimensionnement automatique est la capacité de lecture allouée à la table.
        + `target_tracking_scaling_policy_configuration`— Pour définir la politique de suivi de la cible, vous devez définir la valeur cible. Pour plus d'informations sur le suivi des cibles et les périodes de recharge, consultez les [politiques de dimensionnement de Target Tracking](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) dans le *guide de l'utilisateur d'Application Auto Scaling*. 
          + `target_value`— Le taux d'utilisation cible de la table. Le dimensionnement automatique d'Amazon Keyspaces garantit que le rapport entre la capacité consommée et la capacité allouée reste égal ou proche de cette valeur. Vous définissez `target_value` en tant que pourcentage. Un double entre 20 et 90. (Obligatoire)
          + `scale_in_cooldown`— Un temps de recharge en secondes entre les activités de mise à l'échelle, qui permet à la table de se stabiliser avant qu'une autre activité d'échelle ne commence. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
          + `scale_out_cooldown`— Un temps de recharge en secondes entre les activités de redimensionnement qui permet à la table de se stabiliser avant le début d'une autre activité de redimensionnement. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
          + `disable_scale_in`: A `boolean` qui indique si la table `scale-in` est désactivée ou activée. Ce paramètre est désactivé par défaut. Pour l'activer`scale-in`, définissez la `boolean` valeur sur`FALSE`. Cela signifie que la capacité est automatiquement réduite pour une table en votre nom. (Facultatif) 
    + `replica_updates`: Spécifie les paramètres de mise à l'échelle automatique Région AWS spécifiques d'une table multirégionale. Pour une table multirégionale, vous pouvez configurer la capacité de lecture de la table différemment selon Région AWS les régions. Vous pouvez le faire en configurant les paramètres suivants. Pour plus d’informations et d’exemples, consultez [Mettre à jour les paramètres de capacité allouée et de dimensionnement automatique pour une table multirégionale dans Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— La réplique Région AWS de la table avec les paramètres suivants :
        + `provisioned_read_capacity_autoscaling_update`
          + `autoscaling_disabled`— Pour activer la mise à l'échelle automatique en fonction de la capacité de lecture de la table, définissez la valeur sur`false`. La valeur par défaut est `true`. (Facultatif) 
**Note**  
La mise à l'échelle automatique d'une table multirégionale doit être activée ou désactivée pour toutes les répliques de la table.
          + `minimum_units`— Le niveau minimum de débit de lecture que la table doit toujours être prête à prendre en charge. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
          + `maximum_units`— Le niveau maximal de débit de lecture que la table doit toujours être prête à prendre en charge. La valeur doit être comprise entre 1 et le quota de débit maximal par seconde pour votre compte (40 000 par défaut).
          + `scaling_policy`— Amazon Keyspaces soutient la politique de suivi des cibles. L'objectif de dimensionnement automatique est la capacité de lecture allouée à la table.
            + `target_tracking_scaling_policy_configuration`— Pour définir la politique de suivi de la cible, vous devez définir la valeur cible. Pour plus d'informations sur le suivi des cibles et les périodes de recharge, consultez les [politiques de dimensionnement de Target Tracking](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) dans le *guide de l'utilisateur d'Application Auto Scaling*. 
              + `target_value`— Le taux d'utilisation cible de la table. Le dimensionnement automatique d'Amazon Keyspaces garantit que le rapport entre la capacité de lecture consommée et la capacité de lecture allouée reste égal ou proche de cette valeur. Vous définissez `target_value` en tant que pourcentage. Un double entre 20 et 90. (Obligatoire)
              + `scale_in_cooldown`— Un temps de recharge en secondes entre les activités de mise à l'échelle, qui permet à la table de se stabiliser avant qu'une autre activité d'échelle ne commence. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
              + `scale_out_cooldown`— Un temps de recharge en secondes entre les activités de redimensionnement qui permet à la table de se stabiliser avant le début d'une autre activité de redimensionnement. Si aucune valeur n'est fournie, la valeur par défaut est 0. (Facultatif)
              + `disable_scale_in`: A `boolean` qui indique si la table `scale-in` est désactivée ou activée. Ce paramètre est désactivé par défaut. Pour l'activer`scale-in`, définissez la `boolean` valeur sur`FALSE`. Cela signifie que la capacité de lecture est automatiquement réduite pour une table en votre nom. (Facultatif) 
  + `default_time_to_live`— Le paramètre Durée de vie par défaut en secondes pour le tableau.
  + `TAGS`— Une liste de balises de paires clé-valeur à associer à la ressource lors de sa création. 
  + `clustering_order` comprend les éléments suivants :
    +  *`column_name`*— Le nom de la colonne. 
    +  *`ASC | DESC`*— Définit le modificateur d'ordre ascendant (`ASC`) ou descendant (`DESC`). S'il n'est pas spécifié, l'ordre par défaut est ASC. 

**Exemple**

```
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;
```

Dans une table qui utilise des colonnes de clustering, les colonnes non clusterisées peuvent être déclarées statiques dans la définition de la table. Pour plus d'informations sur les colonnes statiques, consultez[Estimation de la consommation de capacité pour les colonnes statiques dans Amazon Keyspaces](static-columns.md).

**Exemple**

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

Vous pouvez créer une table avec une colonne utilisant un type défini par l'utilisateur (UDT). La première instruction des exemples crée un type, la seconde crée une table avec une colonne qui utilise le type.

**Exemple**

```
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>

Utilisez l'`ALTER TABLE`instruction pour ajouter de nouvelles colonnes, ajouter des balises ou modifier les propriétés personnalisées du tableau.

**Syntaxe**

```
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
```

Où :
+ `table_name` est le nom de la table à modifier.
+ `column_definition` est le nom de la colonne et le type de données à ajouter.
+ `column_definition_list` est une liste de colonnes séparées par des virgules placées entre parenthèses.
+ `table_options`se composent des éléments suivants :
  + `AUTOSCALING_SETTINGS`inclut les paramètres de mise à l'échelle automatique facultatifs pour les tables provisionnées. Pour la syntaxe et les descriptions détaillées, voir[CREATE TABLE](#cql.ddl.table.create). Pour obtenir des exemples, consultez [Configurer le dimensionnement automatique sur une table existante](autoscaling.configureTable.md).
  +  *`cdc`*— Un booléen qui indique si Amazon Keyspaces crée un flux de capture des données de modification (CDC) pour la table. La valeur par défaut est `false`. Pour spécifier le `view type` lors de l'activation d'un flux, définissez le `cdc_specification` avec`CUSTOM_PROPERTIES`. 
  +  *`CUSTOM_PROPERTIES`*— Une carte des paramètres spécifiques à Amazon Keyspaces.
    +  `capacity_mode`: spécifie le mode de capacité de débit en lecture/écriture pour la table. Les options sont `throughput_mode:PAY_PER_REQUEST` et `throughput_mode:PROVISIONED`. Le mode de capacité allouée nécessite `read_capacity_units` et `write_capacity_units` en tant qu'entrées. La valeur par défaut est `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: Spécifie `view_type` le flux CDC. Les options sont :
      + `NEW_AND_OLD_IMAGES`— les deux versions de la ligne, avant et après la modification. Il s’agit de l’option par défaut.
      + `NEW_IMAGE`— la version de la ligne après la modification.
      + `OLD_IMAGE`— la version de la ligne avant la modification.
      + `KEYS_ONLY`— les clés de partition et de clustering de la ligne qui a été modifiée.

      Pour plus d'informations sur les flux CDC, consultez[Utilisation des flux de capture des données modifiées (CDC) dans Amazon Keyspaces](cdc.md). Pour des exemples de code, consultez [Activer un flux CDC pour une table existante dans Amazon Keyspaces](keyspaces-enable-cdc-alter-table.md).
    +  `client_side_timestamps`: Spécifie si les horodatages côté client sont activés ou désactivés pour la table. Les options sont `{'status': 'enabled'}` et `{'status': 'disabled'}`. S'il n'est pas spécifié, la valeur par défaut est`status:disabled`. Une fois les horodatages côté client activés pour une table, ce paramètre ne peut pas être désactivé. 
    +  `encryption_specification`: Spécifie l'option de chiffrement pour le chiffrement au repos. Les options sont `encryption_type:AWS_OWNED_KMS_KEY` et `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. L'option de chiffrement (clé gérée par le client) nécessite la AWS KMS clé au format Amazon Resource Name (ARN) comme entrée :`kms_key_identifier:ARN`. 
    +  `point_in_time_recovery`: Spécifie si point-in-time la restauration est activée ou désactivée pour la table. Les options sont `status:enabled` et `status:disabled`. La valeur par défaut est `status:disabled`.
    + `replica_updates`: Spécifie les paramètres Région AWS spécifiques d'une table multirégionale. Pour une table multirégionale, vous pouvez configurer la capacité de lecture de la table différemment selon Région AWS les régions. Vous pouvez le faire en configurant les paramètres suivants. Pour plus d’informations et d’exemples, consultez [Mettre à jour les paramètres de capacité allouée et de dimensionnement automatique pour une table multirégionale dans Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— La réplique Région AWS de la table avec les paramètres suivants :
        + `read_capacity_units` 
    +  `ttl`: active les paramètres personnalisés Time to Live pour le tableau. Pour l'activer, utilisez`status:enabled`. La valeur par défaut est `status:disabled`. Une fois `ttl` activé, vous ne pouvez pas le désactiver pour le tableau.
+ `default_time_to_live`: paramètre de durée de vie par défaut en secondes pour le tableau.
+ `TAGS` est une liste de balises de paire clé-valeur à attacher à la ressource.

**Note**  
Avec ALTER TABLE, vous ne pouvez modifier qu'une seule propriété personnalisée. Vous ne pouvez pas combiner plusieurs commandes ALTER TABLE dans la même instruction.

**Exemples**

L'instruction suivante indique comment ajouter une colonne à une table existante.

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

Cette instruction indique comment ajouter deux colonnes de collection à une table existante : 
+ Colonne de collection figée `col_frozen_list` contenant une collection figée imbriquée
+ Colonne de collection non figée `col_map` contenant une collection figée imbriquée

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

L'exemple suivant montre comment ajouter une colonne utilisant un type défini par l'utilisateur (UDT) à une table.

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

Pour modifier le mode de capacité d'une table et spécifier les unités de capacité de lecture et d'écriture, vous pouvez utiliser l'instruction suivante.

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

L'instruction suivante indique une clé KMS gérée par le client pour la table.

```
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'     
                  } 
         };
```

Pour activer point-in-time la restauration d'une table, vous pouvez utiliser l'instruction suivante.

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

Pour définir une valeur Time to Live par défaut en secondes pour une table, vous pouvez utiliser l'instruction suivante.

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

Cette instruction active les paramètres Time to Live personnalisés pour une table.

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

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

Utilisez l'`RESTORE TABLE`instruction pour rétablir une table à un point précis dans le temps. Cette instruction nécessite que la point-in-time restauration soit activée sur une table. Pour de plus amples informations, veuillez consulter [Backup et restauration des données avec point-in-time restauration pour Amazon Keyspaces](PointInTimeRecovery.md).

**Syntaxe**

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

Où :
+ `restored_table_name`est le nom de la table restaurée.
+ `source_table_name`est le nom de la table source.
+ `table_options` comprend les éléments suivants :
  + `restore_timestamp`est l'heure du point de restauration au format ISO 8601. S'il n'est pas spécifié, l'horodatage actuel est utilisé.
  +  *`CUSTOM_PROPERTIES`*— Une carte des paramètres spécifiques à Amazon Keyspaces.
    +  `capacity_mode`: spécifie le mode de capacité de débit en lecture/écriture pour la table. Les options sont `throughput_mode:PAY_PER_REQUEST` et `throughput_mode:PROVISIONED`. Le mode de capacité allouée nécessite `read_capacity_units` et `write_capacity_units` en tant qu'entrées. La valeur par défaut est le paramètre actuel de la table source.
    +  `encryption_specification`: Spécifie l'option de chiffrement pour le chiffrement au repos. Les options sont `encryption_type:AWS_OWNED_KMS_KEY` et `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. L'option de chiffrement (clé gérée par le client) nécessite la AWS KMS clé au format Amazon Resource Name (ARN) comme entrée :`kms_key_identifier:ARN`. Pour restaurer une table chiffrée avec une clé gérée par le client vers une table chiffrée avec un Clé détenue par AWS, Amazon Keyspaces a besoin d'accéder à la AWS KMS clé de la table source.
    +  `point_in_time_recovery`: Spécifie si point-in-time la restauration est activée ou désactivée pour la table. Les options sont `status:enabled` et `status:disabled`. Contrairement à ce qui se passe lorsque vous créez de nouvelles tables, le statut par défaut des tables restaurées est `status:enabled` dû au fait que le paramètre est hérité de la table source. Pour désactiver le PITR pour les tables restaurées, vous devez définir `status:disabled` explicitement.
    + `replica_updates`: Spécifie les paramètres Région AWS spécifiques d'une table multirégionale. Pour une table multirégionale, vous pouvez configurer la capacité de lecture de la table différemment selon Région AWS les régions. Vous pouvez le faire en configurant les paramètres suivants. 
      + `region`— La réplique Région AWS de la table avec les paramètres suivants :
        + `read_capacity_units` 
  + `AUTOSCALING_SETTINGS`inclut les paramètres de mise à l'échelle automatique facultatifs pour les tables provisionnées. Pour une syntaxe et des descriptions détaillées, voir[CREATE TABLE](#cql.ddl.table.create).
  + `TAGS` est une liste de balises de paire clé-valeur à attacher à la ressource.

**Note**  
Les tables supprimées ne peuvent être restaurées qu'au moment de leur suppression.

**Exemple**

```
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>

Utilisez l'instruction `DROP TABLE` pour supprimer une table du keyspace.

**Syntaxe**

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

Où :
+ `IF EXISTS` empêche `DROP TABLE` d'échouer si la table n'existe pas. (Facultatif)
+ `table_name` est le nom de la table à supprimer.

**Exemple**

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

# Types définis par l'utilisateur () UDTs
<a name="cql.ddl.type"></a>

*UDT* : regroupement de champs et de types de données que vous pouvez utiliser pour définir une seule colonne dans Amazon Keyspaces. Les types de données valides pour UDTs sont tous les types de données Cassandra pris en charge, y compris les collections et les autres UDTs que vous avez déjà créées dans le même keyspace. Pour plus d'informations sur les types de données Cassandra pris en charge, consultez[Support des types de données 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>

Utilisez l'`CREATE TYPE`instruction pour créer un nouveau type.

 **Syntaxe**

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

Où :
+ `IF NOT EXISTS``CREATE TYPE`empêche l'échec si le type existe déjà. (Facultatif)
+ `udt_name`est le nom complet de l'UDT au format type, par exemple. `my_keyspace.my_type` Si vous définissez le keyspace actuel avec l'`USE`instruction, il n'est pas nécessaire de spécifier le nom du keyspace.
+ `field_definition`se compose d'un nom et d'un type.

Le tableau suivant présente des exemples de noms UDT autorisés. La première colonne indique comment saisir le nom lorsque vous créez le type, la deuxième colonne montre comment Amazon Keyspaces met en forme le nom en interne. Amazon Keyspaces attend le nom formaté pour des opérations telles que. `GetType`


| Nom saisi | Nom formaté | Remarque | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sans guillemets, Amazon Keyspaces convertit tous les caractères majuscules en minuscules. | 
|  "MY\$1UDT"  | MY\$1UDT | Avec les guillemets, Amazon Keyspaces respecte les majuscules et supprime les guillemets du nom formaté. | 
|  "1234"  | 1234 | Avec des guillemets, le nom peut commencer par un chiffre, et Amazon Keyspaces supprime les guillemets du nom formaté. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Avec des guillemets, le nom peut contenir des caractères spéciaux, et Amazon Keyspaces supprime les guillemets du nom formaté. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces supprime les guillemets extérieurs et les guillemets d'échappement du nom formaté. | 

**Exemples**

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

Vous pouvez nicher UDTs si l'UDT imbriqué est gelé. Pour plus d'informations sur les valeurs par défaut et les quotas pour les types, consultez[Quotas UDT et valeurs par défaut d'Amazon Keyspaces](quotas.md#udt-table).

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

Pour d'autres exemples de code montrant comment créer UDTs, consultez[Types définis par l'utilisateur (UDTs) dans Amazon Keyspaces](udts.md).

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

Utilisez l'`DROP TYPE`instruction pour supprimer un UDT. Vous ne pouvez supprimer qu'un type qui n'est pas utilisé par un autre type ou une autre table.

 **Syntaxe**

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

Où :
+ `IF EXISTS``DROP TYPE`empêche l'échec si le type n'existe pas. (Facultatif)
+ `udt_name`est le nom complet de l'UDT au format type, par exemple. `my_keyspace.my_type` Si vous définissez le keyspace actuel avec l'`USE`instruction, il n'est pas nécessaire de spécifier le nom du keyspace.

**Exemple**

```
DROP TYPE udt_name;
```