All Products
Search
Document Center

AnalyticDB:Kelola tabel

Last Updated:Mar 29, 2026

Tabel AnalyticDB for PostgreSQL berfungsi seperti tabel dalam database relasional, dengan satu perbedaan utama: barisnya didistribusikan ke berbagai node komputasi. Kebijakan distribusi setiap tabel menentukan cara baris tersebut disebar.

Buat tabel standar

Gunakan CREATE TABLE untuk mendefinisikan tabel. Saat pembuatan, Anda dapat menentukan:

Sintaks:

CREATE TABLE table_name (
  [ { column_name data_type [ DEFAULT default_expr ]   -- Definisi kolom
     [column_constraint [ ... ]]                        -- Kendala tingkat kolom
  ]
     | table_constraint                                 -- Kendala tingkat tabel
  ])
  [ WITH ( storage_parameter=value [, ... ] ) ]         -- Model penyimpanan
  [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]  -- Kunci distribusi
  [ partition clause]                                   -- Strategi partisi

Contoh:

Contoh berikut membuat tabel sales dengan trans_id sebagai kunci distribusi dan partisi rentang berbasis tanggal.

CREATE TABLE sales (
  trans_id int,
  date date,
  amount decimal(9,2),
  region text)
  DISTRIBUTED BY (trans_id)
  PARTITION BY RANGE(date)
  (start (date '2018-01-01') inclusive
   end (date '2019-01-01') exclusive every (interval '1 month'),
   default partition outlying_dates);

Buat tabel temporary

Tabel temporary menyimpan data sementara selama sesi atau transaksi. Secara default, tabel temporary secara otomatis dihapus pada akhir sesi.

Sintaks:

CREATE TEMPORARY TABLE table_name(...)
    [ON COMMIT {PRESERVE ROWS | DELETE ROWS | DROP}]

Gunakan klausa ON COMMIT untuk mengontrol apa yang terjadi pada tabel di akhir transaksi saat ini:

OpsiPerilaku
PRESERVE ROWSMempertahankan semua baris. Ini adalah nilai default.
DELETE ROWSMenghapus semua baris, tetapi mempertahankan struktur tabel.
DROPMenghapus tabel sepenuhnya.

Contoh:

CREATE TEMPORARY TABLE temp_foo (a int, b text) ON COMMIT DROP;

Definisikan kendala

Kendala membatasi data yang dapat disimpan dalam tabel, baik di tingkat kolom maupun tabel.

Sebelum mendefinisikan kendala, perhatikan aturan berikut:

  • Kendala CHECK hanya dapat mereferensi kolom dalam tabel tempat kendala tersebut didefinisikan.

  • Kendala UNIQUE dan PRIMARY KEY harus mencakup kunci distribusi. Kendala ini tidak diizinkan pada tabel append-optimized (AO) atau tabel berorientasi kolom.

  • Kendala FOREIGN KEY diizinkan tetapi tidak diberlakukan.

  • Kendala yang didefinisikan pada satu partisi berlaku untuk semua partisi lainnya. Kendala tidak dapat dibatasi hanya untuk partisi tertentu.

Sintaks:

UNIQUE ( column_name [, ... ] )
  | PRIMARY KEY ( column_name [, ... ] )
  | CHECK ( expression )
  | FOREIGN KEY ( column_name [, ... ] )
           REFERENCES table_name [ ( column_name [, ... ] ) ]
           [ key_match_type ]
           [ key_action ]
           [ key_checking_mode ]

Kendala CHECK

Kendala CHECK mengharuskan nilai kolom memenuhi ekspresi Boolean.

CREATE TABLE products (
  product_no integer,
  name text,
  price numeric CHECK (price > 0)
);

Kendala NOT NULL

Kendala NOT NULL mencegah kolom berisi nilai NULL.

CREATE TABLE products (
  product_no integer NOT NULL,
  name text NOT NULL,
  price numeric
);

Kendala UNIK

Kendala UNIQUE memastikan bahwa nilai dalam satu kolom atau sekelompok kolom bersifat unik di seluruh baris. Tabel harus didistribusikan secara hash, dan kolom kendala harus mencakup kunci distribusi.

CREATE TABLE products (
  product_no integer UNIQUE,
  name text,
  price numeric)
  DISTRIBUTED BY (product_no);

Kendala KUNCI UTAMA

Kendala PRIMARY KEY menggabungkan kendala UNIQUE dan kendala NOT NULL. Tabel harus didistribusikan secara hash, dan kolom kendala harus mencakup kunci distribusi.

Jika sebuah tabel memiliki kunci primer, kolom kunci primer tersebut digunakan sebagai kunci distribusi secara default.

CREATE TABLE products (
  product_no integer PRIMARY KEY,
  name text,
  price numeric)
  DISTRIBUTED BY (product_no);