

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Instrucciones DDL (lenguaje de definición de datos) en Amazon Keyspaces
<a name="cql.ddl"></a>

*Lenguaje de definición de datos* (DDL) es el conjunto de instrucciones de Cassandra Query Language (CQL) que se utiliza para administrar estructuras de datos en Amazon Keyspaces (para Apache Cassandra), como espacios de claves y tablas. Se utiliza DDL para crear estas estructuras de datos, modificarlas una vez creadas y eliminarlas cuando ya no estén en uso. Amazon Keyspaces realiza las operaciones DDL de forma asíncrona. Para obtener más información sobre cómo confirmar si una operación asíncrona se ha completado, consulte [Creación y eliminación asíncronas de espacios de claves y tablas](functional-differences.md#functional-differences.table-keyspace-management).

 Se admiten las siguientes instrucciones 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) 
+  [USA](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) 
+  [CREAR TIPO](cql.ddl.type.md#cql.ddl.type.create) 
+  [TIPO DE CAÍDA](cql.ddl.type.md#cql.ddl.type.drop) 

**Topics**
+ [Keyspaces](cql.ddl.keyspace.md)
+ [Tablas](cql.ddl.table.md)
+ [Tipos definidos por el usuario () UDTs](cql.ddl.type.md)

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

Un *espacio de claves* agrupa tablas relacionadas que son relevantes para una o más aplicaciones. En términos de un sistema de administración de bases de datos relacionales (RDBMS), los espacios de claves son aproximadamente similares a las bases de datos, espacios de tablas o construcciones similares.

**nota**  
En Apache Cassandra, los espacios de claves determinan cómo se replican los datos entre varios nodos de almacenamiento. Sin embargo, Amazon Keyspaces es un servicio totalmente administrado: los detalles de su capa de almacenamiento se administran en su nombre. Por este motivo, los espacios de claves en Amazon Keyspaces son solo construcciones lógicas y no están relacionados con el almacenamiento físico subyacente.

Para obtener información sobre los límites de cuota y las restricciones de los espacios de claves de Amazon Keyspaces, consulte [Cuotas para Amazon Keyspaces (para 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>

Utilice la instrucción `CREATE KEYSPACE` para crear un nuevo espacio de claves.

**Sintaxis**

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

Donde:
+ `keyspace_name` es el nombre del espacio de claves que se va a crear.
+ *opciones* son una o más de las siguientes opciones:
  + `REPLICATION`: un mapa que indica la estrategia de réplica del espacio de claves:
    + `SingleRegionStrategy`: para un espacio de claves de región única. (Obligatorio) 
    + `NetworkTopologyStrategy`— Especifique al menos dos Regiones de AWS. El factor de réplica para cada región es tres. (Opcional)
  + `DURABLE_WRITES`: las escrituras en Amazon Keyspaces son siempre duraderas, por lo que esta opción no es necesaria. Sin embargo, si se especifica, el valor debe ser `true`.
  + `TAGS`: una lista de etiquetas de par clave-valor que se vinculan al recurso al crearlo. (Opcional)

**Ejemplo**

Cree un espacio de claves de la siguiente manera.

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

Para crear un espacio de claves multirregional, especifique `NetworkTopologyStrategy` e incluya al menos dos. Regiones de AWS El factor de réplica para cada región es tres.

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

*Puede usar la `ALTER KEYSPACE WITH` instrucción para las siguientes opciones*
+ `REPLICATION`— Utilice esta opción para añadir una nueva Región de AWS réplica a un espacio de claves. Puede añadir una nueva región a un espacio de claves de una sola región o de varias regiones. 
+ `TAGS`— Utilice esta opción para añadir o eliminar etiquetas de un espacio de teclas.

**Sintaxis**

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

Donde:
+ `keyspace_name` es el nombre del espacio de claves que se va a modificar.
+ *las opciones* son una de las siguientes:
  + `ADD | DROP TAGS`: una lista de etiquetas de par clave-valor que se van a añadir o eliminar del espacio de claves. 
  + `REPLICATION`— Un mapa que indica la estrategia de replicación del espacio de claves; 
    + `class`— `NetworkTopologyStrategy` define el espacio de claves como un espacio de claves multirregional.
    + `region`— Especifique uno adicional Región de AWS para este espacio de claves. El factor de réplica para cada región es tres.
    + `CLIENT_SIDE_TIMESTAMPS`— El valor predeterminado es`DISABLED`. Solo puede cambiar el estado a`ENABLED`.

**Ejemplos**

Modifique un espacio de teclas como se muestra en el siguiente ejemplo para añadir etiquetas.

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

Para añadir una tercera región a un espacio de claves de varias regiones, puede utilizar la siguiente instrucción.

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

Utilice la `DROP KEYSPACE` instrucción para eliminar un espacio de claves, incluido todo su contenido, como las tablas.

**Sintaxis**

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

Donde:
+ *keyspace\$1name* es el nombre del espacio de claves que se va a eliminar.

**Ejemplo**

```
DROP KEYSPACE my_keyspace;
```

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

Utilice la `USE` sentencia para definir el espacio de claves actual. Esto le permite hacer referencia a objetos enlazados a un espacio de claves específico, por ejemplo, tablas y tipos, sin utilizar el nombre completo que incluye el prefijo del espacio de claves. 

**Sintaxis**

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

Donde:
+ *keyspace\$1name es el nombre del* espacio de claves que se va a utilizar.

**Ejemplo**

```
USE my_keyspace;
```

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

Las *tablas* son las estructuras de datos principales de Amazon Keyspaces. Los datos de una tabla se organizan en filas y columnas. Un subconjunto de esas columnas se utiliza para determinar la partición (y, en última instancia, la ubicación de los datos) mediante la especificación de una clave de partición.

Otro conjunto de columnas puede definirse en columnas de agrupación, lo que significa que pueden participar como predicados en la ejecución de consultas. 

De forma predeterminada, las tablas nuevas se crean con capacidad de rendimiento *bajo demanda*. Puede cambiar el modo de capacidad para las tablas nuevas y existentes. Para obtener más información sobre los modos read/write de rendimiento de capacidad, consulte. [Configurar los modos de read/write capacidad en Amazon Keyspaces](ReadWriteCapacityMode.md) 

Para las tablas en modo aprovisionado, puede configurar `AUTOSCALING_SETTINGS` de manera opcional. Para obtener más información sobre el escalado automático de Amazon Keyspaces y las opciones disponibles, consulte [Configuración del escalado automático en una tabla existente](autoscaling.configureTable.md).

Para obtener información sobre los límites de cuota y las restricciones de las tablas de Amazon Keyspaces, consulte [Cuotas para Amazon Keyspaces (para 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>

Utilice la instrucción `CREATE TABLE` para crear una tabla nueva.

 **Sintaxis**

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

Donde:
+ `table_name` es el nombre de la tabla que se va a crear. El nombre completo incluye el prefijo de espacio clave. Como alternativa, puede establecer el espacio de claves actual con la instrucción de espacio de `USE` claves.
+ `column_definition` consta de lo siguiente:
  +  *`column_name`*: el nombre de la columna.
  + `cql_type`: un tipo de datos de Amazon Keyspaces (consulte [Tipos de datos](cql.elements.md#cql.data-types)).
  + `FROZEN`— Designa esta columna definida por el usuario o cuyo tipo `collection` (por ejemplo,, `LIST``SET`, o`MAP`) está inmovilizada. Una colección *congelada* se serializa en un único valor inmutable y se trata como un `BLOB`. Para obtener más información, consulte [Tipos de colección](cql.elements.md#cql.data-types.collection).
  + `STATIC`: designa esta columna como estática. Las columnas estáticas almacenan valores que comparten todas las filas de la misma partición.
  + `PRIMARY KEY`: designa esta columna como clave principal de la tabla.
+ `primary_key` consta de lo siguiente:
  + `partition_key`
  + `clustering_columns`
+ `partition_key`:
  + La clave de partición puede ser una única columna o un valor compuesto formado por dos o más columnas. La porción de clave de partición de la clave principal es obligatoria y determina cómo almacena Amazon Keyspaces sus datos. 
+ `clustering_columns`:
  + La porción de columna de agrupación opcional de su clave principal determina cómo se agrupan y clasifican los datos dentro de cada partición. 
+ `table_options` consta de lo siguiente:
  + *`CLUSTERING ORDER BY`*: el CLUSTERING ORDER predeterminado en una tabla se compone de sus claves de agrupación en la dirección de ordenación `ASC` (ascendente). Especifíquelo para anular el comportamiento de ordenación predeterminado. 
  +  *`cdc`*— Un booleano que especifica si Amazon Keyspaces crea un flujo de captura de datos de cambios (CDC) para la tabla. El valor predeterminado es `false`. Para especificar `view type` cuándo se habilita una transmisión, defina el valor with. `cdc_specification` `CUSTOM_PROPERTIES` 
  +  *`CUSTOM_PROPERTIES`*: un mapa de ajustes específicos de Amazon Keyspaces.
    +  `capacity_mode`: especifica el modo de capacidad de rendimiento de lectura/escritura para la tabla. Las opciones son `throughput_mode:PAY_PER_REQUEST` y `throughput_mode:PROVISIONED`. El modo de capacidad aprovisionada requiere `read_capacity_units` y `write_capacity_units` como entradas. El valor predeterminado es `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: Especifica el flujo `view_type` de la CDC. Las opciones son:
      + `NEW_AND_OLD_IMAGES`— ambas versiones de la fila, antes y después del cambio. Este es el valor predeterminado.
      + `NEW_IMAGE`— la versión de la fila tras el cambio.
      + `OLD_IMAGE`— la versión de la fila anterior al cambio.
      + `KEYS_ONLY`— las claves de partición y agrupamiento de la fila que se ha modificado.

      Para obtener más información sobre las transmisiones de los CDC, consulte[Trabajar con transmisiones de captura de datos de cambios (CDC) en Amazon Keyspaces](cdc.md). Para ver ejemplos de código, consulte [Habilita una transmisión de CDC al crear una tabla nueva en Amazon Keyspaces](keyspaces-enable-cdc-new-table.md).
    +  `client_side_timestamps`: especifica si las marcas de tiempo del lado del cliente están habilitadas o deshabilitadas para la tabla. Las opciones son `{'status': 'enabled'}` y `{'status': 'disabled'}`. Si no se especifica, el valor predeterminado es `status:disabled`. Una vez habilitadas las marcas de tiempo del lado del cliente para una tabla, este ajuste no se puede deshabilitar. 
    +  `encryption_specification`: especifica las opciones de cifrado para el cifrado en reposo. Si no se especifica, el valor predeterminado es `encryption_type:AWS_OWNED_KMS_KEY`. La clave gestionada por el cliente de la opción de cifrado requiere la AWS KMS clave en formato Amazon Resource Name (ARN) como entrada::`kms_key_identifier:ARN`. `kms_key_identifier:ARN` 
    +  `point_in_time_recovery`: Especifica si point-in-time la restauración está habilitada o deshabilitada para la tabla. Las opciones son `status:enabled` y `status:disabled`. Si no se especifica, el valor predeterminado es `status:disabled`.
    + `replica_updates`: especifica la configuración de una tabla multirregional que es específica de una Región de AWS. En el caso de una tabla multirregional, puede configurar la capacidad de lectura de la tabla de forma diferente según la Región de AWS. Para ello, configure los siguientes parámetros. Para obtener más información y ejemplos, consulta [Creación de una tabla multirregional en modo aprovisionado con escalado automático en Amazon Keyspaces](tables-mrr-create-provisioned.md).
      + `region`— La réplica Región de AWS de la tabla con los siguientes ajustes:
        + `read_capacity_units`
    +  `TTL`: habilita la configuración personalizada del período de vida para la tabla. Para habilitarla, utilice `status:enabled`. El valor predeterminado es `status:disabled`. Una vez habilitado, `TTL` no se puede deshabilitar para la tabla.
  + `AUTOSCALING_SETTINGS` incluye la siguiente configuración opcional para las tablas en modo aprovisionado. Para obtener más información y ejemplos, consulta [Creación de una nueva tabla con escalado automático](autoscaling.createTable.md).
    + `provisioned_write_capacity_autoscaling_update`:
      + `autoscaling_disabled`: para habilitar el escalado automático de la capacidad de escritura, defina el valor en `false`. El valor predeterminado es `true`. (Opcional)
      + `minimum_units`: el nivel mínimo de rendimiento de escritura para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
      + `maximum_units`: el nivel máximo de rendimiento de escritura para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
      + `scaling_policy`: Amazon Keyspaces es compatible con la política de seguimiento de objetivos. El objetivo de escalado automático es la capacidad de escritura aprovisionada de la tabla.
        + `target_tracking_scaling_policy_configuration`: para definir la política de seguimiento de objetivos, debe definir el valor objetivo. Para obtener más información acerca del seguimiento de objetivos y los periodos de recuperación, consulte [Políticas de escalado de seguimiento de objetivos](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) en la *Guía del usuario de Application Auto Scaling*. 
          + `target_value`: la tasa de utilización objetivo de la tabla. El escalado automático de Amazon Keyspaces garantiza que la relación entre capacidad consumida y capacidad aprovisionada se mantenga en este valor o cerca del mismo. `target_value` se define como un porcentaje. Un número de dos dígitos entre 20 y 90. (Obligatorio)
          + `scale_in_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de reducción horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
          + `scale_out_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de escalado horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
          + `disable_scale_in`: un valor `boolean` que especifica si el `scale-in` está deshabilitado o habilitado para la tabla. Este parámetro está deshabilitado de forma predeterminada. Para activar el `scale-in`, establezca el valor `boolean` como `FALSE`. Esto significa que la capacidad se reduce verticalmente de forma automática para una tabla en su nombre. (Opcional) 
    + `provisioned_read_capacity_autoscaling_update`:
      + `autoscaling_disabled`: para habilitar el escalado automático de la capacidad de lectura, defina el valor en `false`. El valor predeterminado es `true`. (Opcional)
      + `minimum_units`: el nivel mínimo de rendimiento para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
      + `maximum_units`: el nivel máximo de rendimiento para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
      + `scaling_policy`: Amazon Keyspaces es compatible con la política de seguimiento de objetivos. El objetivo de escalado automático es la capacidad de lectura aprovisionada de la tabla.
        + `target_tracking_scaling_policy_configuration`: para definir la política de seguimiento de objetivos, debe definir el valor objetivo. Para obtener más información acerca del seguimiento de objetivos y los periodos de recuperación, consulte [Políticas de escalado de seguimiento de objetivos](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) en la *Guía del usuario de Application Auto Scaling*. 
          + `target_value`: la tasa de utilización objetivo de la tabla. El escalado automático de Amazon Keyspaces garantiza que la relación entre capacidad consumida y capacidad aprovisionada se mantenga en este valor o cerca del mismo. `target_value` se define como un porcentaje. Un número de dos dígitos entre 20 y 90. (Obligatorio)
          + `scale_in_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de reducción horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
          + `scale_out_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de escalado horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
          + `disable_scale_in`: un valor `boolean` que especifica si el `scale-in` está deshabilitado o habilitado para la tabla. Este parámetro está deshabilitado de forma predeterminada. Para activar el `scale-in`, establezca el valor `boolean` como `FALSE`. Esto significa que la capacidad se reduce verticalmente de forma automática para una tabla en su nombre. (Opcional) 
    + `replica_updates`: especifica la configuración de escalado automático Región de AWS específica de una tabla multirregión. En el caso de una tabla multirregional, puede configurar la capacidad de lectura de la tabla de forma diferente según la Región de AWS. Para ello, configure los siguientes parámetros. Para obtener más información y ejemplos, consulta [Actualización de la capacidad aprovisionada y la configuración de escalado automático para una tabla multirregional en Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— La réplica Región de AWS de la tabla con los siguientes ajustes:
        + `provisioned_read_capacity_autoscaling_update`
          + `autoscaling_disabled`: para habilitar el escalado automático de la capacidad de lectura de la tabla, defina el valor en `false`. El valor predeterminado es `true`. (Opcional) 
**nota**  
El escalado automático de una tabla multirregión debe estar activado o desactivado para todas las réplicas de la tabla.
          + `minimum_units`: el nivel mínimo de rendimiento de lectura para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
          + `maximum_units`: el nivel máximo de rendimiento de lectura para el que la tabla debería estar siempre preparada. El valor debe estar comprendido entre 1 y la cuota máxima de rendimiento por segundo de su cuenta (40 000 de forma predeterminada).
          + `scaling_policy`: Amazon Keyspaces es compatible con la política de seguimiento de objetivos. El objetivo de escalado automático es la capacidad de lectura aprovisionada de la tabla.
            + `target_tracking_scaling_policy_configuration`: para definir la política de seguimiento de objetivos, debe definir el valor objetivo. Para obtener más información acerca del seguimiento de objetivos y los periodos de recuperación, consulte [Políticas de escalado de seguimiento de objetivos](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) en la *Guía del usuario de Application Auto Scaling*. 
              + `target_value`: la tasa de utilización objetivo de la tabla. El escalado automático de Amazon Keyspaces garantiza que la relación entre capacidad de lectura consumida y capacidad de lectura aprovisionada se mantenga en este valor o cerca del mismo. `target_value` se define como un porcentaje. Un número de dos dígitos entre 20 y 90. (Obligatorio)
              + `scale_in_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de reducción horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
              + `scale_out_cooldown`: un periodo de recuperación en segundos entre actividades de escalado permite que la tabla se estabilice antes de que comience otra actividad de escalado horizontal. Si no se proporciona ningún valor, el valor predeterminado es 0. (Opcional)
              + `disable_scale_in`: un valor `boolean` que especifica si el `scale-in` está deshabilitado o habilitado para la tabla. Este parámetro está deshabilitado de forma predeterminada. Para activar el `scale-in`, establezca el valor `boolean` como `FALSE`. Esto significa que la capacidad de lectura se reduce verticalmente de forma automática para una tabla en su nombre. (Opcional) 
  + `default_time_to_live`: la configuración predeterminada de periodo de vida en segundos para la tabla.
  + `TAGS`: una lista de etiquetas de par clave-valor que se vinculan al recurso al crearlo. 
  + `clustering_order` consta de lo siguiente:
    +  *`column_name`*: el nombre de la columna. 
    +  *`ASC | DESC`*: establece el modificador de orden ascendente (`ASC`) o descendente (`DESC`). Si no se especifica, el valor predeterminado es ASC. 

**Ejemplo**

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

En una tabla que utilice columnas de agrupación, las columnas que no sean de agrupación pueden declararse como estáticas en la definición de la tabla. Para obtener más información sobre las columnas estáticas, consulte [Estimación del consumo de capacidad de las columnas estáticas en Amazon Keyspaces](static-columns.md).

**Ejemplo**

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

Puede crear una tabla con una columna que utilice un tipo definido por el usuario (UDT). La primera sentencia de los ejemplos crea un tipo, la segunda crea una tabla con una columna que utiliza ese tipo.

**Ejemplo**

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

Utilice la instrucción `ALTER TABLE` para añadir nuevas columnas, añadir etiquetas o modificar las propiedades personalizadas de la tabla.

**Sintaxis**

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

Donde:
+ `table_name` es el nombre de la tabla que se va a modificar.
+ `column_definition` es el nombre de la columna y el tipo de datos que se van a añadir.
+ `column_definition_list` es una lista separada por comas de columnas colocadas entre paréntesis.
+ `table_options` consta de lo siguiente:
  + `AUTOSCALING_SETTINGS` incluye la configuración de escalado automático opcional para las tablas aprovisionadas. Para ver la sintaxis y descripciones detalladas, consulte [CREATE TABLE](#cql.ddl.table.create). Para ver ejemplos, consulte [Configuración del escalado automático en una tabla existente](autoscaling.configureTable.md).
  +  *`cdc`*— Un booleano que especifica si Amazon Keyspaces crea un flujo de captura de datos de cambios (CDC) para la tabla. El valor predeterminado es `false`. Para especificar `view type` cuándo se habilita una transmisión, defina el valor with. `cdc_specification` `CUSTOM_PROPERTIES` 
  +  *`CUSTOM_PROPERTIES`*: un mapa de ajustes específicos para Amazon Keyspaces.
    +  `capacity_mode`: especifica el modo de capacidad de rendimiento de lectura/escritura para la tabla. Las opciones son `throughput_mode:PAY_PER_REQUEST` y `throughput_mode:PROVISIONED`. El modo de capacidad aprovisionada requiere `read_capacity_units` y `write_capacity_units` como entradas. El valor predeterminado es `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: Especifica el flujo `view_type` de la CDC. Las opciones son:
      + `NEW_AND_OLD_IMAGES`— ambas versiones de la fila, antes y después del cambio. Este es el valor predeterminado.
      + `NEW_IMAGE`— la versión de la fila tras el cambio.
      + `OLD_IMAGE`— la versión de la fila anterior al cambio.
      + `KEYS_ONLY`— las claves de partición y agrupamiento de la fila que se ha modificado.

      Para obtener más información sobre las transmisiones de los CDC, consulte[Trabajar con transmisiones de captura de datos de cambios (CDC) en Amazon Keyspaces](cdc.md). Para ver ejemplos de código, consulte [Habilitar una transmisión de CDC para una tabla existente en Amazon Keyspaces](keyspaces-enable-cdc-alter-table.md).
    +  `client_side_timestamps`: especifica si las marcas de tiempo del lado del cliente están habilitadas o deshabilitadas para la tabla. Las opciones son `{'status': 'enabled'}` y `{'status': 'disabled'}`. Si no se especifica, el valor predeterminado es `status:disabled`. Una vez habilitadas las marcas de tiempo del lado del cliente para una tabla, este ajuste no se puede deshabilitar. 
    +  `encryption_specification`: especifica la opción de cifrado para el cifrado en reposo. Las opciones son `encryption_type:AWS_OWNED_KMS_KEY` y `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. La opción de cifrado de clave administrada por el cliente requiere la clave AWS KMS en formato de nombre de recurso de Amazon (ARN) como entrada: `kms_key_identifier:ARN`. 
    +  `point_in_time_recovery`: Especifica si point-in-time la restauración está habilitada o deshabilitada en la tabla. Las opciones son `status:enabled` y `status:disabled`. El valor predeterminado es `status:disabled`.
    + `replica_updates`: especifica la configuración Región de AWS específica de una tabla multirregional. En el caso de una tabla multirregional, puede configurar la capacidad de lectura de la tabla de forma diferente según la Región de AWS. Para ello, configure los siguientes parámetros. Para obtener más información y ejemplos, consulta [Actualización de la capacidad aprovisionada y la configuración de escalado automático para una tabla multirregional en Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— La réplica Región de AWS de la tabla con los siguientes ajustes:
        + `read_capacity_units` 
    +  `ttl`: habilita la configuración personalizada del período de vida para la tabla. Para habilitarla, utilice `status:enabled`. El valor predeterminado es `status:disabled`. Una vez habilitado, `ttl` no se puede deshabilitar para la tabla.
+ `default_time_to_live`: la configuración predeterminada de periodo de vida en segundos para la tabla.
+ `TAGS` es una lista de etiquetas de par clave-valor que se van a vincular al recurso.

**nota**  
Con ALTER TABLE, solo puede cambiar una propiedad personalizada. No puede combinar más de un comando ALTER TABLE en la misma instrucción.

**Ejemplos**

La siguiente instrucción muestra cómo añadir una columna a una tabla existente.

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

Esta instrucción muestra cómo añadir dos columnas de colección a una tabla existente: 
+ Una columna de colección congelada `col_frozen_list` que contiene una colección congelada anidada
+ Una columna de colección no congelada `col_map` que contiene una colección congelada anidada

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

El siguiente ejemplo muestra cómo añadir una columna que utilice un tipo definido por el usuario (UDT) a una tabla.

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

Para cambiar el modo de capacidad de una tabla y especificar unidades de capacidad de lectura y escritura, puede utilizar la siguiente instrucción.

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

La siguiente instrucción especifica una clave KMS administrada por el cliente para la tabla.

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

Para habilitar point-in-time la restauración de una tabla, puede usar la siguiente instrucción.

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

Para establecer un valor predeterminado de periodo de vida en segundos para una tabla, puede utilizar la siguiente instrucción.

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

Esta instrucción habilita la configuración personalizada de periodo de vida para una tabla.

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

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

Use la instrucción `RESTORE TABLE` para restaurar una tabla a un momento dado. Esta declaración requiere que point-in-time la recuperación esté habilitada en una tabla. Para obtener más información, consulte [Backup y restauración de datos con point-in-time recuperación para Amazon Keyspaces](PointInTimeRecovery.md).

**Sintaxis**

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

Donde:
+ `restored_table_name` es el nombre de la tabla restaurada.
+ `source_table_name` es el nombre de la tabla de origen.
+ `table_options` consta de lo siguiente:
  + `restore_timestamp` es el tiempo del punto de restauración en formato ISO 8601. Si no se especifica, se utiliza la marca de tiempo actual.
  +  *`CUSTOM_PROPERTIES`*: un mapa de ajustes específicos para Amazon Keyspaces.
    +  `capacity_mode`: especifica el modo de capacidad de rendimiento de lectura/escritura para la tabla. Las opciones son `throughput_mode:PAY_PER_REQUEST` y `throughput_mode:PROVISIONED`. El modo de capacidad aprovisionada requiere `read_capacity_units` y `write_capacity_units` como entradas. La configuración predeterminada es la configuración actual de la tabla de origen.
    +  `encryption_specification`: especifica la opción de cifrado para el cifrado en reposo. Las opciones son `encryption_type:AWS_OWNED_KMS_KEY` y `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. La clave administrada por el cliente de la opción de cifrado requiere la AWS KMS clave en formato Amazon Resource Name (ARN) como entrada:. `kms_key_identifier:ARN` Para restaurar una tabla cifrada con una clave gestionada por el cliente en una tabla cifrada con una Clave propiedad de AWS, Amazon Keyspaces necesita acceder a la AWS KMS clave de la tabla de origen.
    +  `point_in_time_recovery`: Especifica si point-in-time la restauración está habilitada o deshabilitada para la tabla. Las opciones son `status:enabled` y `status:disabled`. A diferencia de cuando se crean tablas nuevas, el estado predeterminado para tablas restauradas es `status:enabled` porque la configuración se hereda de la tabla de origen. Para deshabilitar la PITR para las tablas restauradas, debe configurar `status:disabled` de forma explícita.
    + `replica_updates`: especifica la configuración Región de AWS específica de una tabla multirregional. En el caso de una tabla multirregional, puede configurar la capacidad de lectura de la tabla de forma diferente según la Región de AWS. Para ello, configure los siguientes parámetros. 
      + `region`— La réplica Región de AWS de la tabla con los siguientes ajustes:
        + `read_capacity_units` 
  + `AUTOSCALING_SETTINGS` incluye la configuración de escalado automático opcional para las tablas aprovisionadas. Para ver en detalle la sintaxis y las descripciones, consulte [CREATE TABLE](#cql.ddl.table.create).
  + `TAGS` es una lista de etiquetas de par clave-valor que se van a vincular al recurso.

**nota**  
Las tablas eliminadas solo se pueden restaurar al momento de la eliminación.

**Ejemplo**

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

Utilice la instrucción `DROP TABLE` para eliminar una tabla del espacio de claves.

**Sintaxis**

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

Donde:
+ `IF EXISTS` evita que `DROP TABLE` falle si la tabla no existe. (Opcional)
+ `table_name` es el nombre de la tabla que se va a desechar.

**Ejemplo**

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

# Tipos definidos por el usuario () UDTs
<a name="cql.ddl.type"></a>

*UDT*: agrupación de campos y tipos de datos que puede utilizar para definir una sola columna en Amazon Keyspaces. Los tipos de datos válidos UDTs son todos los tipos de datos de Cassandra compatibles, incluidas las colecciones y otros UDTs que ya haya creado en el mismo espacio de claves. Para obtener más información sobre los tipos de datos de Cassandra compatibles, consulte. [Compatibilidad con tipos de datos de 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>

Utilice la `CREATE TYPE` sentencia para crear un tipo nuevo.

 **Sintaxis**

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

Donde:
+ `IF NOT EXISTS``CREATE TYPE`evita que se produzca un error si el tipo ya existe. (Opcional)
+ `udt_name`es el nombre completo de la UDT en formato tipográfico, por ejemplo. `my_keyspace.my_type` Si define el espacio de claves actual con la `USE` instrucción, no necesita especificar el nombre del espacio de claves.
+ `field_definition`consta de un nombre y un tipo.

En la siguiente tabla se muestran ejemplos de nombres UDT permitidos. La primera columna muestra cómo introducir el nombre al crear el tipo, y la segunda columna muestra cómo Amazon Keyspaces formatea el nombre internamente. Amazon Keyspaces espera el nombre formateado para operaciones como. `GetType`


| Nombre introducido | Nombre formateado | Nota | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sin comillas dobles, Amazon Keyspaces convierte todos los caracteres en mayúsculas en minúsculas. | 
|  "MY\$1UDT"  | MY\$1UDT | Con las comillas dobles, Amazon Keyspaces respeta los caracteres en mayúscula y elimina las comillas dobles del nombre formateado. | 
|  "1234"  | 1234 | Con comillas dobles, el nombre puede empezar por un número y Amazon Keyspaces elimina las comillas dobles del nombre formateado. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Con comillas dobles, el nombre puede contener caracteres especiales y Amazon Keyspaces elimina las comillas dobles del nombre formateado. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces elimina las comillas dobles exteriores y las comillas dobles de escape del nombre formateado. | 

**Ejemplos**

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

Puede anidar UDTs si la UDT anidada está inmovilizada. Para obtener más información sobre los valores predeterminados y las cuotas de los tipos, consulte. [Cuotas de UDT y valores predeterminados de Amazon Keyspaces](quotas.md#udt-table)

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

Para ver más ejemplos de código que muestran cómo crear UDTs, consulte[Tipos definidos por el usuario (UDTs) en Amazon Keyspaces](udts.md).

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

Utilice la `DROP TYPE` sentencia para eliminar una UDT. Solo puede eliminar un tipo que no esté siendo utilizado por otro tipo o tabla.

 **Sintaxis**

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

Donde:
+ `IF EXISTS``DROP TYPE`evita que se produzca un error si el tipo no existe. (Opcional)
+ `udt_name`es el nombre completo de la UDT en formato tipográfico, por ejemplo. `my_keyspace.my_type` Si define el espacio de claves actual con la `USE` instrucción, no necesita especificar el nombre del espacio de claves.

**Ejemplo**

```
DROP TYPE udt_name;
```