

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

Erfahren Sie mehr über die Cassandra Query Language (CQL) -Elemente, die von Amazon Keyspaces unterstützt werden, darunter Bezeichner, Konstanten, Begriffe und Datentypen.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [Datentypen](#cql.data-types)
+ [JSON-Kodierung von Amazon Keyspaces-Datentypen](#cql.data-types.JSON)

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

Identifikatoren (oder Namen) werden verwendet, um Tabellen, Spalten und andere Objekte zu identifizieren. Ein Bezeichner kann in Anführungszeichen gesetzt werden oder nicht. Folgendes gilt.

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

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

Die folgenden Konstanten sind definiert.

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

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

Ein Begriff bezeichnet die Art von Werten, die unterstützt werden. Begriffe werden wie folgt definiert.

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

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

Amazon Keyspaces unterstützt die folgenden Datentypen:

### Zeichenfolgen-Typen
<a name="cql.data-types.string"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `ascii`  | Stellt eine ASCII-Zeichenfolge dar. | 
|  `text`  | Stellt eine UTF-8-kodierte Zeichenfolge dar. | 
|  `varchar`  |  Stellt eine UTF-8-kodierte Zeichenfolge dar (ist ein Alias für)`varchar`. `text`  | 

### Numerische Typen
<a name="cql.data-types.numeric"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `bigint`  | Stellt einen 64-Bit-Wert vom Typ Long mit Vorzeichen dar. | 
|  `counter`  | Stellt einen 64-Bit-Integer-Zähler mit Vorzeichen dar. Weitere Informationen finden Sie unter [Zähler](#cql.data-types.numeric.counters). | 
|  `decimal`  | Stellt eine Dezimalzahl mit variabler Genauigkeit dar. | 
|  `double`  | Stellt einen 64-Bit-IEEE-754-Gleitkommawert dar. | 
|  `float`  | Stellt einen 32-Bit-Gleitkommawert nach IEEE 754 dar. | 
|  `int`  |  Stellt einen 32-Bit-Int-Wert mit Vorzeichen dar.  | 
|  `varint`  |  Stellt einen Ganzzahlwert im Bereich \$1/-10^38 dar.  | 

#### Zähler
<a name="cql.data-types.numeric.counters"></a>

Eine `counter` Spalte enthält eine 64-Bit-Ganzzahl mit Vorzeichen. Der Zählerwert wird mithilfe der [UPDATE](cql.dml.update.md) Anweisung inkrementiert oder dekrementiert und kann nicht direkt festgelegt werden. Das macht `counter` Spalten nützlich, um Zählungen nachzuverfolgen. Mithilfe von Zählern können Sie beispielsweise die Anzahl der Einträge in einer Protokolldatei oder die Anzahl der Aufrufe eines Beitrags in einem sozialen Netzwerk verfolgen. Für `counter` Spalten gelten die folgenden Einschränkungen:
+ Eine Spalte vom Typ `counter` kann nicht Teil `primary key` einer Tabelle sein.
+ In einer Tabelle, die eine oder mehrere Spalten des Typs enthält`counter`, müssen alle Spalten in dieser Tabelle vom Typ sein`counter`.

In Fällen, in denen eine Zähleraktualisierung fehlschlägt (z. B. aufgrund von Timeouts oder Verbindungsverlust mit Amazon Keyspaces), weiß der Client nicht, ob der Zählerwert aktualisiert wurde. Wenn die Aktualisierung erneut versucht wird, wird die Aktualisierung des Zählerwerts möglicherweise ein zweites Mal angewendet.

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


****  

| Datentyp | Description | 
| --- | --- | 
|  `blob`  | Stellt beliebige Byte dar. | 

### Typ BOOLEAN
<a name="cql.data-types.boolean"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `boolean`  | Steht für true oderfalse. | 

### Zeitbezogene Typen
<a name="cql.data-types.time"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `date`  | Eine Zeichenfolge im Format<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | 64-Bit-Ganzzahl mit Vorzeichen, die das Datum und die Uhrzeit seit der Epoche (1. Januar 1970 um 00:00:00 GMT) in Millisekunden darstellt. | 
|  `timeuuid`  | [Stellt eine UUID der Version 1 dar.](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)) | 

### Sammlungstypen
<a name="cql.data-types.collection"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `list`  | Stellt eine geordnete Sammlung literaler Elemente dar. | 
|  `map`  | Stellt eine ungeordnete Sammlung von Schlüssel-Wert-Paaren dar. | 
|  `set`  | Stellt eine ungeordnete Sammlung von einem oder mehreren literalen Elementen dar. | 

Sie deklarieren eine Auflistungsspalte, indem Sie den Sammlungstyp verwenden, gefolgt von einem anderen Datentyp (z. B. `TEXT` oder`INT`) in spitzen Klammern. Sie können eine Spalte mit einem `SET` of erstellen`TEXT`, oder Sie können Paare aus `MAP` of `TEXT` und `INT` Schlüssel-Wert-Paaren erstellen, wie im folgenden Beispiel gezeigt.

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

Eine *nicht eingefrorene* Sammlung ermöglicht es Ihnen, Aktualisierungen an jedem einzelnen Sammlungselement vorzunehmen. Clientseitige Zeitstempel und Time-to-Live-Einstellungen (TTL) werden für einzelne Elemente gespeichert.

Wenn Sie das `FROZEN` Schlüsselwort für einen Sammlungstyp verwenden, werden die Werte der Sammlung zu einem einzigen unveränderlichen Wert serialisiert, und Amazon Keyspaces behandelt sie wie einen. `BLOB` *Dies ist eine eingefrorene Sammlung.* Eine `INSERT` `UPDATE` Oder-Anweisung überschreibt die gesamte eingefrorene Sammlung. Sie können einzelne Elemente in einer eingefrorenen Sammlung nicht aktualisieren.

Clientseitige Zeitstempel und TTL-Einstellungen (Time to Live) gelten für die gesamte eingefrorene Sammlung, nicht für einzelne Elemente. `Frozen`Sammlungsspalten können Teil einer Tabelle sein. `PRIMARY KEY`

Sie können eingefrorene Sammlungen verschachteln. Sie können beispielsweise `MAP` innerhalb von a definieren, `SET` wenn der `MAP` das `FROZEN` Schlüsselwort verwendet, wie im folgenden Beispiel gezeigt. 

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

Amazon Keyspaces unterstützt standardmäßig die Verschachtelung von bis zu 8 Ebenen eingefrorener Sammlungen. Weitere Informationen finden Sie unter [Amazon Keyspaces-Servicekontingente](quotas.md#table). Weitere Informationen zu den funktionalen Unterschieden mit Apache Cassandra finden Sie unter. [`FROZEN`Sammlungen](functional-differences.md#functional-differences.frozen-collections) Weitere Hinweise zur CQL-Syntax finden Sie unter [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) und. [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter)

### Typ „Tupel“
<a name="cql.data-types.tuple"></a>

Der `tuple` Datentyp steht für eine begrenzte Gruppe literaler Elemente. Sie können ein Tupel als Alternative zu einem verwenden. `user defined type` Sie müssen das `FROZEN` Schlüsselwort nicht für Tupel verwenden. Das liegt daran, dass ein Tupel immer eingefroren ist und Sie Elemente nicht einzeln aktualisieren können. 

### Andere Typen
<a name="cql.data-types.other"></a>


****  

| Datentyp | Description | 
| --- | --- | 
|  `inet`  | Eine Zeichenfolge, die eine IP-Adresse darstellt, IPv4 entweder im IPv6 Oder-Format. | 

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

In einer Amazon Keyspaces-Tabelle mit Clusterspalten können Sie das `STATIC` Schlüsselwort verwenden, um eine statische Spalte beliebigen Typs zu erstellen. 

Die folgende Aussage ist ein Beispiel dafür.

```
my_column INT STATIC
```

Weitere Hinweise zum Arbeiten mit statischen Spalten finden Sie unter[Schätzen Sie den Kapazitätsverbrauch für statische Spalten in Amazon Keyspaces](static-columns.md).

### Benutzerdefinierte Typen () UDTs
<a name="cql.data-types.user-defined"></a>

Amazon Keyspaces unterstützt benutzerdefinierte Typen ()UDTs. Sie können jeden gültigen Amazon Keyspaces-Datentyp verwenden, um eine UDT zu erstellen, einschließlich Sammlungen und anderer vorhandener. UDTs Sie erstellen UDTs in einem Schlüsselraum und können sie verwenden, um Spalten in einer beliebigen Tabelle im Schlüsselraum zu definieren.

Weitere Hinweise zur CQL-Syntax finden Sie unter. [Benutzerdefinierte Typen () UDTs](cql.ddl.type.md) Weitere Hinweise zur Arbeit mit finden Sie UDTs unter[Benutzerdefinierte Typen (UDTs) in Amazon Keyspaces](udts.md).

Informationen darüber, wie viele pro Schlüsselraum unterstützt UDTs werden, welche Verschachtelungsebenen unterstützt werden und welche anderen Standardwerte und Kontingente damit in Zusammenhang stehen UDTs, finden Sie unter. [Kontingente und Standardwerte für benutzerdefinierte Typen (UDTs) in Amazon Keyspaces](quotas.md#quotas-udts)

## JSON-Kodierung von Amazon Keyspaces-Datentypen
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces bietet dieselben JSON-Datentypzuordnungen wie Apache Cassandra. In der folgenden Tabelle werden die Datentypen beschrieben, die Amazon Keyspaces in `INSERT JSON` Anweisungen akzeptiert, und die Datentypen, die Amazon Keyspaces bei der Rückgabe von Daten mit der `SELECT JSON` Anweisung verwendet.

Für Einzelfeld-Datentypen wie`float`, `int` `UUID``date`, und können Sie Daten auch als einfügen. `string` Für zusammengesetzte Datentypen und Sammlungen wie `tuple` `map``list`, und können Sie Daten auch als JSON oder codiert `JSON string` einfügen.


****  

| JSON-Datentyp | In `INSERT JSON` Anweisungen akzeptierte Datentypen | In `SELECT JSON` Anweisungen zurückgegebene Datentypen | Hinweise | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | Verwendet JSON-Zeichen-Escape-Zeichen`\u`. | 
|  `bigint`  | integer, string | integer | Die Zeichenfolge muss eine gültige 64-Bit-Ganzzahl sein. | 
|  `blob`  | string | string | Die Zeichenfolge sollte mit beginnen, `0x` gefolgt von einer geraden Anzahl von Hex-Ziffern. | 
|  `boolean`  | boolean, string | boolean | Die Zeichenfolge muss entweder `true` oder sein`false`. | 
|  `date`  | string | string | Datum im Format`YYYY-MM-DD`, Zeitzone UTC. | 
|  `decimal`  | integer, float, string | float | Kann im clientseitigen Decoder die 32-Bit- oder 64-Bit-IEEE-754-Gleitkomma-Präzision überschreiten. | 
|  `double`  | integer, float, string | float | Die Zeichenfolge muss eine gültige Ganzzahl oder eine Fließkommazahl sein. | 
|  `float`  | integer, float, string | float | Die Zeichenfolge muss eine gültige Ganzzahl oder eine Fließkommazahl sein. | 
|  `inet`  | string | string | IPv4 oder IPv6 Adresse. | 
|  `int`  | integer, string | integer | Die Zeichenfolge muss eine gültige 32-Bit-Ganzzahl sein. | 
|  `list`  | list, string | list | Verwendet die native JSON-Listendarstellung. | 
|  `map`  | map, string | map | Verwendet die native JSON-Kartendarstellung. | 
|  `smallint`  | integer, string | integer | Die Zeichenfolge muss eine gültige 16-Bit-Ganzzahl sein. | 
|  `set`  | list, string | list | Verwendet die native JSON-Listendarstellung. | 
|  `text`  | string | string | Verwendet JSON-Zeichen-Escape`\u`. | 
|  `time`  | string | string | Tageszeit im Format`HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | Ein Zeitstempel. Mit Zeichenkettenkonstanten können Sie Zeitstempel als Datumsangaben speichern. Datumsstempel mit Format `YYYY-MM-DD HH:MM:SS.SSS` werden zurückgegeben. | 
|  `timeuuid`  | string | string | Geben Sie 1 UUID ein. Informationen [constants](#cql.elements.constants) zum UUID-Format finden Sie unter. | 
|  `tinyint`  | integer, string | integer | Die Zeichenfolge muss eine gültige 8-Bit-Ganzzahl sein. | 
|  `tuple`  | list, string | list | Verwendet die native JSON-Listendarstellung. | 
|  `UDT`  | map, string | map | Verwendet die native JSON-Kartendarstellung mit Feldnamen als Schlüssel. | 
|  `uuid`  | string | string | Informationen [constants](#cql.elements.constants) zum UUID-Format finden Sie unter. | 
|  `varchar`  | string | string | Verwendet JSON-Zeichen-Escape. `\u` | 
|  `varint`  | integer, string | integer | Variable Länge; kann 32-Bit- oder 64-Bit-Ganzzahlen im clientseitigen Decoder überlaufen. | 