

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Elemen Cassandra Query Language (CQL) di Amazon Keyspaces
<a name="cql.elements"></a>

Pelajari tentang elemen Cassandra Query Language (CQL) yang didukung oleh Amazon Keyspaces, termasuk pengidentifikasi, konstanta, istilah, dan tipe data.

**Topics**
+ [identifier](#cql.elements.identifier)
+ [constants](#cql.elements.constants)
+ [term](#cql.elements.term)
+ [Jenis Data](#cql.data-types)
+ [Pengkodean JSON dari tipe data Amazon Keyspaces](#cql.data-types.JSON)

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

Pengidentifikasi (atau nama) digunakan untuk mengidentifikasi tabel, kolom, dan objek lainnya. Pengenal dapat dikutip atau tidak dikutip. Berikut ini berlaku.

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

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

Konstanta berikut didefinisikan.

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

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

Sebuah istilah menunjukkan jenis nilai yang didukung. Ketentuan didefinisikan oleh yang berikut ini.

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

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

Amazon Keyspaces mendukung tipe data berikut:

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


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `ascii`  | Merupakan string karakter ASCII. | 
|  `text`  | Merupakan string yang dikodekan UTF-8. | 
|  `varchar`  |  Merupakan string yang dikodekan UTF-8 (`varchar`adalah alias untuk). `text`  | 

### Jenis numerik
<a name="cql.data-types.numeric"></a>


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `bigint`  | Merupakan panjang bertanda 64-bit. | 
|  `counter`  | Merupakan penghitung bilangan bulat bertanda 64-bit. Untuk informasi selengkapnya, lihat [Penghitung](#cql.data-types.numeric.counters). | 
|  `decimal`  | Merupakan desimal presisi variabel. | 
|  `double`  | Merupakan titik mengambang IEEE 754 64-bit. | 
|  `float`  | Merupakan titik mengambang IEEE 754 32-bit. | 
|  `int`  |  Merupakan int bertanda 32-bit.  | 
|  `varint`  |  Merupakan nilai integer dalam rentang \$1/- 10 ^ 38.  | 

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

`counter`Kolom berisi integer bertanda 64-bit. Nilai penghitung bertambah atau dikurangi menggunakan [UPDATE](cql.dml.update.md) pernyataan, dan tidak dapat diatur secara langsung. Ini membuat `counter` kolom berguna untuk melacak jumlah. Misalnya, Anda dapat menggunakan penghitung untuk melacak jumlah entri dalam file log atau berapa kali posting telah dilihat di jejaring sosial. Pembatasan berikut berlaku untuk `counter` kolom:
+ Kolom tipe `counter` tidak dapat menjadi bagian `primary key` dari tabel.
+ Dalam tabel yang berisi satu atau beberapa kolom tipe`counter`, semua kolom dalam tabel itu harus bertipe`counter`.

Jika pembaruan penghitung gagal (misalnya, karena batas waktu atau kehilangan koneksi dengan Amazon Keyspaces), klien tidak tahu apakah nilai penghitung telah diperbarui. Jika pembaruan dicoba lagi, pembaruan ke nilai penghitung mungkin diterapkan untuk kedua kalinya.

### Jenis gumpalan
<a name="cql.data-types.blob"></a>


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `blob`  | Merupakan byte arbitrer. | 

### Jenis Boolean
<a name="cql.data-types.boolean"></a>


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `boolean`  | Mewakili true ataufalse. | 

### Jenis terkait waktu
<a name="cql.data-types.time"></a>


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `date`  | String dalam format<yyyy>-<mm>-<dd>. | 
|  `timestamp`  | Integer bertanda 64-bit yang mewakili tanggal dan waktu sejak epoch (1 Januari 1970 pukul 00:00:00 GMT) dalam milidetik. | 
|  `timeuuid`  | Merupakan [versi 1 UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). | 

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


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `list`  | Merupakan kumpulan elemen literal yang diurutkan. | 
|  `map`  | Merupakan kumpulan pasangan kunci-nilai yang tidak berurutan. | 
|  `set`  | Merupakan koleksi yang tidak berurutan dari satu atau lebih elemen literal. | 

Anda mendeklarasikan kolom koleksi dengan menggunakan tipe koleksi diikuti oleh tipe data lain (misalnya, `TEXT` atau`INT`) dalam tanda kurung miring. Anda dapat membuat kolom dengan `SET` dari`TEXT`, atau Anda dapat membuat pasangan `MAP` dari `TEXT` dan `INT` kunci-nilai, seperti yang ditunjukkan pada contoh berikut.

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

Koleksi *non-beku* memungkinkan Anda untuk membuat pembaruan untuk setiap elemen koleksi individu. Stempel waktu sisi klien dan pengaturan Time to Live (TTL) disimpan untuk elemen individual.

Saat Anda menggunakan `FROZEN` kata kunci pada jenis koleksi, nilai koleksi diserialisasikan menjadi satu nilai yang tidak dapat diubah, dan Amazon Keyspaces memperlakukannya seperti a. `BLOB` Ini adalah koleksi *beku*. `UPDATE`Pernyataan `INSERT` atau menimpa seluruh koleksi beku. Anda tidak dapat membuat pembaruan untuk elemen individual di dalam koleksi beku.

Stempel waktu sisi klien dan pengaturan Time to Live (TTL) berlaku untuk seluruh koleksi beku, bukan untuk elemen individual. `Frozen`kolom koleksi dapat menjadi bagian `PRIMARY KEY` dari tabel.

Anda dapat membuat sarang koleksi beku. Misalnya, Anda dapat menentukan `MAP` dalam a `SET` jika menggunakan `FROZEN` kata kunci, seperti yang ditunjukkan pada contoh berikut. `MAP` 

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

Amazon Keyspaces mendukung penyarangan hingga 8 tingkat koleksi beku secara default. Untuk informasi selengkapnya, lihat [Kuota layanan Amazon Keyspaces](quotas.md#table). Untuk informasi lebih lanjut tentang perbedaan fungsional dengan Apache Cassandra, lihat. [`FROZEN`koleksi](functional-differences.md#functional-differences.frozen-collections) Untuk informasi selengkapnya tentang sintaks CQL, lihat dan. [CREATE TABLE](cql.ddl.table.md#cql.ddl.table.create) [ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter)

### Tipe Tuple
<a name="cql.data-types.tuple"></a>

Tipe `tuple` data mewakili sekelompok elemen literal yang dibatasi. Anda dapat menggunakan tupel sebagai alternatif untuk a`user defined type`. Anda tidak perlu menggunakan `FROZEN` kata kunci untuk tupel. Ini karena Tuple selalu dibekukan dan Anda tidak dapat memperbarui elemen satu per satu. 

### Tipe lainnya
<a name="cql.data-types.other"></a>


****  

| Jenis data | Deskripsi | 
| --- | --- | 
|  `inet`  | Sebuah string yang mewakili alamat IP, dalam salah satu IPv4 atau IPv6 format. | 

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

Dalam tabel Amazon Keyspaces dengan kolom pengelompokan, Anda dapat menggunakan `STATIC` kata kunci untuk membuat kolom statis jenis apa pun. 

Pernyataan berikut adalah contoh dari ini.

```
my_column INT STATIC
```

Untuk informasi selengkapnya tentang bekerja dengan kolom statis, lihat[Perkirakan konsumsi kapasitas untuk kolom statis di Amazon Keyspaces](static-columns.md).

### Jenis yang ditentukan pengguna () UDTs
<a name="cql.data-types.user-defined"></a>

Amazon Keyspaces mendukung tipe yang ditentukan pengguna (). UDTs Anda dapat menggunakan tipe data Amazon Keyspaces yang valid untuk membuat UDT, termasuk koleksi dan lainnya yang sudah ada. UDTs Anda membuat UDTs di ruang kunci dan dapat menggunakannya untuk menentukan kolom dalam tabel apa pun di ruang kunci.

Untuk informasi selengkapnya tentang sintaks CQL, lihat. [Jenis yang ditentukan pengguna () UDTs](cql.ddl.type.md) Untuk informasi lebih lanjut tentang bekerja dengan UDTs, lihat[Tipe yang ditentukan pengguna (UDTs) di Amazon Keyspaces](udts.md).

Untuk meninjau berapa banyak UDTs yang didukung per ruang kunci, tingkat penyarangan yang didukung, serta nilai dan kuota default lainnya yang terkait UDTs, lihat. [Kuota dan nilai default untuk tipe yang ditentukan pengguna () UDTs di Amazon Keyspaces](quotas.md#quotas-udts)

## Pengkodean JSON dari tipe data Amazon Keyspaces
<a name="cql.data-types.JSON"></a>

Amazon Keyspaces menawarkan pemetaan tipe data JSON yang sama dengan Apache Cassandra. Tabel berikut menjelaskan tipe data yang diterima Amazon Keyspaces dalam `INSERT JSON` pernyataan dan tipe data yang digunakan Amazon Keyspaces saat mengembalikan data dengan pernyataan. `SELECT JSON`

Untuk tipe data bidang tunggal seperti`float`,,, dan `int` `UUID``date`, Anda juga dapat menyisipkan data sebagai `string` file. Untuk tipe dan koleksi data gabungan, seperti,, dan `tuple` `map``list`, Anda juga dapat menyisipkan data sebagai JSON atau sebagai `JSON string` encode.


****  

| Jenis data JSON | Tipe data diterima dalam `INSERT JSON` pernyataan | Tipe data dikembalikan dalam `SELECT JSON` pernyataan | Catatan | 
| --- | --- | --- | --- | 
|  `ascii`  | string | string | Menggunakan pelarian `\u` karakter JSON. | 
|  `bigint`  | integer, string | integer | String harus berupa integer 64-bit yang valid. | 
|  `blob`  | string | string | String harus dimulai dengan `0x` diikuti oleh jumlah digit hex genap. | 
|  `boolean`  | boolean, string | boolean | String harus salah satu `true` atau`false`. | 
|  `date`  | string | string | Tanggal dalam format`YYYY-MM-DD`, zona waktu UTC. | 
|  `decimal`  | integer, float, string | float | Dapat melebihi presisi floating point 32-bit atau 64-bit IEEE-754 dalam decoder sisi klien. | 
|  `double`  | integer, float, string | float | String harus berupa integer atau float yang valid. | 
|  `float`  | integer, float, string | float | String harus berupa integer atau float yang valid. | 
|  `inet`  | string | string | IPv4 atau IPv6 alamat. | 
|  `int`  | integer, string | integer | String harus berupa bilangan bulat 32-bit yang valid. | 
|  `list`  | list, string | list | Menggunakan representasi daftar JSON asli. | 
|  `map`  | map, string | map | Menggunakan representasi peta JSON asli. | 
|  `smallint`  | integer, string | integer | String harus berupa bilangan bulat 16-bit yang valid. | 
|  `set`  | list, string | list | Menggunakan representasi daftar JSON asli. | 
|  `text`  | string | string | Menggunakan pelarian `\u` karakter JSON. | 
|  `time`  | string | string | Waktu dalam format`HH-MM-SS[.fffffffff]`. | 
|  `timestamp`  | integer, string | string | Sebuah stempel waktu. Konstanta string memungkinkan Anda menyimpan stempel waktu sebagai tanggal. Perangko tanggal dengan format `YYYY-MM-DD HH:MM:SS.SSS` dikembalikan. | 
|  `timeuuid`  | string | string | Tipe 1 UUID. Lihat [constants](#cql.elements.constants) untuk format UUID. | 
|  `tinyint`  | integer, string | integer | String harus berupa bilangan bulat 8-bit yang valid. | 
|  `tuple`  | list, string | list | Menggunakan representasi daftar JSON asli. | 
|  `UDT`  | map, string | map | Menggunakan representasi peta JSON asli dengan nama bidang sebagai kunci. | 
|  `uuid`  | string | string | Lihat [constants](#cql.elements.constants) untuk format UUID. | 
|  `varchar`  | string | string | Menggunakan pelarian `\u` karakter JSON. | 
|  `varint`  | integer, string | integer | Panjang variabel; mungkin meluap bilangan bulat 32-bit atau 64-bit di dekoder sisi klien. | 