Pernyataan CREATE TABLE digunakan untuk membuat tabel di LindormTable atau LindormTSDB. Pernyataan ini mendukung tipe data seperti VARCHAR, TIMESTAMP, dan BIGINT, serta atribut tabel seperti TTL dan COMPRESSION yang dapat dikombinasikan untuk merancang tabel sesuai dengan skenario bisnis Anda.
Mesin dan versi
-
CREATE TABLE berlaku untuk LindormTable dan LindormTSDB.
-
LindormTSDB mendukung sintaks CREATE TABLE standar mulai dari versi 3.4.32 dan seterusnya. Untuk melihat atau meningkatkan versinya, lihat catatan rilis LindormTSDB dan Upgrade versi minor.
Sintaks
create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] table_identifier
'('
column_definition
( ',' column_definition )*
',' PRIMARY KEY '(' primary_key ')'
( ',' {KEY|INDEX} [index_identifier]
[ USING index_method_definition ]
[ INCLUDE column_identifier ( ',' column_identifier )* ]
[ WITH index_options ]
)*
')'
[ PARTITION BY partition_definition ]
[ ZORDER BY zorder_column_list ]
[ WITH table_options ]
column_definition ::= column_identifier data_type [ NOT NULL ]
primary_key ::= column_identifier [ ',' column_identifier (ASC|DESC)]
index_method_definition ::= { KV | SEARCH }
index_options ::= '('
option_definition (',' option_definition )*
')'
partition_definition ::= HASH '(' column_identifier (',' column_identifier )* ')'
zorder_column_list ::= column_identifier ( ',' column_identifier )*
table_options ::= '(' option_definition (',' option_definition )* ')'
option_definition ::= option_identifier '=' string_literal
Perbedaan sintaks
Sintaks CREATE TABLE berbeda antara LindormTable dan LindormTSDB. Tabel berikut membandingkan parameter yang didukung oleh masing-masing mesin.
|
Parameter |
LindormTable |
LindormTSDB |
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
✖️ |
|
|
✖️ |
0 |
|
|
0 |
✖️ |
Penggunaan
Nama tabel (table_identifier)
Nama tabel harus memenuhi persyaratan berikut:
-
Nama dapat berisi angka, huruf kapital, huruf kecil, titik (.), tanda hubung (-), dan garis bawah (_).
-
Nama tidak boleh diawali dengan titik (.) atau tanda hubung (-).
-
Panjang nama harus antara 1 hingga 255 karakter.
Definisi kolom (column_definition)
|
Sintaks |
Wajib |
Deskripsi |
|
nama kolom (column_identifier) |
Ya |
|
|
tipe data (data_type) |
Ya |
Untuk informasi lebih lanjut tentang tipe data yang didukung, lihat Tipe data. Penting
Saat membuat tabel deret waktu, perhatikan hal berikut jika Anda menggunakan tipe data TIMESTAMP:
|
|
Batasan NULL |
Tidak |
Menunjukkan apakah kolom mengizinkan nilai NULL. Penting
Lindorm SQL tidak memvalidasi batasan ini. Sebaliknya, validasi dilakukan oleh mesin penyimpanan. Validasi batasan NULL bergantung pada aturan mesin penyimpanan, yang berbeda-beda. Akibatnya, Anda mungkin dapat menulis nilai NULL ke kolom meskipun didefinisikan dengan NOT NULL. Untuk memastikan data ditulis sesuai harapan, ikuti persyaratan berikut:
|
Kunci primer (primary_key)
Kunci primer secara unik mengidentifikasi data dalam tabel dan terdiri dari satu atau beberapa kolom. Anda harus menentukan kunci primer (PRIMARY KEY) saat membuat tabel.
Kunci primer tidak dapat diubah setelah dibuat. Rancang kunci primer Anda dengan cermat.
Saat menggunakan pernyataan CREATE TABLE untuk membuat tabel, perhatikan hal-hal berikut:
|
Jenis mesin |
Deskripsi |
|
LindormTable |
|
|
LindormTSDB |
|
Ekspresi indeks (KEY|INDEX)
Saat menggunakan pernyataan CREATE TABLE untuk membuat indeks, gunakan kata kunci KEY atau INDEX guna menentukan indeks tersebut.
-
Ekspresi indeks (KEY|INDEX) hanya didukung di LindormTable 2.7.7 dan versi seterusnya serta Lindorm SQL 2.8.6.0 dan versi seterusnya.
-
Untuk memeriksa versi LindormTable dan Lindorm SQL, lihat catatan rilis LindormTable dan catatan versi SQL. Jika Anda tidak dapat melakukan upgrade ke versi yang diperlukan di konsol, hubungi dukungan teknis Lindorm. ID DingTalk-nya adalah s0s3eg3.
Penggunaan
-
Jika Anda tidak secara eksplisit menentukan nama indeks, sistem akan menghasilkan nama secara default dengan format
TableName_idx_${ID auto-increment}. -
Dengan ekspresi indeks, Anda saat ini hanya dapat membuat indeks sekunder dan indeks pencarian.
-
Pencantuman kolom default untuk indeks sekunder:
Lindorm SQL 2.9.3.10 dan versi seterusnya
Jika Anda tidak menentukan klausa
INCLUDEsaat membuat indeks sekunder, semua kolom lain tidak dicantumkan dalam indeks secara default.Lindorm SQL versi sebelum 2.9.3.10
Jika Anda tidak menentukan klausa
INCLUDEsaat membuat indeks sekunder, semua kolom lain dicantumkan dalam indeks secara default.CatatanIni setara dengan mengatur atribut indeks INDEX_COVERED_TYPE menjadi
COVERED_ALL_COLUMNS_IN_SCHEMA. Jika tabel merupakan tabel dinamis, ini setara dengan mengatur atribut menjadiCOVERED_DYNAMIC_COLUMNS. -
Jika Anda menentukan klausa
KEYatauINDEXsaat membuat tabel tetapi tidak secara eksplisit menentukan atribut MUTABILITY dan CONSISTENCY, tabel akan dibuat dengan nilai atribut default berikut:CONSISTENCY = 'strong'danMUTABILITY = 'MUTABLE_LATEST'. -
Jika pernyataan CREATE TABLE mencakup ekspresi indeks, sistem akan terlebih dahulu membuat tabel, lalu membuat indeks. Jika terjadi pengecualian selama pembuatan indeks, tabel dan indeks tersebut mungkin tetap ada dan tidak dihapus secara otomatis. Anda dapat menggunakan pernyataan seperti
SHOWdanDESCRIBEuntuk memeriksanya, tetapi mungkin tidak dapat menulis data ke atau mengkueri tabel dan indeks tersebut. Kami menyarankan agar Anda menghapus tabel dan indeks yang tersisa, lalu membuatnya kembali.
Partisi (partition_definition)
Partisi hanya didukung oleh LindormTSDB. Dalam tabel deret waktu, kolom yang digunakan dalam klausa PARTITION BY harus berupa kolom kunci primer VARCHAR.
Saat membuat tabel, Anda dapat menggunakan pernyataan PARTITION BY HASH(column1, column2, ..., columnN) untuk secara eksplisit menentukan satu atau beberapa kolom sebagai dasar partisi hash. Contohnya: PARTITION BY HASH(c1, p1).
Atribut tabel (table_options)
Hanya LindormTable yang mendukung atribut tabel. Anda dapat menggunakan kata kunci WITH untuk menambahkan atribut tabel berikut:
|
Opsi |
Tipe |
Deskripsi |
|
COMPRESSION |
STRING |
Algoritma kompresi untuk tabel. Nilai yang valid:
Catatan
Pada versi LindormTable sebelum 2.3.4, tidak ada algoritma kompresi yang ditentukan secara default. Di LindormTable 2.3.4 dan versi seterusnya, algoritma ZSTD digunakan secara default. |
|
TTL |
INT |
Masa hidup data (TTL), dalam detik (s). Catatan
|
|
COMPACTION_MAJOR_PERIOD |
LONG |
Interval sistem melakukan Catatan
Nilai default: Math.Min(TTL, 1.728.000.000 ms). Jika Anda tidak mengatur TTL, nilai default-nya adalah 20 hari (20 × 24 × 60 × 60 × 1.000 = 1.728.000.000 ms). |
|
MUTABILITY |
STRING |
Menentukan mode tulis untuk tabel dasar. Atribut ini terkait dengan pengindeksan. Nilai default: Nilai yang valid:
Untuk informasi lebih lanjut tentang nilai-nilai tersebut, lihat Indeks sekunder native berkinerja tinggi. Penting
Setelah indeks dibuat, Anda tidak dapat mengubah atribut MUTABILITY. Untuk mengubah atribut ini, Anda harus terlebih dahulu menghapus semua indeks pada tabel. Cadangkan data Anda sebelum melakukan operasi ini untuk mencegah kehilangan data. |
|
CONSISTENCY |
STRING |
Tingkat konsistensi tabel. Untuk instans lintas zona, atribut ini menentukan konsistensi data antara replika primer dan sekunder. Nilai yang valid:
Penting
Untuk instans lintas zona, jika workload Anda melibatkan operasi baca-modifikasi-tulis seperti increase, append, atau pembaruan indeks, Anda harus mengatur atribut CONSISTENCY tabel primer ke |
|
NUMREGIONS |
INT |
Jumlah region pre-split untuk tabel. |
|
CHS |
INT |
Batas yang memisahkan data panas dan dingin, dalam detik. Catatan
|
|
STARTKEY dan ENDKEY |
Tipe data yang sama dengan kolom pertama dalam kunci primer. |
Kunci awal dan kunci akhir untuk pre-split region tabel. Catatan
|
|
SPLITKEYS |
Tipe data yang sama dengan kolom pertama dalam kunci primer. |
Kunci awal untuk semua region pre-split tabel. Catatan
|
|
SPLITALGO |
STRING |
Menentukan algoritma split untuk pre-partitioning. Algoritma yang didukung adalah:
|
|
DYNAMIC_COLUMNS |
STRING |
Apakah akan mengaktifkan kolom dinamis. Nilai yang valid:
Catatan
Kolom dinamis hanya mendukung tipe data Varbinary. Untuk informasi lebih lanjut tentang kolom dinamis, lihat Kolom dinamis. |
|
VERSIONS |
STRING |
Jumlah versi yang dipertahankan untuk setiap nilai kolom. Harus berupa bilangan bulat yang lebih besar atau sama dengan 1. Default: 1. Untuk informasi lebih lanjut tentang pengendalian versi data, lihat Pengendalian versi data. Penting
Nilai tinggi untuk atribut VERSIONS dapat menurunkan kinerja kueri dan penyimpanan. Kami menyarankan mengatur nilai ini ke 1. |
|
BLOB_BUCKET_NAME |
STRING |
Nama bucket untuk kolom BLOB dalam tabel. Nama bucket harus mengikuti aturan berikut:
Catatan
|
Versi LindormTable sebelum 2.2.16 tidak mendukung kata kunci WITH untuk mengatur atribut tabel. Anda harus membungkus nama atribut dengan tanda kutip tunggal ('). Nilai atribut ditentukan berdasarkan tipe datanya; misalnya, nilai bertipe STRING harus dibungkus dengan tanda kutip tunggal ('). Contohnya: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.
Contoh
Buat tabel
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
);
Verifikasi
Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.
Buat tabel dengan indeks
Contoh ini menunjukkan cara membuat indeks sekunder saat membuat tabel.
CREATE TABLE IF NOT EXISTS sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time),
KEY (temperature, time)
);
Verifikasi
Jalankan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah dibuat, dan jalankan SHOW INDEX FROM sensor; untuk memverifikasi bahwa indeks sekunder telah dibuat.
Tentukan TTL dan algoritma kompresi
Contoh ini membuat tabel lebar, mengatur TTL menjadi 30 hari (2.592.000 detik), dan menentukan ZSTD sebagai algoritma kompresi.
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) WITH (COMPRESSION='ZSTD', TTL='2592000');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter COMPRESSION dan TTL.
Tentukan interval major compaction
Contoh ini membuat tabel lebar dan mengatur interval major compaction menjadi 10 hari (864.000.000 milidetik).
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) WITH (COMPACTION_MAJOR_PERIOD='864000000');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa nilai parameter COMPACTION_MAJOR_PERIOD.
Aktifkan kolom dinamis
Untuk mengaktifkan penulisan data ke kolom dinamis saat membuat tabel lebar, atur DYNAMIC_COLUMNS ke TRUE.
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) WITH (DYNAMIC_COLUMNS='TRUE');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa nilai parameter DYNAMIC_COLUMNS.
Tentukan batas data panas dan dingin
Contoh ini membuat tabel lebar dan menetapkan batas data panas-dingin untuk pengarsipan data.
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) WITH (CHS = '86400', CHS_L2 = 'storagetype=COLD');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter CHS dan CHS_L2.
Atur beberapa atribut sekaligus
Contoh ini membuat tabel lebar dengan kompresi, TTL, dan batas data panas-dingin.
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) WITH (
COMPRESSION='ZSTD',
CHS = '86400',
CHS_L2 = 'storagetype=COLD',
TTL = '2592000');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter COMPRESSION, CHS, CHS_L2, dan TTL.
Konfigurasi partisi
Contoh ini membuat tabel lebar yang telah dipre-split menjadi lima partisi, dengan kunci awal 1000 dan kunci akhir 9000.
CREATE TABLE sensor (
p1 INTEGER NOT NULL,
c1 INTEGER,
c2 VARCHAR,
c3 VARCHAR,
PRIMARY KEY(p1)
) WITH (NUMREGIONS='5', STARTKEY='1000', ENDKEY='9000');
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area Shard information, periksa parameter startKey dan endKey untuk setiap partisi.
Tentukan kunci awal untuk beberapa partisi
Contoh kode
-
Tentukan partisi berdasarkan kunci numerik (berdasarkan distribusi data Anda)
Contoh ini membuat tabel lebar dengan kunci awal yang telah ditentukan untuk lima partisi, menghasilkan total enam partisi pre-split.
CREATE TABLE sensor ( p1 INT NOT NULL, p2 INT NOT NULL, c1 VARCHAR, c2 BIGINT, PRIMARY KEY(p1, p2) ) WITH (SPLITKEYS = '100000,300000,500000,700000,900000'); -
Tentukan partisi berdasarkan kunci string (berdasarkan distribusi data Anda)
CREATE TABLE your_table ( address VARCHAR NOT NULL, col1 VARCHAR, PRIMARY KEY (address) ) WITH ( SPLITKEYS = '0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff' ); -
Tentukan algoritma split
CREATE TABLE your_table2 ( address VARCHAR NOT NULL, col1 VARCHAR, PRIMARY KEY (address) ) WITH ( NUMREGIONS = 256, SPLITALGO = 'HexStringSplit' );
Verifikasi
-
Jalankan pernyataan
DESCRIBE table sensor;untuk memverifikasi bahwa tabel telah berhasil dibuat. -
Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area Shard information, periksa parameter startKey dan endKey untuk setiap partisi.
Tentukan secara eksplisit kolom kunci partisi
Karena sebagian besar kueri mengambil data instan untuk satu perangkat, tentukan device_id sebagai kolom kunci partisi.
CREATE TABLE sensor (
device_id VARCHAR NOT NULL,
region VARCHAR NOT NULL,
time TIMESTAMP NOT NULL,
temperature DOUBLE,
humidity BIGINT,
PRIMARY KEY(device_id, region, time)
) PARTITION BY HASH(device_id);
Verifikasi
Jalankan pernyataan DESCRIBE TABLE sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.
Buat tabel geospasial
-
Buat tabel yang mendukung tipe data spasial Geometry generik, memungkinkan Anda menulis berbagai jenis data spasial.
CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));Tulis data dari berbagai tipe data spasial.
UPSERT INTO geoms(gid, g) VALUES(0,ST_GeomFromText('POINT(-10.1 3.3)')),(1,ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')),(2,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')); -
Buat tabel untuk tipe data Point. Hanya data titik yang dapat ditulis ke tabel ini.
CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid));Tulis data titik.
UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1)); -
Buat tabel untuk tipe data Polygon. Hanya data poligon yang dapat ditulis ke tabel ini.
CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));Tulis data poligon.
UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')); -
Buat tabel untuk tipe data LineString. Hanya data garis yang dapat ditulis ke tabel ini.
CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));Tulis data garis.
UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')); -
Buat tabel untuk tipe data MULTIPOINT. Hanya data multipoint yang dapat ditulis ke tabel ini.
CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));Tulis data multipoint.
UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)')); -
Buat tabel untuk tipe data MULTILINESTRING. Hanya data multilinestring yang dapat ditulis ke tabel ini.
CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));Tulis data multilinestring.
UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))')); -
Buat tabel untuk tipe data MULTIPOLYGON. Hanya data multipolygon yang dapat ditulis ke tabel ini.
CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));Tulis data multipolygon.
UPSERT INTO multipolys(gid,g) VALUES(0, ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))')); -
Buat tabel untuk tipe data GEOMETRYCOLLECTION. Hanya data koleksi geometri yang dapat ditulis ke tabel ini.
CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));Tulis data koleksi geometri.
UPSERT INTO collections(gid,g) VALUES(0, ST_GeomFromText('GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))')); -
Buat tabel dengan beberapa kolom bertipe Geometry.
CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));