

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

# Pernyataan DHTML (bahasa manipulasi data) di Amazon Keyspaces
<a name="cql.dml"></a>

*Bahasa manipulasi data* (DHTML) adalah kumpulan pernyataan Cassandra Query Language (CQL) yang Anda gunakan untuk mengelola data di Amazon Keyspaces (untuk Apache Cassandra) tabel. Anda menggunakan pernyataan DML untuk menambah, mengubah, atau menghapus data dalam sebuah tabel.

Anda juga menggunakan pernyataan DMLuntuk query data dalam tabel. (Perhatikan bahwa CQL tidak mendukung gabungan atau subkueri.)

**Topics**
+ [SELECT](cql.dml.select.md)
+ [INSERT](cql.dml.insert.md)
+ [UPDATE](cql.dml.update.md)
+ [DELETE](cql.dml.delete.md)

# SELECT
<a name="cql.dml.select"></a>

Gunakan pernyataan SELECT untuk menanyakan data. 

**Sintaksis**

```
select_statement ::=  SELECT  [ JSON ] ( select_clause | '*' )
                      FROM table_name
                      [ WHERE 'where_clause' ]
                      [ ORDER BY 'ordering_clause' ]
                      [ LIMIT (integer | bind_marker) ]
                      [ ALLOW FILTERING ]
select_clause    ::=  selector [ AS identifier ] ( ',' selector [ AS identifier ] )
selector         ::=  column_name
                      | term
                      | CAST '(' selector AS cql_type ')'
                      | function_name '(' [ selector ( ',' selector )* ] ')'
where_clause     ::=  relation ( AND relation )*
relation         ::=  column_name operator term
                      TOKEN
operator         ::=  '=' | '<' | '>' | '<=' | '>=' | IN | CONTAINS | CONTAINS KEY
ordering_clause  ::=  column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*
```

**Contoh**

```
SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;
```

