

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á.

# Elementos do Cassandra Query Language (CQL) no Amazon Keyspaces
<a name="cql.elements"></a>

Saiba mais sobre os elementos do Cassandra Query Language (CQL) que são compatíveis com o Amazon Keyspaces, incluindo identificadores, constantes, termos e tipos de dados.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [

## Tipos de dados
](#cql.data-types)
+ [

## Codificação JSON dos tipos de dados do Amazon Keyspaces
](#cql.data-types.JSON)

## Identificadores
<a name="cql.elements.identifier"></a>

Identificadores (ou nomes) são usados para identificar tabelas, colunas e outros objetos. Um identificador pode ser citado ou não. O seguinte se aplica.

```
identifier          ::=  unquoted_identifier | quoted_identifier
unquoted_identifier ::=  re('[a-zA-Z][a-zA-Z0-9_]*')
quoted_identifier   ::=  '"' (any character where " can appear if doubled)+ '"'
```

## Constantes
<a name="cql.elements.constants"></a>

As seguintes constantes são definidas.

```
constant ::=  string | integer | float | boolean | uuid | blob | NULL
string   ::=  '\'' (any character where ' can appear if doubled)+ '\''
              '$$' (any character other than '$$') '$$'
integer  ::=  re('-?[0-9]+')
float    ::=  re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY
boolean  ::=  TRUE | FALSE
uuid     ::=  hex{8}-hex{4}-hex{4}-hex{4}-hex{12}
hex      ::=  re("[0-9a-fA-F]")
blob     ::=  '0' ('x' | 'X') hex+
```

## Termos
<a name="cql.elements.term"></a>

Um termo denota o tipo de valores que são compatíveis. Os termos são definidos pelo seguinte.

```
term                 ::=  constant | literal | function_call | arithmetic_operation | type_hint | bind_marker
literal              ::=  collection_literal | tuple_literal
function_call        ::=  identifier '(' [ term (',' term)* ] ')'
arithmetic_operation ::=  '-' term | term ('+' | '-' | '*' | '/' | '%') term
```

## Tipos de dados
<a name="cql.data-types"></a>

O Amazon Keyspaces é compatível com os seguintes tipos de dados:

### Tipos de string
<a name="cql.data-types.string"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `ascii`  | Representa uma cadeia de caracteres ASCII. | 
|  `text`  | Representa uma cadeia de caracteres codificada UTF-8. | 
|  `varchar`  |  Representa uma string codificada em UTF-8 (`varchar` é um alias para `text`).  | 

### Tipos numéricos
<a name="cql.data-types.numeric"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `bigint`  | Representa um comprimento assinado de 64 bits. | 
|  `counter`  | Representa um contador de números inteiros assinado de 64 bits. Para obter mais informações, consulte [Contadores](#cql.data-types.numeric.counters). | 
|  `decimal`  | Representa um decimal de precisão variável. | 
|  `double`  | Representa um ponto flutuante IEEE 754 de 64 bits. | 
|  `float`  | Representa um ponto flutuante IEEE 754 de 32 bits. | 
|  `int`  |  Representa um int assinado de 32 bits.  | 
|  `varint`  |  Representa um valor inteiro dentro do intervalo \$1/- 10^38.  | 

#### Contadores
<a name="cql.data-types.numeric.counters"></a>

Uma `counter` coluna contém um número inteiro assinado de 64 bits. O valor do contador é incrementado ou diminuído usando a instrução [UPDATE](cql.dml.update.md) e não pode ser definido diretamente. Isso torna as colunas `counter` úteis para rastrear contagens. Por exemplo, você pode usar contadores para rastrear o número de entradas em um arquivo de log ou o número de vezes que uma publicação foi visualizada em uma rede social. As restrições a seguir se aplicam às colunas `counter`:
+ Uma coluna do tipo `counter` não pode fazer parte do `primary key` de uma tabela.
+ Em uma tabela que contém uma ou mais colunas do tipo `counter`, todas as colunas dessa tabela devem ser do tipo `counter`.

Nos casos em que uma atualização do contador falha (por exemplo, devido ao tempo limite ou à perda de conexão com o Amazon Keyspaces), o cliente não sabe se o valor do contador foi atualizado. Se a atualização for repetida, a atualização do valor do contador poderá ser aplicada pela segunda vez.

### Tipo Blob
<a name="cql.data-types.blob"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `blob`  | Representa bytes arbitrários. | 

### Tipo booliano
<a name="cql.data-types.boolean"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `boolean`  | Representa true ou false. | 

### Tipos relacionados ao tempo
<a name="cql.data-types.time"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `date`  | Uma string no formato<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | Número inteiro assinado de 64 bits representando a data e a hora desde a época (1º de janeiro de 1970 às 00:00:00 GMT) em milissegundos. | 
|  `timeuuid`  | Representa um [UUID da versão 1](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). | 

### Tipos de coleção
<a name="cql.data-types.collection"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `list`  | Representa uma coleção ordenada de elementos literais. | 
|  `map`  | Representa uma coleção não ordenada de pares de chave-valor. | 
|  `set`  | Representa uma coleção não ordenada de um ou mais elementos literais. | 

Você declara uma coluna de coleta usando o tipo de coleta seguido por outro tipo de dados (por exemplo, `TEXT` ou `INT`) entre parênteses angulares “<>”. Você pode criar uma coluna com um `SET` de `TEXT`, ou você pode criar um par de valor-chave `MAP` de `TEXT` e `INT`, conforme mostrado no exemplo a seguir.

```
SET <TEXT>
MAP <TEXT, INT>
```

Uma coleção *não congelada* permite que você faça atualizações em cada elemento individual da coleção. Os carimbos de data e hora do lado do cliente e as configurações de tempo de vida (TTL) são armazenados para elementos individuais.

Quando você usa a palavra-chave `FROZEN` em um tipo de coleção, os valores da coleção são serializados em um único valor imutável, e o Amazon Keyspaces os trata como um `BLOB`. Esta é uma coleção *congelada*. Uma declaração `INSERT` ou `UPDATE` sobrescreve toda a coleção congelada. Você não pode fazer atualizações em elementos individuais dentro de uma coleção congelada.

Os carimbos de data/hora do lado do cliente e as configurações de tempo de vida (TTL) se aplicam a toda a coleção congelada, não a elementos individuais. Colunas da coleção `Frozen` podem fazer parte de uma tabela de `PRIMARY KEY`.

Você pode aninhar coleções congeladas. Por exemplo, você pode definir o `MAP` dentro de um `SET` se `MAP` estiver usando a palavra-chave `FROZEN`, conforme mostrado no exemplo a seguir. 

```
SET <FROZEN> <MAP <TEXT, INT>>>
```

O Amazon Keyspaces suporta o agrupamento de até 8 níveis de coleções congeladas por padrão. Para obter mais informações, consulte [Service Quotas do Amazon Keyspaces](quotas.md#table). Para obter mais informações sobre diferenças funcionais com o Apache Cassandra, consulte [Coleções `FROZEN`](functional-differences.md#functional-differences.frozen-collections). Para obter mais informações sobre sintaxe de CQL, consulte [CRIAR TABELA](cql.ddl.table.md#cql.ddl.table.create) e [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter).

### Tipo de tupla
<a name="cql.data-types.tuple"></a>

O tipo de dados `tuple` representa um grupo limitado de elementos literais. Você pode usar uma tupla como alternativa a `user defined type`. Você não precisa usar a palavra-chave `FROZEN` para tuplas. Isso ocorre porque uma tupla está sempre congelada e você não pode atualizar elementos individualmente. 

### Outros tipos
<a name="cql.data-types.other"></a>


****  

| Tipo de dados | Description | 
| --- | --- | 
|  `inet`  | Uma string representando um endereço IP, em um IPv4 ou no IPv6 formato. | 

### Estático
<a name="cql.data-types.static"></a>

Em uma tabela do Amazon Keyspaces com colunas de clustering, você pode usar a palavra-chave `STATIC` para criar uma coluna estática de qualquer tipo. 

A instrução a seguir é um exemplo disso.

```
my_column INT STATIC
```

Para obter mais informações sobre trabalho com colunas estáticas, consulte [Estimar o consumo de capacidade para colunas estáticas no Amazon Keyspaces](static-columns.md).

### Tipos definidos pelo usuário () UDTs
<a name="cql.data-types.user-defined"></a>

O Amazon Keyspaces oferece suporte a tipos definidos pelo usuário (). UDTs Você pode usar qualquer tipo de dados válido do Amazon Keyspaces para criar um UDT, incluindo coleções e outros existentes. UDTs Você cria UDTs em um espaço de chave e pode usá-las para definir colunas em qualquer tabela no espaço de chave.

Para obter mais informações sobre sintaxe de CQL, consulte [Tipos definidos pelo usuário () UDTs](cql.ddl.type.md). Para obter mais informações sobre como trabalhar com UDTs, consulte[Tipos definidos pelo usuário (UDTs) no Amazon Keyspaces](udts.md).

Para analisar quantos UDTs são suportados por espaço de chave, níveis de aninhamento suportados e outros valores e cotas padrão relacionados a UDTs, consulte. [Cotas e valores padrão para tipos definidos pelo usuário (UDTs) no Amazon Keyspaces](quotas.md#quotas-udts)

## Codificação JSON dos tipos de dados do Amazon Keyspaces
<a name="cql.data-types.JSON"></a>

O Amazon Keyspaces oferece os mesmos mapeamentos de tipos de dados JSON que o Apache Cassandra. A tabela a seguir descreve os tipos de dados que o Amazon Keyspaces aceita em declarações `INSERT JSON` e os tipos de dados que o Amazon Keyspaces usa ao retornar dados com a declaração `SELECT JSON`.

Para tipos de dados de campo único como `float`, `int`, `UUID` e`date`, você também pode inserir dados como `string`. Para tipos de dados compostos e coleções, como`tuple`,`map` e`list`, você também pode inserir dados como JSON ou codificados`JSON string`.


****  

| Tipo de dados do JSON | Tipos de dados aceitos em declarações `INSERT JSON` | Tipos de dados retornados em declarações `SELECT JSON` | Observações | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | Usa `\u` escape de caracteres JSON. | 
|  `bigint`  | integer, string | integer | A string deve ser um número inteiro válido de 64 bits. | 
|  `blob`  | string | string | A string deve começar com `0x` seguida por um número par de dígitos hexadecimais. | 
|  `boolean`  | boolean, string | boolean | String deve ser `true` ou `false`. | 
|  `date`  | string | string | Data em formato`YYYY-MM-DD`, fuso horário UTC. | 
|  `decimal`  | integer, float, string | float | Pode exceder a precisão de ponto flutuante IEEE-754 de 32 bits ou 64 bits no decodificador do lado do cliente. | 
|  `double`  | integer, float, string | float | A string deve ser um número inteiro ou flutuante válido. | 
|  `float`  | integer, float, string | float | A string deve ser um número inteiro ou flutuante válido. | 
|  `inet`  | string | string | IPv4 ou IPv6 endereço. | 
|  `int`  | integer, string | integer | A string deve ser um número inteiro válido de 32 bits. | 
|  `list`  | list, string | list | Usa a representação nativa da lista JSON. | 
|  `map`  | map, string | map | Usa a representação nativa do mapa JSON. | 
|  `smallint`  | integer, string | integer | A string deve ser um número inteiro válido de 16 bits. | 
|  `set`  | list, string | list | Usa a representação nativa da lista JSON. | 
|  `text`  | string | string | Usa `\u` escape de caracteres JSON. | 
|  `time`  | string | string | Hora do dia em formato `HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | Um carimbo de data/hora. As constantes de string permitem que você armazene carimbos de data/hora como datas. Os carimbos de data com formato `YYYY-MM-DD HH:MM:SS.SSS` são retornados. | 
|  `timeuuid`  | string | string | Tipo 1 UUID. Consulte [constants](#cql.elements.constants) para o formato UUID. | 
|  `tinyint`  | integer, string | integer | A string deve ser um número inteiro válido de 8 bits. | 
|  `tuple`  | list, string | list | Usa a representação nativa da lista JSON. | 
|  `UDT`  | map, string | map | Usa a representação do mapa JSON nativo com nomes de campo como chaves. | 
|  `uuid`  | string | string | Consulte [constants](#cql.elements.constants) para o formato UUID. | 
|  `varchar`  | string | string | Usa `\u` escape de caracteres JSON. | 
|  `varint`  | integer, string | integer | Comprimento variável; pode ultrapassar números inteiros de 32 bits ou 64 bits no decodificador do lado do cliente. | 