Gunakan mode SQL di Tablestore CLI untuk mengelola pemetaan tabel serta mengkueri atau memodifikasi data.
Prasyarat
Tablestore CLI telah diinstal dengan kredensial akses yang dikonfigurasi. Untuk informasi selengkapnya, lihat Tablestore CLI.
Tabel data atau tabel timeseries telah dibuat. Untuk informasi selengkapnya, lihat Operasi tabel data atau Operasi tabel time series.
Pernyataan SQL yang didukung
Tablestore CLI mendukung pernyataan SQL berikut. Untuk sintaks lengkapnya, lihat Kueri SQL.
|
Kategori |
Pernyataan SQL |
Deskripsi |
|
DDL |
CREATE TABLE |
Buat pemetaan untuk tabel data atau indeks pencarian. |
|
ALTER TABLE |
Tambahkan atau hapus kolom atribut dalam tabel pemetaan. |
|
|
DROP MAPPING TABLE |
Hapus pemetaan suatu tabel. |
|
|
DESCRIBE |
Lihat skema tabel pemetaan. |
|
|
DQL |
SELECT |
Kueri data tabel. Anda dapat menggunakan kondisi WHERE, fungsi agregat, JOIN, dan LIMIT. |
|
DBA |
SHOW TABLES |
Daftar semua tabel pemetaan dalam instans saat ini. |
|
SHOW INDEX |
Lihat detail indeks. |
|
|
DML |
INSERT |
Tulis data. Hanya berlaku untuk tabel non-transaksi. |
|
UPDATE |
Perbarui data. Hanya berlaku untuk tabel non-transaksi. Tentukan satu baris dengan kondisi kesamaan pada semua kolom kunci primer. |
|
|
DELETE |
Hapus data. Hanya berlaku untuk tabel non-transaksi. Tentukan satu baris dengan kondisi kesamaan pada semua kolom kunci primer. |
Masuk dan keluar dari mode SQL
Jalankan sql untuk masuk ke mode SQL dan exit; untuk kembali ke mode command.
sql
Setelah Anda memasuki mode SQL, CLI akan menampilkan:
Enter 'SQL' mode, input 'exit;' if you want to quit into 'COMMAND' mode.
Buat pemetaan
Tabel data memerlukan pemetaan agar dapat dikueri menggunakan SQL.
Tabel timeseries dipetakan secara otomatis — lewati CREATE TABLE dan jalankan SHOW TABLES untuk memverifikasi.
CREATE TABLE mytable(
`uid` VARCHAR(1024),
`pid` BIGINT(20),
`col1` BIGINT(20),
`col2` MEDIUMTEXT,
PRIMARY KEY(`uid`,`pid`)
);
Gunakan VARCHAR hanya untuk kolom kunci primer. Gunakan MEDIUMTEXT untuk kolom atribut.
Untuk pemetaan antara tipe data SQL dan tipe data Tablestore, lihat Pemetaan tipe data dalam SQL.
Lihat tabel pemetaan
SHOW TABLES mencantumkan semua tabel pemetaan dalam instans saat ini.
SHOW TABLES;
Contoh output:
+----------------------+
| Tables_in_myinstance |
+----------------------+
| mytable |
+----------------------+
| mytstable |
+----------------------+
| mytstable::meta |
+----------------------+
mytable adalah tabel pemetaan dari tabel data. mytstable adalah tabel data timeseries, dan mytstable::meta adalah tabel metadata timeseries. Kedua tabel timeseries beserta tabel metadatanya mendukung kueri SQL.
Lihat detail tabel pemetaan
Untuk memeriksa detail kolom, jalankan DESCRIBE pada tabel pemetaan.
DESCRIBE mytable;
Contoh output:
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| uid | varchar(1024) | NO | PRI | null | |
+-------+------------+------+-----+---------+-------+
| pid | bigint(20) | NO | PRI | null | |
+-------+------------+------+-----+---------+-------+
| col1 | bigint(20) | YES | | null | |
+-------+------------+------+-----+---------+-------+
| col2 | mediumtext | YES | | null | |
+-------+------------+------+-----+---------+-------+
Tabel timeseries menggunakan skema nilai tunggal tetap:
DESCRIBE mytstable;
+-------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+---------+-------+
| _m_name | varchar(1000) | NO | PRI | null | |
+-------------------+---------------+------+-----+---------+-------+
| _data_source | varchar(1000) | NO | PRI | null | |
+-------------------+---------------+------+-----+---------+-------+
| _tags | varchar(1000) | NO | PRI | null | |
+-------------------+---------------+------+-----+---------+-------+
| _time | bigint(20) | NO | PRI | null | |
+-------------------+---------------+------+-----+---------+-------+
| _field_name | varchar(1000) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _long_value | bigint(20) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _double_value | double | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _bool_value | tinyint(1) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _string_value | varchar(1000) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _binary_value | mediumblob | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _attributes | varchar(1000) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
| _meta_update_time | bigint(20) | YES | | null | |
+-------------------+---------------+------+-----+---------+-------+
Tabel timeseries menggunakan model nilai tunggal di mana setiap bidang diperluas menjadi baris terpisah. Saat Anda menulis satu baris yang berisi beberapa bidang, setiap bidang akan muncul sebagai baris terpisah dalam hasil kueri SQL dengan hanya satu kolom _*_value yang diisi.
Lihat informasi indeks
SHOW INDEX menampilkan indeks yang terkait dengan tabel pemetaan beserta detail kolomnya.
SHOW INDEX FROM mytable;
Kueri data
Gunakan pernyataan SELECT untuk mengkueri data dari tabel pemetaan.
SELECT * FROM mytable;
Contoh
-
Filter berdasarkan kondisi tertentu.
SELECT * FROM mytable WHERE uid = 'user001' AND pid = 1; -
Hitung jumlah baris.
SELECT COUNT(*) FROM mytable; -
Batasi jumlah baris yang dikembalikan.
SELECT * FROM mytable LIMIT 10; -
Kueri data tabel timeseries.
SELECT * FROM mytstable LIMIT 10;
Setelah Anda membuat tabel timeseries, data awal memerlukan waktu sekitar satu menit hingga dapat dikueri. Data yang ditambahkan ke timeline yang sudah ada dapat dikueri segera.
Tulis dan modifikasi data
Dalam mode SQL, jalankan pernyataan INSERT, UPDATE, dan DELETE pada tabel non-transaksi. Untuk sintaks lengkap dan batasannya, lihat Operasi DML.
Pernyataan DML hanya berlaku untuk tabel non-transaksi (tabel yang dibuat tanpa transaksi diaktifkan).
UPDATE dan DELETE memerlukan kondisi kesamaan pada semua kolom kunci primer untuk menentukan satu baris.
Tabel timeseries tidak mendukung pernyataan DML (INSERT, UPDATE, dan DELETE). Untuk menulis data timeseries, gunakan perintah
puttsatauimport_timeseries.
Contoh
-
Sisipkan satu baris.
INSERT INTO mytable (uid, pid, col1) VALUES ('user001', 1, 100); -
Perbarui baris tertentu.
UPDATE mytable SET col1 = 200 WHERE uid = 'user001' AND pid = 1; -
Hapus baris tertentu.
DELETE FROM mytable WHERE uid = 'user001' AND pid = 1;
Perbarui kolom tabel pemetaan
Jika Anda menambahkan atau menghapus kolom dari tabel data, gunakan ALTER TABLE untuk memperbarui pemetaannya.
ALTER TABLE mytable ADD COLUMN col3 MEDIUMTEXT;
Hapus pemetaan
Saat kolom atribut tabel data berubah, hapus pemetaannya lalu buat ulang.
Sistem secara otomatis mengelola pemetaan tabel timeseries, yang tidak dapat dihapus dengan DROP MAPPING TABLE.
DROP MAPPING TABLE mytable;