Tüm Ürünler
Search
Belge Merkezi

AnalyticDB:Tabloları yönetin

Son Güncelleme:Oct 05, 2026

AnalyticDB for PostgreSQL tabloları, ilişkisel veritabanı tablolarına benzer şekilde çalışır; ancak temel bir fark vardır: satırlar hesaplama düğümleri arasında dağıtılır. Her tablonun dağıtım ilkesi, satırların nasıl yayılacağını belirler.

Standart bir tablo oluşturun

Bir tablo tanımlamak için CREATE TABLE ifadesini kullanın. Oluşturma sırasında aşağıdakileri belirtin:

Sözdizimi:

CREATE TABLE table_name (
  [ { column_name data_type [ DEFAULT default_expr ]   -- Column definition
     [column_constraint [ ... ]]                        -- Column-level constraint
  ]
     | table_constraint                                 -- Table-level constraint
  ])
  [ WITH ( storage_parameter=value [, ... ] ) ]         -- Storage model
  [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]  -- Distribution key
  [ partition clause]                                   -- Partitioning strategy

Örnek:

Aşağıdaki örnek, dağıtım anahtarı olarak trans_id sütununu kullanan ve tarihe dayalı aralık bölümlemesi uygulayan bir sales tablosu oluşturur.

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

Geçici bir tablo oluşturun

Geçici tablolar, bir oturum veya işlem süresi boyunca ara verileri depolar. Varsayılan olarak geçici bir tablo, oturum sonunda otomatik olarak silinir.

Sözdizimi:

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

Geçerli işlemin sonunda tabloya ne olacağını kontrol etmek için ON COMMIT yan tümcesini kullanın:

Seçenek Davranış
PRESERVE ROWS Tüm satırları korur. Bu varsayılan davranıştır.
DELETE ROWS Tüm satırları siler ancak tablo yapısını korur.
DROP Tabloyu tamamen siler.

Örnek:

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

Kısıtlamaları tanımlayın

Kısıtlamalar, bir tabloda depolanabilecek verileri sütun veya tablo düzeyinde kısıtlar.

Kısıtlamaları tanımlamadan önce aşağıdaki kurallara dikkat edin:

  • CHECK kısıtlamaları yalnızca tanımlandıkları tablodaki sütunlara başvurabilir.

  • UNIQUE ve PRIMARY KEY kısıtlamaları dağıtım anahtarını içermelidir. Bu kısıtlamalar, append-optimized (AO) veya sütun yönelimli tablolar üzerinde izin verilmez.

  • FOREIGN KEY kısıtlamalarına izin verilir ancak zorlanmaz.

  • Bir bölümde tanımlanan kısıtlamalar diğer tüm bölümlere uygulanır. Kısıtlamalar tek tek bölümlere özgülenemez.

Sözdizimi:

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 ]

CHECK kısıtlamaları

Bir CHECK kısıtlaması, sütun değerlerinin bir Boole ifadesini karşılamasını gerektirir.

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

NOT NULL kısıtlamaları

Bir NOT NULL kısıtlaması, bir sütunun NULL değerler içermesini engeller.

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

UNIQUE kısıtlamaları

Bir UNIQUE kısıtlaması, bir sütundaki veya sütun grubundaki değerlerin tüm satırlar boyunca benzersiz olmasını sağlar. Tablo hash dağıtımlı olmalı ve kısıtlama sütunları dağıtım anahtarını içermelidir.

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

PRIMARY KEY kısıtlamaları

Bir PRIMARY KEY kısıtlaması, bir UNIQUE kısıtlaması ile bir NOT NULL kısıtlamasını birleştirir. Tablo hash dağıtımlı olmalı ve kısıtlama sütunları dağıtım anahtarını içermelidir.

Bir tablonun birincil anahtarı olduğunda, birincil anahtar sütunu veya sütunları varsayılan olarak dağıtım anahtarı olarak kullanılır.

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