

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Instruções DDL (linguagem de definição de dados) no Amazon Keyspaces
<a name="cql.ddl"></a>

A *linguagem de definição de dados* (DDL) é o conjunto de instruções do Cassandra Query Language (CQL) que você usa para gerenciar estruturas de dados no Amazon Keyspaces (para Apache Cassandra), como espaços de chaves e tabelas. Você usa o DDL para criar essas estruturas de dados, modificá-las depois de criadas e removê-las quando não estiverem mais em uso. O Amazon Keyspaces executa operações de DDL de forma assíncrona. Para obter mais informações sobre como confirmar se uma operação assíncrona foi concluída, consulte [Criação e exclusão assíncronas de espaços de chave e tabelas](functional-differences.md#functional-differences.table-keyspace-management).

 As seguintes instruções DLL são compatíveis: 
+  [CRIAR ESPAÇO DE CHAVES](cql.ddl.keyspace.md#cql.ddl.keyspace.create) 
+  [ALTERAR ESPAÇO DE CHAVES](cql.ddl.keyspace.md#cql.ddl.keyspace.alter) 
+  [DESCARTAR ESPAÇO DE CHAVES](cql.ddl.keyspace.md#cql.ddl.keyspace.drop) 
+  [USO](cql.ddl.keyspace.md#cql.ddl.keyspace.use) 
+  [CRIAR TABELA](cql.ddl.table.md#cql.ddl.table.create) 
+  [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter) 
+  [RESTAURAR TABELA](cql.ddl.table.md#cql.ddl.table.restore) 
+  [DESCARTAR TABELA](cql.ddl.table.md#cql.ddl.table.drop) 
+  [TIPO DE CRIAÇÃO](cql.ddl.type.md#cql.ddl.type.create) 
+  [TIPO DE GOTA](cql.ddl.type.md#cql.ddl.type.drop) 

**Topics**
+ [Keyspaces](cql.ddl.keyspace.md)
+ [Tabelas](cql.ddl.table.md)
+ [Tipos definidos pelo usuário () UDTs](cql.ddl.type.md)

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

Um *espaço de chaves* agrupa tabelas relacionadas que são relevantes para um ou mais aplicativos. Em termos de um sistema de gerenciamento de banco de dados relacional (RDBMS), os espaços de chave são aproximadamente semelhantes aos bancos de dados, espaços de tabela ou construções similares.

**nota**  
No Apache Cassandra, os espaços de chave determinam como os dados são replicados entre vários nós de armazenamento. No entanto, o Amazon Keyspaces é um serviço totalmente gerenciado: os detalhes de sua camada de armazenamento são gerenciados em seu nome. Por esse motivo, os espaços de chave no Amazon Keyspaces são apenas estruturas lógicas e não estão relacionados ao armazenamento físico subjacente.

Para informações sobre limites e restrições de cota para os espaços de chaves do Amazon Keyspaces, consulte [Cotas para Amazon Keyspaces (para Apache Cassandra)](quotas.md).

**Topics**
+ [CRIAR ESPAÇO DE CHAVES](#cql.ddl.keyspace.create)
+ [ALTERAR ESPAÇO DE CHAVES](#cql.ddl.keyspace.alter)
+ [DESCARTAR ESPAÇO DE CHAVES](#cql.ddl.keyspace.drop)
+ [USE](#cql.ddl.keyspace.use)

## CRIAR ESPAÇO DE CHAVES
<a name="cql.ddl.keyspace.create"></a>

Use a instrução `CREATE KEYSPACE` para criar um novo espaço de chaves.

**Sintaxe**

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

Em que:
+ `keyspace_name` é o nome do espaço de chaves a ser criado.
+ *opções* são uma ou mais das seguintes:
  + `REPLICATION`: um mapa que indica a estratégia de replicação para o espaço de chaves:
    + `SingleRegionStrategy`: para um espaço de chaves de região única. (Obrigatório)
    + `NetworkTopologyStrategy`— Especifique pelo menos dois Regiões da AWS. O fator de replicação para cada região é três. (Optional)
  + `DURABLE_WRITES`: as gravações no Amazon Keyspaces são sempre duráveis, portanto, essa opção não é necessária. No entanto, se especificado, o valor deve ser `true`.
  + `TAGS`: uma lista de tags de pares de chave-valor a serem anexadas ao recurso ao ser criado. (Optional)

**Exemplo**

Crie um espaço de chaves da seguinte forma.

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

Para criar um espaço chave multirregional, especifique `NetworkTopologyStrategy` e inclua pelo menos dois. Regiões da AWS O fator de replicação para cada região é três.

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

## ALTERAR ESPAÇO DE CHAVES
<a name="cql.ddl.keyspace.alter"></a>

Você pode usar a `ALTER KEYSPACE WITH` declaração para as seguintes *opções*:
+ `REPLICATION`— Use essa opção para adicionar uma nova Região da AWS réplica a um keyspace. Você pode adicionar uma nova região a uma única região ou a um keyspace multirregional. 
+ `TAGS`— Use essa opção para adicionar ou remover tags de um keyspace.

**Sintaxe**

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

Em que:
+ `keyspace_name` é o nome do espaço de chaves a ser alterado.
+ *as opções* são uma das seguintes:
  + `ADD | DROP TAGS`: uma lista de tags de pares chave-valor a serem adicionadas ou removidas do espaço de chaves. 
  + `REPLICATION`— Um mapa que indica a estratégia de replicação para o keyspace; 
    + `class`— `NetworkTopologyStrategy` define o keyspace como um keyspace multirregional.
    + `region`— Especifique um adicional Região da AWS para esse espaço de teclas. O fator de replicação para cada região é três.
    + `CLIENT_SIDE_TIMESTAMPS`— O padrão é`DISABLED`. Você só pode alterar o status para`ENABLED`.

**Exemplos**

Altere um espaço de teclas conforme mostrado no exemplo a seguir para adicionar tags.

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

Para adicionar uma terceira região a um keyspace multirregional, você pode usar a seguinte declaração.

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

## DESCARTAR ESPAÇO DE CHAVES
<a name="cql.ddl.keyspace.drop"></a>

Use a instrução `DROP KEYSPACE` para remover um espaço de chaves, incluindo todo o seu conteúdo, como tabelas.

**Sintaxe**

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

Em que:
+ *keyspace\$1name é o nome* do espaço de chaves a ser eliminado.

**Exemplo**

```
DROP KEYSPACE my_keyspace;
```

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

Use a `USE` instrução para definir o espaço de teclas atual. Isso permite que você faça referência a objetos vinculados a um espaço de chave específico, por exemplo, tabelas e tipos, sem usar o nome totalmente qualificado que inclui o prefixo do espaço de teclas. 

**Sintaxe**

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

Em que:
+ *keyspace\$1name é o nome* do keyspace a ser usado.

**Exemplo**

```
USE my_keyspace;
```

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

As *tabelas* são as principais estruturas de dados no Amazon Keyspaces. Os dados em uma tabela são organizados em linhas e colunas. Um subconjunto dessas colunas é usado para determinar o particionamento (e, em última análise, o posicionamento dos dados) por meio da especificação de uma chave de partição.

Outro conjunto de colunas pode ser definido em colunas de cluster, o que significa que elas podem participar como predicados na execução da consulta. 

Por padrão, novas tabelas são criadas com capacidade de throughput *sob demanda*. Você pode alterar o modo de capacidade de tabelas novas e existentes. Para obter mais informações sobre os modos read/write de taxa de transferência de capacidade, consulte[Configurar modos de read/write capacidade no Amazon Keyspaces](ReadWriteCapacityMode.md). 

Para tabelas no modo provisionado, você pode configurar `AUTOSCALING_SETTINGS` opcionais. Para obter mais informações sobre o ajuste de escala automático do Amazon Keyspaces e as opções disponíveis, consulte [Configurar o ajuste de escala automático em uma tabela existente](autoscaling.configureTable.md).

Para informações sobre limites e restrições de cotas para tabelas do Amazon Keyspaces, consulte [Cotas para Amazon Keyspaces (para Apache Cassandra)](quotas.md).

**Topics**
+ [CRIAR TABELA](#cql.ddl.table.create)
+ [ALTER TABLE](#cql.ddl.table.alter)
+ [RESTAURAR TABELA](#cql.ddl.table.restore)
+ [DESCARTAR TABELA](#cql.ddl.table.drop)

## CRIAR TABELA
<a name="cql.ddl.table.create"></a>

Use a instrução do `CREATE TABLE` para criar uma nova tabela.

 **Sintaxe**

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

Em que:
+ `table_name` é o nome da tabela a ser criada. O nome totalmente qualificado inclui o prefixo keyspace. Como alternativa, você pode definir o espaço de teclas atual com a instrução `USE` keyspace.
+ `column_definition` consiste no seguinte:
  +  *`column_name`*: o nome da coluna.
  + `cql_type`: um tipo de dados do Amazon Keyspaces (consulte[Tipos de dados](cql.elements.md#cql.data-types)).
  + `FROZEN`— Designa essa coluna definida pelo usuário ou do tipo `collection` (por exemplo, `LIST``SET`, ou`MAP`) como congelada. Uma coleção *congelada* é serializada em um único valor imutável e tratada como a `BLOB`. Para obter mais informações, consulte [Tipos de coleção](cql.elements.md#cql.data-types.collection).
  + `STATIC`: designa essa coluna como estática. As colunas estáticas armazenam valores que são compartilhados por todas as linhas na mesma partição.
  + `PRIMARY KEY`: designa essa coluna como a chave primária da tabela.
+ `primary_key` consiste no seguinte:
  + `partition_key`
  + `clustering_columns`
+ `partition_key`:
  + A chave de partição pode ser uma única coluna ou um valor composto formado por duas ou mais colunas. A parte da chave de partição da chave primária é necessária e determina como o Amazon Keyspaces armazena seus dados. 
+ `clustering_columns`:
  + A parte opcional da coluna de cluster da sua chave primária determina como os dados são agrupados e classificados em cada partição. 
+ `table_options` consiste no seguinte:
  + *`CLUSTERING ORDER BY`*: a ORDEM DE CLUSTER padrão em uma tabela é composta por suas chaves de cluster na direção de classificação `ASC` (ascendente). Especifique-o para substituir o comportamento de classificação padrão. 
  +  *`cdc`*— Um booleano que especifica se o Amazon Keyspaces cria um fluxo de captura de dados de alteração (CDC) para a tabela. O padrão é `false`. Para especificar o `view type` ao ativar um fluxo, defina `cdc_specification` com`CUSTOM_PROPERTIES`. 
  +  *`CUSTOM_PROPERTIES`*: um mapa de configurações específicas do Amazon Keyspaces.
    +  `capacity_mode`: especifica o modo de capacidade de throughput de leitura/gravação da tabela. As opções são `throughput_mode:PAY_PER_REQUEST` e `throughput_mode:PROVISIONED`. O modo de capacidade provisionada requer `read_capacity_units` e `write_capacity_units` como entradas. O padrão é `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: especifica o fluxo `view_type` do CDC. As opções são:
      + `NEW_AND_OLD_IMAGES`— ambas as versões da linha, antes e depois da alteração. Esse é o padrão.
      + `NEW_IMAGE`— a versão da linha após a alteração.
      + `OLD_IMAGE`— a versão da linha antes da alteração.
      + `KEYS_ONLY`— as chaves de partição e agrupamento da linha que foi alterada.

      Para obter mais informações sobre fluxos CDC, consulte. [Trabalhando com fluxos de captura de dados de alteração (CDC) no Amazon Keyspaces](cdc.md) Para obter exemplos de código, consulte [Ative um stream do CDC ao criar uma nova tabela no Amazon Keyspaces](keyspaces-enable-cdc-new-table.md).
    +  `client_side_timestamps`: especifica se os carimbos de data/hora do lado do cliente estão habilitados ou desabilitados para a tabela. As opções são `{'status': 'enabled'}` e `{'status': 'disabled'}`. Se não especificado, o padrão será `status:disabled`. Depois que os carimbos de data/hora do lado do cliente forem habilitados para uma tabela, essa configuração não poderá ser desativada. 
    +  `encryption_specification`: especifica as opções de criptografia para criptografia em repouso. Se não especificado, o padrão será `encryption_type:AWS_OWNED_KMS_KEY`. A opção de criptografia chave gerenciada pelo cliente exige a AWS KMS chave no formato Amazon Resource Name (ARN) como entrada::`kms_key_identifier:ARN`. `kms_key_identifier:ARN` 
    +  `point_in_time_recovery`: especifica se a point-in-time restauração está ativada ou desativada para a tabela. As opções são `status:enabled` e `status:disabled`. Se não especificado, o padrão será `status:disabled`.
    + `replica_updates`: especifica as configurações de uma tabela multirregional que são específicas de uma Região da AWS. Para uma tabela multirregional, você pode configurar a capacidade de leitura da tabela de forma diferente por Região da AWS. Para isso, você pode fazer isso configurando os parâmetros a seguir. Para ter mais informações e exemplos, consulte [Criar uma tabela multirregional no modo provisionado com ajuste de escala automático no Amazon Keyspaces](tables-mrr-create-provisioned.md).
      + `region`— A réplica Região da AWS da tabela com as seguintes configurações:
        + `read_capacity_units`
    +  `TTL`: habilita as configurações personalizadas de tempo de vida para a tabela. Para habilitá-la, use `status:enabled`. O padrão é `status:disabled`. Depois de habilitado o `TTL`, você não poderá desabilitá-lo para a tabela.
  + `AUTOSCALING_SETTINGS` inclui as seguintes configurações opcionais para tabelas no modo provisionado. Para ter mais informações e exemplos, consulte [Crie uma nova tabela com dimensionamento automático](autoscaling.createTable.md).
    + `provisioned_write_capacity_autoscaling_update`:
      + `autoscaling_disabled`: para ativar o ajuste de escala automático para capacidade de gravação, defina o valor como `false`. O padrão é `true`. (Optional)
      + `minimum_units`: o nível mínimo de throughput de gravação para o qual a tabela deve estar sempre pronta para dar suporte. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
      + `maximum_units`: o nível máximo de throughput de gravação para o qual a tabela deve estar sempre pronta para dar suporte. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
      + `scaling_policy`: o Amazon Keyspaces oferece suporte à política de rastreamento de alvos. A meta do ajuste de escala automático é a capacidade de gravação provisionada da tabela.
        + `target_tracking_scaling_policy_configuration`: para definir a política de rastreamento de metas, você deve definir o valor alvo. Para obter mais informações sobre rastreamento de destino e período de espera, consulte [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) no *Guia do usuário do Application Auto Scaling*. 
          + `target_value`: a taxa de utilização alvo da tabela. O ajuste de escala automático do Amazon Keyspaces garante que o índice de capacidade consumida para capacidade provisionada permaneça nesse valor ou próximo a ele. Você define `target_value` como uma porcentagem. Um duplo entre 20 e 90. (Obrigatória)
          + `scale_in_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de reduzir a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
          + `scale_out_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de aumentar a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
          + `disable_scale_in`: um `boolean` que especifica se `scale-in` está desativado ou ativado para a tabela. Por padrão, esse parâmetro é desabilitado. Para ativar `scale-in`, defina o valor de `boolean` como `FALSE`. Isso significa que a capacidade é reduzida automaticamente para uma tabela em seu nome. (Optional) 
    + `provisioned_read_capacity_autoscaling_update`:
      + `autoscaling_disabled`: para ativar o ajuste de escala automático da capacidade de leitura, defina o valor como `false`. O padrão é `true`. (Optional)
      + `minimum_units`: o nível mínimo de throughput que a tabela deve estar sempre pronta para suportar. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
      + `maximum_units`: o nível máximo de throughput para o qual a tabela deve estar sempre pronta para dar suporte. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
      + `scaling_policy`: o Amazon Keyspaces oferece suporte à política de rastreamento de alvos. A meta do ajuste de escala automático é a capacidade de leitura provisionada da tabela.
        + `target_tracking_scaling_policy_configuration`: para definir a política de rastreamento de metas, você deve definir o valor alvo. Para obter mais informações sobre rastreamento de destino e período de espera, consulte [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) no *Guia do usuário do Application Auto Scaling*. 
          + `target_value`: a taxa de utilização alvo da tabela. O ajuste de escala automático do Amazon Keyspaces garante que o índice de capacidade consumida para capacidade provisionada permaneça nesse valor ou próximo a ele. Você define `target_value` como uma porcentagem. Um duplo entre 20 e 90. (Obrigatória)
          + `scale_in_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de reduzir a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
          + `scale_out_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de aumentar a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
          + `disable_scale_in`: um `boolean` que especifica se `scale-in` está desativado ou ativado para a tabela. Por padrão, esse parâmetro é desabilitado. Para ativar `scale-in`, defina o valor de `boolean` como `FALSE`. Isso significa que a capacidade é reduzida automaticamente para uma tabela em seu nome. (Optional) 
    + `replica_updates`: especifica as configurações Região da AWS específicas de escalonamento automático de uma tabela multirregional. Para uma tabela multirregional, você pode configurar a capacidade de leitura da tabela de forma diferente por Região da AWS. Para isso, você pode fazer isso configurando os parâmetros a seguir. Para ter mais informações e exemplos, consulte [Atualize a capacidade provisionada e as configurações de ajuste de escala automático para uma tabela multirregional no Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— A réplica Região da AWS da tabela com as seguintes configurações:
        + `provisioned_read_capacity_autoscaling_update`
          + `autoscaling_disabled`: para ativar o ajuste de escala automático para a capacidade de leitura da tabela, defina o valor como `false`. O padrão é `true`. (Optional) 
**nota**  
O ajuste de escala automático de uma tabela multirregional precisa estar ativado ou desativado para todas as réplicas da tabela.
          + `minimum_units`: o nível mínimo de throughput de leitura para o qual a tabela deve estar sempre pronta para dar suporte. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
          + `maximum_units`: o nível máximo de throughput de leitura para o qual a tabela deve estar sempre pronta para dar suporte. O valor deve estar entre 1 e a cota máxima de throughput por segundo da sua conta (40.000 por padrão).
          + `scaling_policy`: o Amazon Keyspaces oferece suporte à política de rastreamento de alvos. A meta do ajuste de escala automático é a capacidade de leitura provisionada da tabela.
            + `target_tracking_scaling_policy_configuration`: para definir a política de rastreamento de metas, você deve definir o valor alvo. Para obter mais informações sobre rastreamento de destino e período de espera, consulte [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) no *Guia do usuário do Application Auto Scaling*. 
              + `target_value`: a taxa de utilização alvo da tabela. O ajuste de escala automático do Amazon Keyspaces garante que o índice de capacidade de leitura consumida para capacidade provisionada de leitura permaneça nesse valor ou próximo a ele. Você define `target_value` como uma porcentagem. Um duplo entre 20 e 90. (Obrigatória)
              + `scale_in_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de reduzir a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
              + `scale_out_cooldown`: um período de espera em segundos entre as atividades de ajuste de escala permite que a tabela se estabilize antes que outra atividade de aumentar a escala horizontalmente comece. Se nenhum valor for fornecido, o valor padrão será 0. (Optional)
              + `disable_scale_in`: um `boolean` que especifica se `scale-in` está desativado ou ativado para a tabela. Por padrão, esse parâmetro é desabilitado. Para ativar `scale-in`, defina o valor de `boolean` como `FALSE`. Isso significa que a capacidade de leitura é reduzida automaticamente para uma tabela em seu nome. (Optional) 
  + `default_time_to_live`: a configuração padrão de tempo de vida em segundos para a tabela.
  + `TAGS`: uma lista de tags de pares de chave-valor a serem anexadas ao recurso ao ser criado. 
  + `clustering_order` consiste no seguinte:
    +  *`column_name`*: o nome da coluna. 
    +  *`ASC | DESC`*: define o modificador de ordem ascendente (`ASC`) ou descendente (`DESC`). Se não especificado, o pedido padrão será ASC. 

**Exemplo**

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

Em uma tabela que usa colunas de cluster, as colunas sem cluster podem ser declaradas como estáticas na definição da tabela. Para obter mais informações sobre as colunas estáticas, consulte [Estimar o consumo de capacidade para colunas estáticas no Amazon Keyspaces](static-columns.md).

**Exemplo**

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

Você pode criar uma tabela com uma coluna que usa um tipo definido pelo usuário (UDT). A primeira instrução nos exemplos cria um tipo, a segunda instrução cria uma tabela com uma coluna que usa o tipo.

**Exemplo**

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

Use a instrução `ALTER TABLE` para adicionar novas colunas, adicionar tags ou alterar as propriedades personalizadas da tabela.

**Sintaxe**

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

Em que:
+ `table_name` é o nome da tabela a ser alterada.
+ `column_definition` é o nome da coluna e do tipo de dado a ser adicionado.
+ `column_definition_list` é uma lista de colunas separadas por vírgulas colocadas entre parênteses.
+ `table_options` consiste no seguinte:
  + `AUTOSCALING_SETTINGS` inclui as configurações opcionais de ajuste de escala automático para tabelas provisionadas. Para obter descrições detalhadas e de sintaxe, consulte [CRIAR TABELA](#cql.ddl.table.create). Para obter exemplos, consulte [Configurar o ajuste de escala automático em uma tabela existente](autoscaling.configureTable.md).
  +  *`cdc`*— Um booleano que especifica se o Amazon Keyspaces cria um fluxo de captura de dados de alteração (CDC) para a tabela. O padrão é `false`. Para especificar o `view type` ao ativar um fluxo, defina `cdc_specification` com`CUSTOM_PROPERTIES`. 
  +  *`CUSTOM_PROPERTIES`*: um mapa de configurações específicas para o Amazon Keyspaces.
    +  `capacity_mode`: especifica o modo de capacidade de throughput de leitura/gravação da tabela. As opções são `throughput_mode:PAY_PER_REQUEST` e `throughput_mode:PROVISIONED`. O modo de capacidade provisionada requer `read_capacity_units` e `write_capacity_units` como entradas. O padrão é `throughput_mode:PAY_PER_REQUEST`.
    +  `cdc_specification`: especifica o fluxo `view_type` do CDC. As opções são:
      + `NEW_AND_OLD_IMAGES`— ambas as versões da linha, antes e depois da alteração. Esse é o padrão.
      + `NEW_IMAGE`— a versão da linha após a alteração.
      + `OLD_IMAGE`— a versão da linha antes da alteração.
      + `KEYS_ONLY`— as chaves de partição e agrupamento da linha que foi alterada.

      Para obter mais informações sobre fluxos CDC, consulte. [Trabalhando com fluxos de captura de dados de alteração (CDC) no Amazon Keyspaces](cdc.md) Para obter exemplos de código, consulte [Habilite um stream CDC para uma tabela existente no Amazon Keyspaces](keyspaces-enable-cdc-alter-table.md).
    +  `client_side_timestamps`: especifica se os carimbos de data/hora do lado do cliente estão habilitados ou desabilitados para a tabela. As opções são `{'status': 'enabled'}` e `{'status': 'disabled'}`. Se não especificado, o padrão será `status:disabled`. Depois que os carimbos de data/hora do lado do cliente forem habilitados para uma tabela, essa configuração não poderá ser desativada. 
    +  `encryption_specification`: especifica a opção de criptografia para criptografia em repouso. As opções são `encryption_type:AWS_OWNED_KMS_KEY` e `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. A opção de criptografia de chave gerenciada pelo cliente exige a chave AWS KMS no formato Nome do Recurso da Amazon (ARN) como entrada: `kms_key_identifier:ARN`. 
    +  `point_in_time_recovery`: especifica se a point-in-time restauração está ativada ou desativada para a tabela. As opções são `status:enabled` e `status:disabled`. O padrão é `status:disabled`.
    + `replica_updates`: especifica as configurações Região da AWS específicas de uma tabela multirregional. Para uma tabela multirregional, você pode configurar a capacidade de leitura da tabela de forma diferente por Região da AWS. Para isso, você pode fazer isso configurando os parâmetros a seguir. Para ter mais informações e exemplos, consulte [Atualize a capacidade provisionada e as configurações de ajuste de escala automático para uma tabela multirregional no Amazon Keyspaces](tables-mrr-autoscaling.md).
      + `region`— A réplica Região da AWS da tabela com as seguintes configurações:
        + `read_capacity_units` 
    +  `ttl`: habilita as configurações personalizadas de tempo de vida para a tabela. Para habilitá-la, use `status:enabled`. O padrão é `status:disabled`. Depois de habilitado o `ttl`, você não poderá desabilitá-lo para a tabela.
+ `default_time_to_live`: A configuração padrão de tempo de vida em segundos para a tabela.
+ `TAGS` é uma lista de tags de pares de chave-valor a serem anexadas ao recurso.

**nota**  
Com ALTER TABLE, é possível alterar somente uma propriedade personalizada. Você não pode combinar mais de um comando ALTER TABLE na mesma instrução.

**Exemplos**

A instrução a seguir mostra como adicionar uma coluna a uma tabela existente.

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

Essa instrução mostra como adicionar duas colunas de coleção a uma tabela existente: 
+ Uma coluna de coleção congelada `col_frozen_list` que contém uma coleção congelada aninhada
+ Uma coluna de coleção não congelada `col_map` que contém uma coleção congelada aninhada

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

O exemplo a seguir mostra como adicionar uma coluna que usa um tipo definido pelo usuário (UDT) a uma tabela.

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

Para alterar o modo de capacidade de uma tabela e especificar unidades de capacidade de leitura e gravação, você pode usar a seguinte declaração.

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

A declaração a seguir especifica uma chave KMS gerenciada pelo cliente para a tabela.

```
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 ativar a point-in-time restauração de uma tabela, você pode usar a instrução a seguir.

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

Para definir um valor padrão de tempo de vida em segundos para uma tabela, você pode usar a seguinte declaração.

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

Essa instrução habilita configurações personalizadas de tempo de vida para uma tabela.

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

## RESTAURAR TABELA
<a name="cql.ddl.table.restore"></a>

Use a instrução do `RESTORE TABLE` ou restaure uma tabela para um ponto no tempo. Essa declaração exige que a point-in-time recuperação seja ativada em uma tabela. Para obter mais informações, consulte [Faça backup e restaure dados com point-in-time recuperação para Amazon Keyspaces](PointInTimeRecovery.md).

**Sintaxe**

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

Em que:
+ `restored_table_name` é o nome da tabela restaurada.
+ `source_table_name` é o nome da tabela de origem.
+ `table_options` consiste no seguinte:
  + `restore_timestamp` é a hora do ponto de restauração no formato ISO 8601. Se não for especificado, o carimbo de data/hora atual será usado.
  +  *`CUSTOM_PROPERTIES`*: um mapa de configurações específicas para o Amazon Keyspaces.
    +  `capacity_mode`: especifica o modo de capacidade de throughput de leitura/gravação da tabela. As opções são `throughput_mode:PAY_PER_REQUEST` e `throughput_mode:PROVISIONED`. O modo de capacidade provisionada requer `read_capacity_units` e `write_capacity_units` como entradas. O padrão é a configuração atual da tabela de origem.
    +  `encryption_specification`: especifica a opção de criptografia para criptografia em repouso. As opções são `encryption_type:AWS_OWNED_KMS_KEY` e `encryption_type:CUSTOMER_MANAGED_KMS_KEY`. A opção de criptografia chave gerenciada pelo cliente exige a AWS KMS chave no formato Amazon Resource Name (ARN) como entrada:. `kms_key_identifier:ARN` Para restaurar uma tabela criptografada com uma chave gerenciada pelo cliente para uma tabela criptografada com uma Chave pertencente à AWS, o Amazon Keyspaces requer acesso à AWS KMS chave da tabela de origem.
    +  `point_in_time_recovery`: especifica se a point-in-time restauração está ativada ou desativada para a tabela. As opções são `status:enabled` e `status:disabled`. Diferentemente de quando você cria novas tabelas, o status padrão das tabelas restauradas é `status:enabled` porque a configuração é herdada da tabela de origem. Para desativar o PITR para tabelas restauradas, você deve definir `status:disabled` explicitamente.
    + `replica_updates`: especifica as configurações Região da AWS específicas de uma tabela multirregional. Para uma tabela multirregional, você pode configurar a capacidade de leitura da tabela de forma diferente por Região da AWS. Para isso, você pode fazer isso configurando os parâmetros a seguir. 
      + `region`— A réplica Região da AWS da tabela com as seguintes configurações:
        + `read_capacity_units` 
  + `AUTOSCALING_SETTINGS` inclui as configurações opcionais de ajuste de escala automático para tabelas provisionadas. Para obter descrições detalhadas e de sintaxe, consulte [CRIAR TABELA](#cql.ddl.table.create).
  + `TAGS` é uma lista de tags de pares de chave-valor a serem anexadas ao recurso.

**nota**  
As tabelas excluídas só podem ser restauradas até o momento da exclusão.

**Exemplo**

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

## DESCARTAR TABELA
<a name="cql.ddl.table.drop"></a>

Use a instrução `DROP TABLE` para remover uma tabela do espaço de chaves.

**Sintaxe**

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

Em que:
+ `IF EXISTS` evita que `DROP TABLE` falhe se a tabela não existir. (Optional)
+ `table_name` é o nome do banco de dados a ser descartado.

**Exemplo**

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

# Tipos definidos pelo usuário () UDTs
<a name="cql.ddl.type"></a>

*UDT* — Um agrupamento de campos e tipos de dados que você pode usar para definir uma única coluna no Amazon Keyspaces. Todos os tipos de dados válidos do Cassandra UDTs são compatíveis com os tipos de dados do Cassandra, incluindo coleções e outros UDTs que você já criou no mesmo keyspace. Para obter mais informações sobre os tipos de dados do Cassandra compatíveis, consulte. [Suporte ao tipo de dados do 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>

Use a `CREATE TYPE` instrução para criar um novo tipo.

 **Sintaxe**

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

Em que:
+ `IF NOT EXISTS``CREATE TYPE`evita que falhe se o tipo já existir. (Optional)
+ `udt_name`é o nome totalmente qualificado do UDT em formato de tipo, por exemplo. `my_keyspace.my_type` Se você definir o espaço de teclas atual com a `USE` instrução, não precisará especificar o nome do espaço de teclas.
+ `field_definition`consiste em um nome e um tipo.

A tabela a seguir mostra exemplos de nomes de UDT permitidos. A primeira coluna mostra como inserir o nome ao criar o tipo, a segunda coluna mostra como o Amazon Keyspaces formata o nome internamente. O Amazon Keyspaces espera o nome formatado para operações como. `GetType`


| Nome inserido | Nome formatado | Observação | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sem aspas duplas, o Amazon Keyspaces converte todos os caracteres maiúsculos em minúsculas. | 
|  "MY\$1UDT"  | MY\$1UDT | Com aspas duplas, o Amazon Keyspaces respeita os caracteres maiúsculos e remove as aspas duplas do nome formatado. | 
|  "1234"  | 1234 | Com aspas duplas, o nome pode começar com um número, e o Amazon Keyspaces remove as aspas duplas do nome formatado. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Com aspas duplas, o nome pode conter caracteres especiais, e o Amazon Keyspaces remove as aspas duplas do nome formatado. | 
|  "nested""""""quotes"  | nested"""quotes | O Amazon Keyspaces remove as aspas duplas externas e as aspas duplas de escape do nome formatado. | 

**Exemplos**

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

Você pode aninhar UDTs se o UDT aninhado estiver congelado. Para obter mais informações sobre valores padrão e cotas para tipos, consulte[Cotas de UDT e valores padrão do Amazon Keyspaces](quotas.md#udt-table).

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

Para obter mais exemplos de código que mostram como criar UDTs, consulte[Tipos definidos pelo usuário (UDTs) no Amazon Keyspaces](udts.md).

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

Use a `DROP TYPE` instrução para excluir um UDT. Você só pode excluir um tipo que não esteja sendo usado por outro tipo ou tabela.

 **Sintaxe**

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

Em que:
+ `IF EXISTS``DROP TYPE`evita que falhe se o tipo não existir. (Optional)
+ `udt_name`é o nome totalmente qualificado do UDT em formato de tipo, por exemplo. `my_keyspace.my_type` Se você definir o espaço de teclas atual com a `USE` instrução, não precisará especificar o nome do espaço de teclas.

**Exemplo**

```
DROP TYPE udt_name;
```