Untuk tabel yang memetakan tipe data yang disandikan JSON ke tipe data Amazon Keyspaces, lihat. [Pengkodean JSON dari tipe data Amazon Keyspaces](cql.elements.md#cql.data-types.JSON)

**Menggunakan kata `IN` kunci**

`IN`Kata kunci menentukan kesetaraan untuk satu atau lebih nilai. Ini dapat diterapkan ke kunci partisi dan kolom pengelompokan. Hasil dikembalikan dalam urutan kunci disajikan dalam `SELECT` pernyataan.

**Contoh**

```
SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 = 2;
SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 <= 2;
SELECT * from mykeyspace.mytable WHERE primary.key1 = 1 and clustering.key1 IN (1, 2);
SELECT * from mykeyspace.mytable WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;
```

Untuk informasi selengkapnya tentang `IN` kata kunci dan cara Amazon Keyspaces memproses pernyataan, lihat. [Gunakan `IN` operator dengan `SELECT` pernyataan dalam kueri di Amazon Keyspaces](in.select.md)

**Hasil pemesanan**

`ORDER BY`Klausa menentukan urutan dari hasil yang dikembalikan. Dibutuhkan sebagai argumen daftar nama kolom bersama dengan urutan pengurutan untuk setiap kolom. Anda hanya dapat menentukan kolom pengelompokan dalam klausa pengurutan. Kolom non-clustering tidak diperbolehkan. Opsi urutan sortir adalah `ASC` untuk urutan naik dan `DESC` untuk urutan urutan menurun. Jika urutan pengurutan dihilangkan, urutan default kolom pengelompokan digunakan. Untuk kemungkinan urutan pesanan, lihat[Pesan hasil dengan `ORDER BY` di Amazon Keyspaces](ordering-results.md).

**Contoh**

```
SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;
```

Saat menggunakan `ORDER BY` dengan `IN` kata kunci, hasil diurutkan dalam halaman. Pemesanan ulang penuh dengan pagination dinonaktifkan tidak didukung.

**TOKEN**

Anda dapat menerapkan `TOKEN` fungsi ke `PARTITION KEY` kolom `SELECT` dan `WHERE` klausa. Dengan `TOKEN` fungsi tersebut, Amazon Keyspaces mengembalikan baris berdasarkan nilai token yang dipetakan `PARTITION_KEY` daripada nilai. `PARTITION KEY`

`TOKEN`hubungan tidak didukung dengan `IN` kata kunci.

**Contoh**

```
SELECT TOKEN(id) from my_table; 

SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
```

**Fungsi TTL**

Anda dapat menggunakan `TTL` fungsi dengan `SELECT` pernyataan untuk mengambil waktu kedaluwarsa dalam detik yang disimpan untuk kolom. Jika tidak ada `TTL` nilai yang ditetapkan, fungsi kembali`null`.

**Contoh**

```
SELECT TTL(my_column) from my_table;
```

`TTL`Fungsi ini tidak dapat digunakan pada kolom multi-sel seperti koleksi.

**WRITETIMEfungsi**

Anda dapat menggunakan `WRITETIME` fungsi dengan `SELECT` pernyataan untuk mengambil stempel waktu yang disimpan sebagai metadata untuk nilai kolom hanya jika tabel menggunakan stempel waktu sisi klien. Untuk informasi selengkapnya, lihat [Stempel waktu sisi klien di Amazon Keyspaces](client-side-timestamps.md). 

```
SELECT WRITETIME(my_column) from my_table;
```

`WRITETIME`Fungsi ini tidak dapat digunakan pada kolom multi-sel seperti koleksi.

**catatan**  
Untuk kompatibilitas dengan perilaku driver Cassandra yang telah ditetapkan, kebijakan otorisasi berbasis tag tidak diberlakukan saat Anda melakukan operasi pada tabel sistem dengan menggunakan panggilan API Cassandra Query Language (CQL) melalui driver Cassandra dan alat pengembang. Untuk informasi selengkapnya, lihat [Akses sumber daya Amazon Keyspaces berdasarkan tag](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-tags).

# INSERT
<a name="cql.dml.insert"></a>

Gunakan `INSERT` pernyataan untuk menambahkan baris ke tabel.

**Sintaksis**

```
insert_statement ::=  INSERT INTO table_name ( names_values | json_clause )
                      [ IF NOT EXISTS ]
                      [ USING update_parameter ( AND update_parameter )* ]
names_values     ::=  names VALUES tuple_literal
json_clause      ::=  JSON string [ DEFAULT ( NULL | UNSET ) ]                
names            ::=  '(' column_name ( ',' column_name )* ')'
```

**Contoh**

```
INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id)
VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;
```

**Perbarui parameter**

`INSERT`mendukung nilai-nilai berikut sebagai`update_parameter`:
+ `TTL`— Nilai waktu dalam hitungan detik. Nilai maksimum yang dapat dikonfigurasi adalah 630.720.000 detik, yang setara dengan 20 tahun.
+ `TIMESTAMP`— `bigint` Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00 GMT. Stempel waktu di Amazon Keyspaces harus berada di antara kisaran 2 hari di masa lalu dan 5 menit di masa depan.

**Contoh**

```
INSERT INTO my_table (userid, time, subject, body, user)
        VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123')
        USING TTL 259200;
```

**Dukungan JSON**

Untuk tabel yang memetakan tipe data yang disandikan JSON ke tipe data Amazon Keyspaces, lihat. [Pengkodean JSON dari tipe data Amazon Keyspaces](cql.elements.md#cql.data-types.JSON)

Anda dapat menggunakan `JSON` kata kunci untuk menyisipkan peta `JSON` -encoded sebagai satu baris. Untuk kolom yang ada dalam tabel tetapi dihilangkan dalam pernyataan sisipan JSON, gunakan `DEFAULT UNSET` untuk mempertahankan nilai yang ada. Gunakan `DEFAULT NULL` untuk menulis nilai NULL ke setiap baris kolom yang dihilangkan dan menimpa nilai yang ada (biaya penulisan standar berlaku). `DEFAULT NULL`adalah opsi default.

**Contoh**

```
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678",
                                                 "name": "Russ",
                                                 "project": "NightFlight",
                                                 "region": "US",
                                                 "division": "Engineering",
                                                 "role": "IC",
                                                 "pay_scale": 3,
                                                 "vacation_hrs": 12.5,
                                                 "manager_id": "234-56-7890"}';
```

Jika data JSON berisi kunci duplikat, Amazon Keyspaces menyimpan nilai terakhir untuk kunci (mirip dengan Apache Cassandra). Dalam contoh berikut, di mana kunci duplikat`id`, nilainya `234-56-7890` digunakan.

**Contoh**

```
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678",
                                                 "name": "Russ",
                                                 "project": "NightFlight",
                                                 "region": "US",
                                                 "division": "Engineering",
                                                 "role": "IC",
                                                 "pay_scale": 3,
                                                 "vacation_hrs": 12.5,
                                                 "id": "234-56-7890"}';
```

# UPDATE
<a name="cql.dml.update"></a>

Gunakan `UPDATE` pernyataan untuk memodifikasi baris dalam tabel.

**Sintaksis**

```
update_statement ::=  UPDATE table_name
                      [ USING update_parameter ( AND update_parameter )* ]
                      SET assignment ( ',' assignment )*
                      WHERE where_clause
                      [ IF ( EXISTS | condition ( AND condition )*) ]
update_parameter ::=  ( integer | bind_marker )
assignment       ::=  simple_selection '=' term
                     | column_name '=' column_name ( '+' | '-' ) term
                     | column_name '=' list_literal '+' column_name
simple_selection ::=  column_name
                     | column_name '[' term ']'
                     | column_name '.' `field_name
condition        ::=  simple_selection operator term
```

**Contoh**

```
UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;
```

Untuk menambah`counter`, gunakan sintaks berikut. Untuk informasi selengkapnya, lihat [Penghitung](cql.elements.md#cql.data-types.numeric.counters).

```
UPDATE ActiveUsers SET counter = counter + 1  WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';
```

**Perbarui parameter**

`UPDATE`mendukung nilai-nilai berikut sebagai`update_parameter`:
+ `TTL`— Nilai waktu dalam hitungan detik. Nilai maksimum yang dapat dikonfigurasi adalah 630.720.000 detik, yang setara dengan 20 tahun.
+ `TIMESTAMP`— `bigint` Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00 GMT. Stempel waktu di Amazon Keyspaces harus berada di antara kisaran 2 hari di masa lalu dan 5 menit di masa depan.

**Contoh**

```
UPDATE my_table (userid, time, subject, body, user)
        VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123')
        USING TIMESTAMP '2022-11-03 13:30:54+0400';
```

# DELETE
<a name="cql.dml.delete"></a>

Gunakan `DELETE` pernyataan untuk menghapus baris dari tabel.

**Sintaksis**

```
delete_statement ::=  DELETE [ simple_selection ( ',' simple_selection ) ]
                      FROM table_name
                      [ USING update_parameter ( AND update_parameter )* ]
                      WHERE where_clause
                      [ IF ( EXISTS | condition ( AND condition )*) ]

simple_selection ::=  column_name
                     | column_name '[' term ']'
                     | column_name '.' `field_name

condition        ::=  simple_selection operator term
```

Di mana:
+ `table_name`adalah tabel yang berisi baris yang ingin Anda hapus.

**Contoh**

```
DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;
```

`DELETE`mendukung nilai berikut sebagai`update_parameter`:
+ `TIMESTAMP`— `bigint` Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00 GMT.