DMLpernyataan (bahasa manipulasi data) di Amazon Keyspaces - Amazon Keyspaces (untuk Apache Cassandra)

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

DMLpernyataan (bahasa manipulasi data) di Amazon Keyspaces

Data manipulation language (DML) adalah kumpulan pernyataan Cassandra Query Language (CQL) yang Anda gunakan untuk mengelola data di Amazon Keyspaces (untuk Apache Cassandra) tabel. Anda menggunakan DML pernyataan untuk menambah, memodifikasi, atau menghapus data dalam tabel.

Anda juga menggunakan DML pernyataan untuk kueri data dalam tabel. (Perhatikan bahwa CQL tidak mendukung gabungan atau subkueri.)

SELECT

Gunakan SELECT pernyataan untuk kueri 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 JSON tipe data yang dienkode ke tipe data Amazon Keyspaces, lihat. JSONpengkodean tipe data Amazon Keyspaces

Menggunakan kata IN kunci

INKata 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. Menggunakan IN operator dengan SELECT Pernyataan di Amazon Keyspaces

Hasil pemesanan

ORDER BYKlausa 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, lihatMemesan hasil di Amazon Keyspaces.

Contoh

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

Saat menggunakan ORDER BY 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

TOKENhubungan 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;

TTLfungsi

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

Contoh

SELECT TTL(my_column) from my_table;

TTLFungsi 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 Bekerja dengan stempel waktu sisi klien di Amazon Keyspaces.

SELECT WRITETIME(my_column) from my_table;

WRITETIMEFungsi 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 API panggilan Cassandra Query Language (CQL) melalui driver Cassandra dan alat pengembang. Untuk informasi selengkapnya, lihat Akses sumber daya Amazon Keyspaces berdasarkan tag.

INSERT

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

INSERTmendukung nilai-nilai berikut sebagaiupdate_parameter:

  • TTL— Nilai waktu dalam hitungan detik. Nilai maksimum yang dapat dikonfigurasi adalah 630.720.000 detik, yang setara dengan 20 tahun.

  • TIMESTAMPbigint Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00GMT. 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;

JSONdukungan

Untuk tabel yang memetakan JSON tipe data yang dienkode ke tipe data Amazon Keyspaces, lihat. JSONpengkodean tipe data Amazon Keyspaces

Anda dapat menggunakan JSON kata kunci untuk menyisipkan peta JSON -encoded sebagai satu baris. Untuk kolom yang ada dalam tabel tetapi dihilangkan dalam pernyataan JSON insert, gunakan DEFAULT UNSET untuk mempertahankan nilai yang ada. Gunakan DEFAULT NULL untuk menulis NULL nilai ke setiap baris kolom yang dihilangkan dan menimpa nilai yang ada (biaya penulisan standar berlaku). DEFAULT NULLadalah 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 JSON data berisi kunci duplikat, Amazon Keyspaces menyimpan nilai terakhir untuk kunci (mirip dengan Apache Cassandra). Dalam contoh berikut, di mana kunci duplikatid, 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

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 menambahcounter, gunakan sintaks berikut. Untuk informasi selengkapnya, lihat Penghitung.

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

Perbarui parameter

UPDATEmendukung nilai-nilai berikut sebagaiupdate_parameter:

  • TTL— Nilai waktu dalam hitungan detik. Nilai maksimum yang dapat dikonfigurasi adalah 630.720.000 detik, yang setara dengan 20 tahun.

  • TIMESTAMPbigint Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00GMT. 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

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_nameadalah tabel yang berisi baris yang ingin Anda hapus.

Contoh

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

DELETEmendukung nilai berikut sebagaiupdate_parameter:

  • TIMESTAMPbigint Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagaiepoch: 1 Januari 1970 pukul 00:00:00GMT.