全部产品
Search
文档中心

AnalyticDB:Kelola tabel

更新时间:Jul 02, 2025

AnalyticDB for PostgreSQL tabel mirip dengan tabel dalam basis data relasional, kecuali bahwa baris tabel didistribusikan di seluruh node komputasi. Distribusi baris dalam sebuah tabel ditentukan oleh kebijakan distribusi tabel tersebut.

Buat tabel standar

Pernyataan CREATE TABLE dapat digunakan untuk membuat tabel. Saat membuat tabel, Anda dapat mendefinisikan item berikut:

Eksekusi pernyataan CREATE TABLE untuk membuat tabel. Sintaks berikut digunakan:

CREATE TABLE nama_tabel ( 
[ { nama_kolom tipe_data [ DEFAULT default_expr ]   -- Definisikan kolom untuk tabel.
   [batasan_kolom [ ... ]                        -- Definisikan batasan untuk kolom.
] 
   | batasan_tabel                                -- Definisikan batasan untuk tabel.                            
   ])
   [ WITH ( parameter_penyimpanan=nilai [, ... ] )       -- Definisikan model penyimpanan untuk tabel.
   [ DISTRIBUTED BY (kolom, [ ... ] ) | DISTRIBUTED RANDOMLY ]  -- Definisikan kunci distribusi untuk tabel.          
   [ klausa_partisi]                               -- Definisikan strategi partisi untuk tabel.
                

Contoh:

Dalam contoh ini, trans_id digunakan sebagai kunci distribusi, dan partisi rentang berbasis tanggal telah ditentukan.

CREATE TABLE penjualan (
  trans_id int,
  tanggal date, 
  jumlah decimal(9,2), 
  wilayah text)
  DISTRIBUTED BY (trans_id)  
  PARTITION BY RANGE(tanggal)    
  (start (date '2018-01-01') inclusive
   end (date '2019-01-01') exclusive every (interval '1 bulan'),
   default partition outlying_dates);

Buat tabel sementara

Tabel sementara digunakan untuk menyimpan data sementara dan antara. Mereka secara otomatis dihapus pada akhir sesi atau dihapus pada akhir transaksi saat ini berdasarkan konfigurasi yang ditentukan pengguna. Pernyataan berikut dapat digunakan untuk membuat tabel sementara:

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

Anda dapat menggunakan klausa ON COMMIT untuk menentukan operasi yang akan dilakukan pada tabel di akhir transaksi saat ini.

  • PRESERVE ROWS: Data dipertahankan di akhir transaksi saat ini. Ini adalah operasi default.

  • DELETE ROWS: Semua baris dihapus di akhir transaksi saat ini.

  • DROP: Tabel sementara dihapus di akhir transaksi saat ini.

Contoh:

Buat tabel sementara yang akan dihapus di akhir transaksi saat ini.

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

Definisikan batasan

Anda dapat mendefinisikan batasan tabel atau kolom untuk membatasi data dalam tabel Anda. Saat mendefinisikan batasan, perhatikan hal-hal berikut:

  • Batasan CHECK hanya dapat merujuk ke kolom dalam tabel tempat batasan didefinisikan.

  • Batasan UNIQUE dan PRIMARY KEY harus berisi kunci distribusi. Batasan seperti itu tidak diizinkan pada tabel append-optimized (AO) atau tabel berorientasi kolom.

  • Batasan FOREIGN KEY diizinkan tetapi tidak ditegakkan.

  • Batasan yang Anda definisikan pada satu partisi tabel juga digunakan untuk partisi lain dari tabel tersebut. Definisi batasan tidak dapat dibatasi pada partisi individu.

Sintaks berikut digunakan:

UNIQUE ( nama_kolom [, ... ] )
   | PRIMARY KEY ( nama_kolom [, ... ] ) 
   | CHECK ( ekspresi )
   | FOREIGN KEY ( nama_kolom [, ... ] )
            REFERENCES nama_tabel [ ( nama_kolom [, ... ] ) ]
            [ jenis_pencocokan_kunci ]
            [ aksi_kunci ]
            [ mode_pemeriksaan_kunci ]

Batasan CHECK

Anda dapat menggunakan batasan CHECK untuk menentukan kolom yang memenuhi ekspresi Boolean. Contoh:

CREATE TABLE produk
            ( nomor_produk integer,
              nama text,
              harga numeric CHECK (harga > 0) );

Batasan NOT NULL

Anda dapat menggunakan batasan NOT NULL untuk menentukan kolom yang tidak mengandung nilai NULL. Contoh:

CREATE TABLE produk
       ( nomor_produk integer NOT NULL,
         nama text NOT NULL,
         harga numeric );

Batasan UNIQUE

Anda dapat menggunakan batasan UNIQUE untuk memastikan bahwa data yang terkandung dalam kolom atau sekelompok kolom dalam tabel unik di antara semua baris dalam tabel. Tabel yang berisi batasan UNIQUE harus didistribusikan secara hash, dan kolom batasan harus berisi kunci distribusi. Contoh:

CREATE TABLE produk
       ( nomor_produk integer UNIQUE,
         nama text,
         harga numeric)
      DISTRIBUTED BY (nomor_produk);

Batasan PRIMARY KEY

Batasan PRIMARY KEY terdiri dari batasan UNIQUE dan batasan NOT NULL. Tabel yang berisi batasan PRIMARY KEY harus didistribusikan secara hash, dan kolom batasan harus berisi kunci distribusi. Secara default, jika sebuah tabel memiliki kunci utama, kolom kunci utama digunakan sebagai kunci distribusi tabel. Contoh:

CREATE TABLE produk
       ( nomor_produk integer PRIMARY KEY,
         nama text,
         harga numeric)
      DISTRIBUTED BY (nomor_produk);