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}]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);