All Products
Search
Document Center

Tablestore:Operasi DDL

Last Updated:Jun 06, 2026

Operasi DDL Tablestore membuat pemetaan SQL untuk tabel data atau indeks pencarian yang sudah ada serta mengelola skema dan metadata tabel pemetaan.

Ikhtisar pernyataan DDL

Statement

Engine

Deskripsi

CREATE TABLE

tablestore

Membuat pemetaan untuk tabel data. Mesin SQL secara otomatis memilih indeks optimal untuk kueri.

CREATE TABLE

searchindex

Membuat pemetaan untuk indeks pencarian. Mesin SQL menjalankan kueri melalui indeks pencarian yang ditentukan.

ALTER TABLE

-

Menambahkan atau menghapus kolom atribut pada tabel pemetaan yang sudah ada.

DROP MAPPING TABLE

-

Menghapus pemetaan tanpa memengaruhi tabel data atau indeks dasarnya.

DESCRIBE

-

Menampilkan nama bidang, tipe data, penanda kunci primer, dan nullability dari tabel pemetaan.

SHOW INDEX

-

Menampilkan informasi indeks yang terkait dengan tabel pemetaan, termasuk indeks kunci primer, secondary, dan search index.

SHOW TABLES

-

Menampilkan semua tabel pemetaan dalam instans saat ini.

Catatan

Berbeda dengan database relasional tradisional, CREATE TABLE di Tablestore tidak membuat tabel fisik, melainkan membuat pemetaan akses SQL untuk tabel data atau indeks pencarian yang sudah ada. DROP MAPPING TABLE hanya menghapus pemetaan tersebut tanpa memengaruhi data dasarnya.

Buat pemetaan tabel data

Pernyataan CREATE TABLE dengan ENGINE='tablestore' membuat pemetaan untuk tabel data yang sudah ada. Setelah pemetaan dibuat, mesin SQL secara otomatis memilih indeks optimal (kunci primer, indeks sekunder, atau indeks pencarian) untuk menjalankan kueri.

Sintaksis

