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
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 * frommykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * frommykeyspace.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
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, lihatPesan hasil dengan ORDER BY 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
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) frommy_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
) frommy_table
;
TTL
Fungsi ini tidak dapat digunakan pada kolom multi-sel seperti koleksi.
WRITETIME fungsi
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.
SELECT WRITETIME(
my_column
) frommy_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 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
INSERT
mendukung 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.TIMESTAMP
—bigint
Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagai epoch: 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
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 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
UPDATE
mendukung 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.TIMESTAMP
—bigint
Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagai epoch: 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_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 sebagaiupdate_parameter
:
TIMESTAMP
—bigint
Nilai yang mewakili jumlah mikrodetik sejak waktu dasar standar yang dikenal sebagai epoch: 1 Januari 1970 pukul 00:00:00GMT.