

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Elementi del Cassandra Query Language (CQL) in Amazon Keyspaces
<a name="cql.elements"></a>

Scopri gli elementi del Cassandra Query Language (CQL) supportati da Amazon Keyspaces, inclusi identificatori, costanti, termini e tipi di dati.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [Tipi di dati](#cql.data-types)
+ [Codifica JSON dei tipi di dati Amazon Keyspaces](#cql.data-types.JSON)

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

Gli identificatori (o nomi) vengono utilizzati per identificare tabelle, colonne e altri oggetti. Un identificatore può essere citato o non citato. Si applica quanto segue.

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

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

Sono definite le seguenti costanti.

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

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

Un termine indica il tipo di valori supportati. I termini sono definiti come segue.

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

## Tipi di dati
<a name="cql.data-types"></a>

Amazon Keyspaces supporta i seguenti tipi di dati:

### Tipo stringa
<a name="cql.data-types.string"></a>


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `ascii`  | Rappresenta una stringa di caratteri ASCII. | 
|  `text`  | Rappresenta una stringa con codifica UTF-8. | 
|  `varchar`  |  Rappresenta una stringa con codifica UTF-8 (è un alias per)`varchar`. `text`  | 

### Tipi numerici
<a name="cql.data-types.numeric"></a>


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `bigint`  | Rappresenta un valore long firmato a 64 bit. | 
|  `counter`  | Rappresenta un contatore intero con segno a 64 bit. Per ulteriori informazioni, consulta [Contatori](#cql.data-types.numeric.counters). | 
|  `decimal`  | Rappresenta un decimale a precisione variabile. | 
|  `double`  | Rappresenta una virgola mobile IEEE 754 a 64 bit. | 
|  `float`  | Rappresenta una virgola mobile IEEE 754 a 32 bit. | 
|  `int`  |  Rappresenta un int. firmato a 32 bit.  | 
|  `varint`  |  Rappresenta un valore intero compreso nell'intervallo \$1/-10^38.  | 

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

Una `counter` colonna contiene un numero intero con segno a 64 bit. Il valore del contatore viene incrementato o diminuito utilizzando l'[UPDATE](cql.dml.update.md)istruzione e non può essere impostato direttamente. Ciò rende `counter` le colonne utili per tenere traccia dei conteggi. Ad esempio, puoi utilizzare i contatori per tenere traccia del numero di voci in un file di registro o del numero di volte in cui un post è stato visualizzato su un social network. Le seguenti restrizioni si applicano alle `counter` colonne:
+ Una colonna di tipo `counter` non può far parte `primary key` di una tabella.
+ In una tabella che contiene una o più colonne di tipo`counter`, tutte le colonne della tabella devono essere di tipo`counter`.

Nei casi in cui un controaggiornamento fallisce (ad esempio, a causa di timeout o perdita di connessione con Amazon Keyspaces), il client non sa se il valore del contatore è stato aggiornato. Se l'aggiornamento viene riprovato, l'aggiornamento al valore del contatore potrebbe essere applicato una seconda volta.

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


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `blob`  | Rappresenta byte arbitrari. | 

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


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `boolean`  | Rappresenta true o. false | 

### Tipi relativi al tempo
<a name="cql.data-types.time"></a>


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `date`  | Una stringa nel formato<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | Numero intero con segno a 64 bit che rappresenta la data e l'ora dall'epoca (1° gennaio 1970 alle 00:00:00 GMT) in millisecondi. | 
|  `timeuuid`  | [Rappresenta](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)) un UUID della versione 1. | 

### Tipi di raccolta
<a name="cql.data-types.collection"></a>


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `list`  | Rappresenta una raccolta ordinata di elementi letterali. | 
|  `map`  | Rappresenta una raccolta non ordinata di coppie chiave-valore. | 
|  `set`  | Rappresenta una raccolta non ordinata di uno o più elementi letterali. | 

Si dichiara una colonna di raccolta utilizzando il tipo di raccolta seguito da un altro tipo di dati (ad esempio `TEXT` o`INT`) tra parentesi angolate. È possibile creare una colonna con un `SET` of `TEXT` oppure creare una coppia `MAP` di `TEXT` e `INT` chiave-valore, come illustrato nell'esempio seguente.

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

Una raccolta *non congelata* consente di aggiornare ogni singolo elemento della raccolta. I timestamp sul lato client e le impostazioni Time to Live (TTL) vengono memorizzati per i singoli elementi.

Quando utilizzi la `FROZEN` parola chiave su un tipo di raccolta, i valori della raccolta vengono serializzati in un unico valore immutabile e Amazon Keyspaces li tratta come un. `BLOB` *Questa è una collezione congelata.* Un'`UPDATE`istruzione `INSERT` or sovrascrive l'intera raccolta congelata. Non è possibile aggiornare singoli elementi all'interno di una raccolta congelata.

I timestamp sul lato client e le impostazioni Time to Live (TTL) si applicano all'intera raccolta congelata, non ai singoli elementi. `Frozen`le colonne della raccolta possono far parte di una tabella. `PRIMARY KEY`

Puoi annidare raccolte congelate. Ad esempio, potete definire a `MAP` entro a `SET` se `MAP` sta utilizzando la `FROZEN` parola chiave, come illustrato nell'esempio seguente. 

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

Amazon Keyspaces supporta l'annidamento di un massimo di 8 livelli di raccolte congelate per impostazione predefinita. Per ulteriori informazioni, consulta [Quote di servizio Amazon Keyspaces](quotas.md#table). Per ulteriori informazioni sulle differenze funzionali con Apache Cassandra, consulta. [`FROZEN`collezioni](functional-differences.md#functional-differences.frozen-collections) Per ulteriori informazioni sulla sintassi CQL, vedere e. [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter)

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

Il tipo di `tuple` dati rappresenta un gruppo limitato di elementi letterali. Puoi usare una tupla come alternativa a. `user defined type` Non è necessario utilizzare la `FROZEN` parola chiave per le tuple. Questo perché una tupla è sempre bloccata e non è possibile aggiornare gli elementi singolarmente. 

### Altri tipi
<a name="cql.data-types.other"></a>


****  

| Tipo di dati | Description | 
| --- | --- | 
|  `inet`  | Una stringa che rappresenta un indirizzo IP, in uno dei due IPv4 IPv6 formati. | 

### Statico
<a name="cql.data-types.static"></a>

In una tabella Amazon Keyspaces con colonne di clustering, puoi utilizzare la `STATIC` parola chiave per creare una colonna statica di qualsiasi tipo. 

La seguente dichiarazione ne è un esempio.

```
my_column INT STATIC
```

Per ulteriori informazioni sull'utilizzo delle colonne statiche, vedere[Stima del consumo di capacità per le colonne statiche in Amazon Keyspaces](static-columns.md).

### Tipi definiti dall'utente () UDTs
<a name="cql.data-types.user-defined"></a>

Amazon Keyspaces supporta tipi definiti dall'utente (). UDTs Puoi utilizzare qualsiasi tipo di dati Amazon Keyspaces valido per creare un UDT, incluse raccolte e altri tipi esistenti. UDTs Puoi creare UDTs in un keyspace e puoi usarli per definire colonne in qualsiasi tabella nel keyspace.

Per ulteriori informazioni sulla sintassi CQL, vedere. [Tipi definiti dall'utente () UDTs](cql.ddl.type.md) Per ulteriori informazioni sull'utilizzo di UDTs, vedere. [Tipi definiti dall'utente (UDTs) in Amazon Keyspaces](udts.md)

Per verificare quanti UDTs sono supportati per keyspace, i livelli di nidificazione supportati e altri valori e quote predefiniti correlati, consulta. UDTs [Quote e valori predefiniti per i tipi definiti dall'utente (UDTs) in Amazon Keyspaces](quotas.md#quotas-udts)

## Codifica JSON dei tipi di dati Amazon Keyspaces
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces offre le stesse mappature dei tipi di dati JSON di Apache Cassandra. La tabella seguente descrive i tipi di dati che Amazon Keyspaces accetta nelle `INSERT JSON` istruzioni e i tipi di dati utilizzati da Amazon Keyspaces quando restituisce dati con l'istruzione. `SELECT JSON`

Per tipi di dati a campo singolo come`float`,`int`, e `UUID``date`, puoi anche inserire dati come file. `string` Per i tipi di dati e le raccolte composti, ad esempio `tuple``map`, e`list`, puoi anche inserire dati come JSON o come codificati. `JSON string`


****  

| Tipo di dati JSON | Tipi di dati accettati nelle dichiarazioni `INSERT JSON` | Tipi di dati restituiti nelle `SELECT JSON` istruzioni | Note | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | Utilizza l'escape `\u` dei caratteri JSON. | 
|  `bigint`  | integer, string | integer | La stringa deve essere un numero intero valido a 64 bit. | 
|  `blob`  | string | string | La stringa deve iniziare con `0x` seguita da un numero pari di cifre esadecimali. | 
|  `boolean`  | boolean, string | boolean | La stringa deve essere una delle due opzioni`true`. `false` | 
|  `date`  | string | string | Formato della data`YYYY-MM-DD`, fuso orario UTC. | 
|  `decimal`  | integer, float, string | float | Può superare la precisione in virgola mobile IEEE-754 a 32 o 64 bit nel decoder lato client. | 
|  `double`  | integer, float, string | float | La stringa deve essere un numero intero o un float valido. | 
|  `float`  | integer, float, string | float | La stringa deve essere un numero intero o un float valido. | 
|  `inet`  | string | string | IPv4 o indirizzo. IPv6  | 
|  `int`  | integer, string | integer | La stringa deve essere un numero intero valido a 32 bit. | 
|  `list`  | list, string | list | Utilizza la rappresentazione nativa dell'elenco JSON. | 
|  `map`  | map, string | map | Utilizza la rappresentazione cartografica JSON nativa. | 
|  `smallint`  | integer, string | integer | La stringa deve essere un numero intero valido a 16 bit. | 
|  `set`  | list, string | list | Utilizza la rappresentazione nativa dell'elenco JSON. | 
|  `text`  | string | string | Utilizza l'escape dei caratteri JSON. `\u` | 
|  `time`  | string | string | Ora del giorno nel formato`HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | Un Timestamp. Le costanti di stringa consentono di memorizzare i timestamp come date. Vengono restituiti timbri datari con formato. `YYYY-MM-DD HH:MM:SS.SSS` | 
|  `timeuuid`  | string | string | UUID di tipo 1. Vedi [constants](#cql.elements.constants) per il formato UUID. | 
|  `tinyint`  | integer, string | integer | La stringa deve essere un numero intero valido a 8 bit. | 
|  `tuple`  | list, string | list | Utilizza la rappresentazione nativa dell'elenco JSON. | 
|  `UDT`  | map, string | map | Utilizza la rappresentazione cartografica JSON nativa con i nomi dei campi come chiavi. | 
|  `uuid`  | string | string | Vedi [constants](#cql.elements.constants) per il formato UUID. | 
|  `varchar`  | string | string | Utilizza l'escape dei caratteri JSON. `\u` | 
|  `varint`  | integer, string | integer | Lunghezza variabile; potrebbe superare numeri interi a 32 o 64 bit nel decoder lato client. | 