CREATE TABLE [IF NOT EXISTS] table_name(
  column_name data_type [NOT NULL | NULL], ...
  PRIMARY KEY(key_part [, key_part])
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';

Untuk tabel dengan satu kolom kunci primer, tentukan PRIMARY KEY langsung dalam definisi kolom:

CREATE TABLE [IF NOT EXISTS] table_name(
  column_name data_type PRIMARY KEY,
  column_name data_type [NOT NULL | NULL], ...
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency}';

Parameter

Parameter

Wajib

Deskripsi

IF NOT EXISTS

Tidak

Jika ditentukan, tidak ada error yang dikembalikan ketika tabel pemetaan sudah ada. Jika tidak ditentukan, error Table already exists akan dikembalikan.

table_name

Ya

Nama tabel pemetaan. Nama ini harus sesuai dengan nama tabel data.

column_name

Ya

Nama kolom. Nama kolom dalam SQL harus sesuai dengan nama kolom di tabel data (tidak peka huruf besar/kecil). Misalnya, jika kolom tabel data adalah Aa, Anda dapat menggunakan Aa, AA, aA, atau aa.

data_type

Ya

Tipe data SQL kolom tersebut. Tipe data harus sesuai dengan tipe data kolom di tabel data. Kolom kunci primer hanya mendukung BIGINT, VARCHAR(1024), dan VARBINARY(1024). Kolom atribut juga mendukung DOUBLE, BOOL, MEDIUMTEXT, dan MEDIUMBLOB. Untuk pemetaan tipe lengkap, lihat Pemetaan tipe data dalam SQL.

NOT NULL | NULL

Tidak

Menentukan apakah kolom mengizinkan nilai NULL. Kolom kunci primer secara default NOT NULL. Kolom atribut secara default NULL. Tentukan NOT NULL untuk kolom atribut yang harus memiliki nilai.

PRIMARY KEY

Ya

Definisi kunci primer. Kunci primer harus sesuai dengan kolom kunci primer tabel data dalam urutan dan tipe.

ENGINE

Tidak

Jenis mesin eksekusi. Default ke tablestore, artinya mesin SQL secara otomatis memilih indeks.

consistency

Tidak

Tingkat konsistensi hasil kueri. Nilai valid: strong (konsistensi kuat) dan eventual (konsistensi akhir, default). Saat diatur ke strong, mesin SQL tidak memilih indeks pencarian karena indeks pencarian hanya menyediakan konsistensi akhir.

allow_inaccurate_aggregation

Tidak

Menentukan apakah akurasi agregasi ditukar dengan performa kueri. Default ke true. Saat diatur ke false, mesin SQL tidak memilih indeks pencarian untuk agregasi. Untuk tabel pemetaan indeks pencarian, parameter ini tetap true.

Contoh

Buat pemetaan untuk exampletable dengan kolom kunci primer colvalue (VARCHAR) dan id (BIGINT), serta kolom atribut content (MEDIUMTEXT):

CREATE TABLE exampletable(colvalue VARCHAR(1024), id BIGINT, content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE='tablestore';

Buat pemetaan dengan konsistensi kuat:

CREATE TABLE exampletable2(id BIGINT(20), colvalue VARCHAR(1024), content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE_ATTRIBUTE='{"consistency": "strong"}';

Buat pemetaan indeks pencarian

Untuk membuat pemetaan untuk indeks pencarian yang sudah ada, gunakan pernyataan CREATE TABLE dengan ENGINE='searchindex'. Setelah pemetaan dibuat, mesin SQL menjalankan semua kueri melalui indeks pencarian yang ditentukan.

Kasus penggunaan

  • Diperlukan kemampuan indeks pencarian seperti pencarian teks lengkap, pencarian vektor, atau kueri tipe nested.

  • Rute kueri harus diarahkan ke indeks pencarian tertentu, bukan bergantung pada pemilihan indeks otomatis oleh mesin SQL.

Sintaksis

CREATE TABLE [IF NOT EXISTS] user_defined_name(
  column_name data_type [, column_name data_type]
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name": index_name, "table_name": table_name}';

Parameter

Parameter

Wajib

Deskripsi

IF NOT EXISTS

Tidak

Jika ditentukan, tidak ada error yang dikembalikan ketika tabel pemetaan sudah ada.

user_defined_name

Ya

Nama kustom tabel pemetaan. Nama ini tidak perlu sesuai dengan nama tabel data atau indeks.

column_name

Ya

Nama kolom. Definisi kunci primer tidak diperlukan. Tabel pemetaan indeks pencarian tidak mendukung tipe VARCHAR. Gunakan MEDIUMTEXT untuk kolom string.

index_name

Ya

Nama indeks pencarian. Ditentukan dalam ENGINE_ATTRIBUTE. Indeks tersebut harus sudah ada.

table_name

Ya

Nama tabel data tempat indeks pencarian tersebut berada. Ditentukan dalam ENGINE_ATTRIBUTE.

Contoh

Buat tabel pemetaan search_exampletable1 untuk indeks pencarian exampletable1_index pada tabel data exampletable1:

CREATE TABLE search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

Gunakan IF NOT EXISTS untuk menghindari error jika pemetaan sudah ada:

CREATE TABLE IF NOT EXISTS search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

Perbarui kolom tabel pemetaan

Pernyataan ALTER TABLE menambahkan atau menghapus kolom atribut pada tabel pemetaan yang sudah ada.

Catatan
  • Hanya tabel pemetaan yang dibuat dengan pernyataan CREATE TABLE yang mendukung ALTER TABLE. Tabel pemetaan yang terikat otomatis oleh pernyataan seperti DESCRIBE tidak mendukung operasi ini.

  • Setiap pernyataan hanya menambahkan atau menghapus satu kolom. Untuk memodifikasi beberapa kolom, jalankan pernyataan tersebut beberapa kali.

  • ALTER TABLE hanya memperbarui skema tabel pemetaan dan tidak memengaruhi struktur penyimpanan tabel data.

  • Kolom kunci primer tidak dapat ditambahkan atau dihapus.

  • Setelah menjalankan pernyataan ini, mesin SQL melakukan refresh secara asinkron dan membutuhkan waktu hingga 30 detik untuk selesai. Kueri selama proses refresh mungkin tidak mengembalikan kolom baru.

Sintaksis

ALTER TABLE table_name option column_name [data_type];

Parameter

Parameter

Wajib

Deskripsi

table_name

Ya

Nama tabel pemetaan.

option

Ya

Jenis operasi: ADD COLUMN untuk menambahkan kolom atribut, atau DROP COLUMN untuk menghapus kolom atribut.

column_name

Ya

Nama kolom. Saat menambahkan kolom, nama tersebut tidak boleh sama dengan nama kolom yang sudah ada. Aturan penulisan huruf mengikuti aturan yang sama seperti pada CREATE TABLE.

data_type

Hanya untuk ADD COLUMN

Tipe data SQL kolom tersebut. Tipe data harus sesuai dengan kolom yang bersesuaian di tabel data. Tidak diperlukan untuk DROP COLUMN.

Contoh

Tambahkan kolom atribut ke tabel pemetaan:

ALTER TABLE exampletable ADD COLUMN colvalue BIGINT;
ALTER TABLE exampletable ADD COLUMN content MEDIUMTEXT;

Hapus kolom atribut dari tabel pemetaan:

ALTER TABLE exampletable DROP COLUMN colvalue;

Hapus pemetaan

Pernyataan DROP MAPPING TABLE menghapus satu atau beberapa pemetaan sekaligus.

Catatan

Pernyataan ini hanya menghapus pemetaan SQL. Tabel data dasar dan datanya tidak terpengaruh.

Sintaksis

DROP MAPPING TABLE [IF EXISTS] table_name, ...;

Parameter

Parameter

Wajib

Deskripsi

table_name

Ya

Nama tabel pemetaan. Pisahkan beberapa nama dengan koma (,).

IF EXISTS

Tidak

Jika ditentukan, tidak ada error yang dikembalikan ketika pemetaan tidak ada. Jika tidak ditentukan, error Unknown mapping table akan dikembalikan.

Contoh

DROP MAPPING TABLE IF EXISTS exampletable;

Lihat detail tabel

Pernyataan DESCRIBE mengembalikan nama bidang, tipe data, nullability, dan penanda kunci primer dari tabel pemetaan.

Sintaksis

DESCRIBE table_name;

Parameter

Parameter

Wajib

Deskripsi

table_name

Ya

Nama tabel pemetaan.

Contoh

Lihat detail tabel pemetaan exampletable:

DESCRIBE exampletable;

Output berisi kolom-kolom berikut:

Kolom

Contoh

Deskripsi

Field

pk1

Nama bidang.

Type

varchar(1024)

Tipe data SQL bidang tersebut.

Null

NO

Apakah bidang tersebut mengizinkan nilai NULL. NO untuk kolom kunci primer. YES untuk kolom atribut.

Key

PRI

Penanda kunci primer. PRI menunjukkan kolom kunci primer. Nilai kosong menunjukkan kolom atribut.

Lihat detail indeks

Untuk melihat indeks yang terkait dengan tabel pemetaan, termasuk indeks kunci primer, indeks sekunder, dan indeks pencarian, gunakan pernyataan SHOW INDEX.

Sintaksis

SHOW INDEX {FROM | IN} table_name;

Parameter

Parameter

Wajib

Deskripsi

table_name

Ya

Nama tabel pemetaan. FROM dan IN dapat saling dipertukarkan.

Contoh

Lihat indeks dari pemetaan tabel data (mengembalikan indeks kunci primer, sekunder, dan pencarian):

SHOW INDEX IN exampletable;

Kolom Index_type menunjukkan jenis indeks: nilai kosong untuk indeks kunci primer, GlobalIndex untuk indeks sekunder, dan SearchIndex untuk indeks pencarian.

Lihat indeks dari pemetaan indeks pencarian:

SHOW INDEX IN search_exampletable1;

Untuk tabel pemetaan indeks pencarian, SHOW INDEX mengembalikan _system_hidden_pk_field sebagai indeks kunci primer (kunci primer tersembunyi yang dihasilkan sistem). Setiap kolom juga menampilkan nilai Search_type seperti LONG, KEYWORD, atau TEXT.

Lihat tabel pemetaan

SHOW TABLES menampilkan semua tabel pemetaan dalam instans saat ini.

Sintaksis

SHOW TABLES;

Contoh output:

+------------------------+
| Tables_in_myinstance   |
+------------------------+
| exampletable           |
+------------------------+
| search_exampletable1   |
+------------------------+

Error umum

Mesin SQL mengembalikan error berikut ketika pernyataan DDL gagal. Gunakan pernyataan pemicu dan pesan untuk mengidentifikasi masalahnya.

Pesan error

Pernyataan

Penyebab dan solusi

Table 'instance.table' doesn't exist

CREATE TABLE

Tabel data tidak ada. CREATE TABLE hanya membuat pemetaan untuk tabel data atau indeks pencarian yang sudah ada. Pastikan tabel data telah dibuat terlebih dahulu.

Table 'instance.table' already exists

CREATE TABLE

Pemetaan sudah ada. Untuk menekan error ini, gunakan IF NOT EXISTS. Untuk membuat ulang pemetaan, jalankan DROP MAPPING TABLE terlebih dahulu.

Unknown mapping table 'instance.table'

DROP MAPPING TABLE

Pemetaan tidak ada. Untuk menekan error ini, gunakan IF EXISTS.

Unsupported alter non-mapping table

ALTER TABLE

Tabel target bukan tabel pemetaan yang dibuat dengan CREATE TABLE. Tabel tersebut mungkin merupakan tabel pemetaan yang terikat otomatis, yang tidak mendukung ALTER TABLE.