CREATE TABLE - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CREATE TABLE

Membuat tabel baru dalam database saat ini. Anda menentukan daftar kolom, yang masing-masing menyimpan data dari jenis yang berbeda. Pemilik tabel adalah penerbit CREATE TABLE perintah.

Hak istimewa yang diperlukan

Berikut ini adalah hak istimewa yang diperlukan untuk CREATETABLE:

  • Superuser

  • Pengguna dengan hak CREATE TABLE istimewa

Sintaks

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attributes] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

Parameter

LOCAL

Tidak wajib. Meskipun kata kunci ini diterima dalam pernyataan, kata kunci ini tidak berpengaruh di Amazon Redshift.

TEMPORARY | TEMP

Kata kunci yang membuat tabel sementara yang hanya terlihat dalam sesi saat ini. Tabel secara otomatis dijatuhkan pada akhir sesi di mana ia dibuat. Tabel sementara dapat memiliki nama yang sama dengan tabel permanen. Tabel sementara dibuat dalam skema khusus sesi yang terpisah. (Anda tidak dapat menentukan nama untuk skema ini.) Skema sementara ini menjadi skema pertama di jalur pencarian, sehingga tabel sementara lebih diutamakan daripada tabel permanen kecuali Anda memenuhi syarat nama tabel dengan nama skema untuk mengakses tabel permanen. Untuk informasi lebih lanjut tentang skema dan prioritas, lihat. search_path

catatan

Secara default, pengguna database memiliki izin untuk membuat tabel sementara dengan keanggotaan otomatis mereka dalam PUBLIC grup. Untuk menolak hak istimewa ini kepada pengguna, cabut hak TEMP istimewa dari PUBLIC grup, dan kemudian secara eksplisit memberikan TEMP hak istimewa hanya kepada pengguna atau grup pengguna tertentu.

JIKA NOT EXISTS

Klausa yang menunjukkan bahwa jika tabel yang ditentukan sudah ada, perintah tidak boleh membuat perubahan dan mengembalikan pesan bahwa tabel itu ada, daripada berhenti dengan kesalahan. Perhatikan bahwa tabel yang ada mungkin tidak seperti yang akan dibuat; hanya nama tabel yang dibandingkan.

Klausa ini berguna saat membuat skrip, sehingga skrip tidak gagal jika CREATE TABLE mencoba membuat tabel yang sudah ada.

table_name

Nama tabel yang akan dibuat.

penting

Jika Anda menentukan nama tabel yang dimulai dengan '# ', tabel dibuat sebagai tabel sementara. Berikut adalah contohnya:

create table #newtable (id int);

Anda juga mereferensikan tabel dengan '# '. Sebagai contoh:

select * from #newtable;

Panjang maksimum untuk nama tabel adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte. Anda dapat menggunakan UTF -8 karakter multibyte hingga maksimal empat byte. Amazon Redshift memberlakukan kuota jumlah tabel per cluster menurut jenis node, termasuk tabel sementara yang ditentukan pengguna dan tabel sementara yang dibuat oleh Amazon Redshift selama pemrosesan kueri atau pemeliharaan sistem. Secara opsional, nama tabel dapat dikualifikasikan dengan database dan nama skema. Dalam contoh berikut, nama database adalahtickit, nama skemapublic, dan nama tabel adalahtest.

create table tickit.public.test (c1 int);

Jika database atau skema tidak ada, tabel tidak dibuat, dan pernyataan mengembalikan kesalahan. Anda tidak dapat membuat tabel atau tampilan dalam database sistemtemplate0,, template1padb_harvest, atausys:internal.

Jika nama skema diberikan, tabel baru dibuat dalam skema itu (dengan asumsi pencipta memiliki akses ke skema). Nama tabel harus menjadi nama unik untuk skema itu. Jika tidak ada skema yang ditentukan, tabel dibuat dengan menggunakan skema database saat ini. Jika Anda membuat tabel sementara, Anda tidak dapat menentukan nama skema, karena tabel sementara ada dalam skema khusus.

Beberapa tabel sementara dengan nama yang sama dapat ada pada saat yang sama dalam database yang sama jika mereka dibuat dalam sesi terpisah karena tabel ditetapkan ke skema yang berbeda. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengidentifikasi.

column_name

Nama kolom yang akan dibuat di tabel baru. Panjang maksimum untuk nama kolom adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte. Anda dapat menggunakan UTF -8 karakter multibyte hingga maksimal empat byte. Jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengidentifikasi.

catatan

Jika Anda membuat “tabel lebar”, berhati-hatilah agar daftar kolom Anda tidak melebihi batas lebar baris untuk hasil perantara selama pemuatan dan pemrosesan kueri. Untuk informasi selengkapnya, lihat Catatan penggunaan.

data_type

Tipe data kolom yang sedang dibuat. Untuk CHAR dan VARCHAR kolom, Anda dapat menggunakan MAX kata kunci alih-alih mendeklarasikan panjang maksimum. MAXmenetapkan panjang maksimum untuk 4.096 byte untuk CHAR atau 65535 byte untuk. VARCHAR Ukuran maksimum GEOMETRY objek adalah 1.048.447 byte.

Untuk informasi tentang tipe data yang didukung Amazon Redshift, lihat. Jenis data

DEFAULTdefault_expr

Klausul yang menetapkan nilai data default untuk kolom. Tipe data default_expr harus cocok dengan tipe data kolom. DEFAULTNilai harus berupa ekspresi bebas variabel. Subkueri, referensi silang ke kolom lain dalam tabel saat ini, dan fungsi yang ditentukan pengguna tidak diperbolehkan.

Ekspresi default_expr digunakan dalam INSERT operasi apa pun yang tidak menentukan nilai untuk kolom. Jika tidak ada nilai default yang ditentukan, nilai default untuk kolom adalah null.

Jika COPY operasi dengan daftar kolom yang ditentukan menghilangkan kolom yang memiliki DEFAULT nilai, COPY perintah menyisipkan nilai default_expr.

IDENTITY(benih, langkah)

Klausul yang menentukan bahwa kolom adalah IDENTITY kolom. IDENTITYKolom berisi nilai autogenerated yang unik. Tipe data untuk IDENTITY kolom harus salah satu INT atauBIGINT.

Saat Anda menambahkan baris menggunakan INSERT INTO [tablename] VALUES() pernyataan INSERT atau, nilai-nilai ini dimulai dengan nilai yang ditentukan sebagai benih dan kenaikan dengan nomor yang ditentukan sebagai langkah.

Saat Anda memuat tabel menggunakan COPY pernyataan INSERT INTO [tablename] SELECT * FROM atau, data dimuat secara paralel dan didistribusikan ke irisan simpul. Untuk memastikan bahwa nilai identitas unik, Amazon Redshift melewatkan sejumlah nilai saat membuat nilai identitas. Nilai identitas unik, tetapi urutannya mungkin tidak cocok dengan urutan dalam file sumber.

GENERATEDOLEH DEFAULT AS IDENTITY (benih, langkah)

Klausul yang menentukan bahwa kolom adalah IDENTITY kolom default dan memungkinkan Anda untuk secara otomatis menetapkan nilai unik untuk kolom. Tipe data untuk IDENTITY kolom harus salah satu INT atauBIGINT. Saat Anda menambahkan baris tanpa nilai, nilai-nilai ini dimulai dengan nilai yang ditentukan sebagai benih dan kenaikan dengan nomor yang ditentukan sebagai langkah. Untuk informasi tentang bagaimana nilai dihasilkan, lihatIDENTITY.

Juga, selamaINSERT,UPDATE, atau COPY Anda dapat memberikan nilai tanpa EXPLICIT _IDS. Amazon Redshift menggunakan nilai tersebut untuk menyisipkan ke kolom identitas alih-alih menggunakan nilai yang dihasilkan sistem. Nilai dapat berupa duplikat, nilai kurang dari benih, atau nilai antara nilai langkah. Amazon Redshift tidak memeriksa keunikan nilai di kolom. Memberikan nilai tidak memengaruhi nilai yang dihasilkan sistem berikutnya.

catatan

Jika Anda memerlukan keunikan di kolom, jangan tambahkan nilai duplikat. Sebagai gantinya, tambahkan nilai unik yang kurang dari benih atau di antara nilai langkah.

Perlu diingat hal berikut tentang kolom identitas default:

  • Kolom identitas default adalah NOTNULL. NULLtidak bisa disisipkan.

  • Untuk menyisipkan nilai yang dihasilkan ke kolom identitas default, gunakan kata kunciDEFAULT.

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • Mengesampingkan nilai kolom identitas default tidak memengaruhi nilai yang dihasilkan berikutnya.

  • Anda tidak dapat menambahkan kolom identitas default dengan ALTER TABLE ADD COLUMN pernyataan.

  • Anda dapat menambahkan kolom identitas default dengan ALTER TABLE APPEND pernyataan.

ENCODEpengkodean

Pengkodean kompresi untuk kolom. ENCODEAUTOadalah default untuk tabel. Amazon Redshift secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel. Jika Anda menentukan pengkodean kompresi untuk kolom apa pun dalam tabel, tabel tidak lagi diatur ke ENCODEAUTO. Amazon Redshift tidak lagi secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel. Anda dapat menentukan ENCODE AUTO opsi untuk tabel untuk mengaktifkan Amazon Redshift untuk secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel.

Amazon Redshift secara otomatis menetapkan pengkodean kompresi awal ke kolom yang tidak Anda tentukan pengkodean kompresi sebagai berikut:

  • Semua kolom dalam tabel sementara diberi RAW kompresi secara default.

  • Kolom yang didefinisikan sebagai kunci pengurutan diberi RAW kompresi.

  • Kolom yang didefinisikan sebagai BOOLEANREAL, DOUBLEPRECISION,,GEOMETRY, atau tipe GEOGRAPHY data diberi RAW kompresi.

  • Kolom yang didefinisikan sebagai SMALLINTINTEGER,BIGINT,DECIMAL,,DATE,TIME,TIMETZ,TIMESTAMP, atau TIMESTAMPTZ diberi AZ64 kompresi.

  • Kolom yang didefinisikan sebagaiCHAR,VARCHAR, atau VARBYTE diberi LZO kompresi.

catatan

Jika Anda tidak ingin kolom dikompresi, tentukan pengkodean secara eksplisit. RAW

compression encodings berikut didukung:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW(tidak ada kompresi)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

Kata kunci yang menentukan bahwa kolom adalah kunci distribusi untuk tabel. Hanya satu kolom dalam tabel yang dapat menjadi kunci distribusi. Anda dapat menggunakan DISTKEY kata kunci setelah nama kolom atau sebagai bagian dari definisi tabel dengan menggunakan sintaks DISTKEY (column_name). Salah satu metode memiliki efek yang sama. Untuk informasi selengkapnya, lihat DISTSTYLE parameter nanti dalam topik ini.

Tipe data kolom kunci distribusi dapat berupa:BOOLEAN,REAL, DOUBLEPRECISION,SMALLINT, INTEGERBIGINT,DECIMAL,DATE,TIME, TIMETZTIMESTAMP, atauTIMESTAMPTZ,CHAR, atauVARCHAR.

SORTKEY

Kata kunci yang menentukan bahwa kolom adalah kunci sort untuk tabel. Saat data dimuat ke dalam tabel, data diurutkan berdasarkan satu atau beberapa kolom yang ditetapkan sebagai kunci pengurutan. Anda dapat menggunakan SORTKEY kata kunci setelah nama kolom untuk menentukan kunci pengurutan kolom tunggal, atau Anda dapat menentukan satu atau beberapa kolom sebagai kolom kunci sortir untuk tabel dengan menggunakan sintaks SORTKEY (column_name [,...]). Hanya kunci sortir majemuk yang dibuat dengan sintaks ini.

Anda dapat menentukan maksimum 400 SORTKEY kolom per tabel.

Tipe data dari kolom kunci sortir dapat berupa: BOOLEANREAL, DOUBLEPRECISION,SMALLINT,INTEGER,BIGINT,DECIMAL,DATE, TIMETIMETZ,TIMESTAMP, atauTIMESTAMPTZ,CHAR, atauVARCHAR.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Klausa yang menentukan apakah pencarian string atau perbandingan pada kolom adalah CASE _ SENSITIVE atau CASE _. INSENSITIVE Nilai defaultnya sama dengan konfigurasi sensitivitas kasus saat ini dari database.

Untuk menemukan informasi pemeriksaan database, gunakan perintah berikut:

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOTNULLmenentukan bahwa kolom tidak diperbolehkan untuk berisi nilai-nilai null. NULL, default, menentukan bahwa kolom menerima nilai null. IDENTITYkolom dideklarasikan secara NOT NULL default.

UNIQUE

Kata kunci yang menentukan bahwa kolom hanya dapat berisi nilai-nilai unik. Perilaku kendala tabel unik sama dengan batasan kolom, dengan kemampuan tambahan untuk menjangkau beberapa kolom. Untuk menentukan batasan tabel unik, gunakan sintaks UNIQUE (column_name [,...]).

penting

Kendala unik bersifat informasi dan tidak ditegakkan oleh sistem.

PRIMARY KEY

Kata kunci yang menentukan bahwa kolom adalah kunci utama untuk tabel. Hanya satu kolom yang dapat didefinisikan sebagai kunci utama dengan menggunakan definisi kolom. Untuk menentukan batasan tabel dengan kunci primer multi-kolom, gunakan sintaks PRIMARY KEY (column_name [,...]).

Mengidentifikasi kolom sebagai kunci utama menyediakan metadata tentang desain skema. Kunci utama menyiratkan bahwa tabel lain dapat mengandalkan kumpulan kolom ini sebagai pengidentifikasi unik untuk baris. Satu kunci primer dapat ditentukan untuk tabel, apakah sebagai kendala kolom atau kendala tabel. Kendala kunci primer harus memberi nama satu set kolom yang berbeda dari kumpulan kolom lain yang dinamai oleh batasan unik yang ditentukan untuk tabel yang sama.

PRIMARYKEYkolom juga didefinisikan sebagai NOTNULL.

penting

Kendala kunci primer hanya bersifat informasional. Mereka tidak ditegakkan oleh sistem, tetapi mereka digunakan oleh perencana.

Referensi reftable [(refcolumn)]

Klausul yang menentukan batasan kunci asing, yang menyiratkan bahwa kolom harus berisi hanya nilai yang cocok dengan nilai dalam kolom referensi dari beberapa baris tabel referensi. Kolom yang direferensikan harus berupa kolom dari kendala kunci unik atau primer dalam tabel yang direferensikan.

penting

Kendala kunci asing hanya bersifat informasi. Mereka tidak ditegakkan oleh sistem, tetapi mereka digunakan oleh perencana.

LIKEparent_table [{|}INCLUDING] EXCLUDING DEFAULTS

Klausa yang menentukan tabel yang ada dari mana tabel baru secara otomatis menyalin nama kolom, tipe data, dan NOT NULL batasan. Tabel baru dan tabel induk dipisahkan, dan setiap perubahan yang dibuat pada tabel induk tidak diterapkan ke tabel baru. Ekspresi default untuk definisi kolom yang disalin disalin hanya jika INCLUDING DEFAULTS ditentukan. Perilaku default adalah untuk mengecualikan ekspresi default, sehingga semua kolom tabel baru memiliki default null.

Tabel yang dibuat dengan LIKE opsi tidak mewarisi kendala kunci primer dan asing. Gaya distribusi, kunci pengurutanBACKUP, dan NULL properti diwarisi oleh LIKE tabel, tetapi Anda tidak dapat secara eksplisit mengaturnya di... CREATE TABLE LIKEpernyataan.

BACKUP{YES| TIDAK}

Klausa yang menentukan apakah tabel harus disertakan dalam snapshot cluster otomatis dan manual.

Untuk tabel, seperti tabel pementasan, yang tidak berisi data penting, tentukan BACKUP NO untuk menghemat waktu pemrosesan saat membuat snapshot dan memulihkan dari snapshot dan untuk mengurangi ruang penyimpanan di Amazon Simple Storage Service. Pengaturan BACKUP NO tidak berpengaruh pada replikasi otomatis data ke node lain di dalam cluster, sehingga tabel dengan BACKUP NO ditentukan dipulihkan jika terjadi kegagalan node. Defaultnya adalah BACKUPYES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Kata kunci yang mendefinisikan gaya distribusi data untuk seluruh tabel. Amazon Redshift mendistribusikan baris tabel ke node komputasi sesuai dengan gaya distribusi yang ditentukan untuk tabel. Defaultnya adalahAUTO.

Gaya distribusi yang Anda pilih untuk tabel mempengaruhi kinerja keseluruhan database Anda. Untuk informasi selengkapnya, lihat Bekerja dengan gaya distribusi data. Gaya distribusi yang mungkin adalah sebagai berikut:

  • AUTO: Amazon Redshift menetapkan gaya distribusi optimal berdasarkan data tabel. Misalnya, jika gaya AUTO distribusi ditentukan, Amazon Redshift awalnya menetapkan gaya ALL distribusi ke tabel kecil. Saat tabel bertambah besar, Amazon Redshift mungkin mengubah gaya distribusi menjadiKEY, memilih kunci primer (atau kolom kunci primer komposit) sebagai. DISTKEY Jika tabel tumbuh lebih besar dan tidak ada kolom yang cocok untuk menjadiDISTKEY, Amazon Redshift mengubah gaya distribusi menjadi. EVEN Perubahan gaya distribusi terjadi di latar belakang dengan dampak minimal pada kueri pengguna.

    Untuk melihat gaya distribusi yang diterapkan ke tabel, kueri tabel katalog CLASS sistem PG_. Untuk informasi selengkapnya, lihat Melihat gaya distribusi.

  • EVEN: Data dalam tabel tersebar merata di seluruh node dalam cluster dalam distribusi round-robin. Baris IDs digunakan untuk menentukan distribusi, dan kira-kira jumlah baris yang sama didistribusikan ke setiap node.

  • KEY: Data didistribusikan oleh nilai-nilai di DISTKEY kolom. Saat Anda mengatur kolom gabungan dari tabel gabungan sebagai kunci distribusi, baris penggabungan dari kedua tabel ditempatkan pada node komputasi. Saat data dikumpulkan, pengoptimal dapat melakukan penggabungan dengan lebih efisien. Jika Anda menentukan DISTSTYLEKEY, Anda harus memberi nama DISTKEY kolom, baik untuk tabel atau sebagai bagian dari definisi kolom. Untuk informasi selengkapnya, lihat DISTKEY parameter sebelumnya dalam topik ini.

  • ALL: Salinan seluruh tabel didistribusikan ke setiap node. Gaya distribusi ini memastikan bahwa semua baris yang diperlukan untuk gabungan apa pun tersedia di setiap node, tetapi ini mengalikan persyaratan penyimpanan dan meningkatkan waktu pemuatan dan pemeliharaan untuk tabel. ALLdistribusi dapat meningkatkan waktu eksekusi ketika digunakan dengan tabel dimensi tertentu di mana KEY distribusi tidak sesuai, tetapi peningkatan kinerja harus dipertimbangkan terhadap biaya pemeliharaan.

DISTKEY(column_name)

Kendala yang menentukan kolom yang akan digunakan sebagai kunci distribusi untuk tabel. Anda dapat menggunakan DISTKEY kata kunci setelah nama kolom atau sebagai bagian dari definisi tabel, dengan menggunakan sintaks DISTKEY (column_name). Salah satu metode memiliki efek yang sama. Untuk informasi selengkapnya, lihat DISTSTYLE parameter sebelumnya dalam topik ini.

[COMPOUND|INTERLEAVED] SORTKEY (column_name [,...]) | [] SORTKEY AUTO

Menentukan satu atau lebih kunci sortir untuk tabel. Saat data dimuat ke dalam tabel, data diurutkan berdasarkan kolom yang ditetapkan sebagai kunci pengurutan. Anda dapat menggunakan SORTKEY kata kunci setelah nama kolom untuk menentukan kunci pengurutan kolom tunggal, atau Anda dapat menentukan satu atau beberapa kolom sebagai kolom kunci sortir untuk tabel dengan menggunakan SORTKEY (column_name [ , ... ] ) sintaks.

Anda dapat secara opsional menentukan COMPOUND atau INTERLEAVED mengurutkan gaya. Jika Anda menentukan SORTKEY dengan kolom defaultnya adalahCOMPOUND. Untuk informasi selengkapnya, lihat Bekerja dengan tombol sortir.

Jika Anda tidak menentukan opsi kunci pengurutan apa pun, defaultnya adalahAUTO.

Anda dapat menentukan maksimum 400 COMPOUND SORTKEY kolom atau 8 INTERLEAVED SORTKEY kolom per tabel.

AUTO

Menentukan bahwa Amazon Redshift menetapkan kunci pengurutan optimal berdasarkan data tabel. Misalnya, jika kunci AUTO pengurutan ditentukan, Amazon Redshift awalnya tidak menetapkan kunci pengurutan ke tabel. Jika Amazon Redshift menentukan bahwa kunci pengurutan akan meningkatkan kinerja kueri, Amazon Redshift mungkin mengubah kunci pengurutan tabel Anda. Penyortiran tabel yang sebenarnya dilakukan dengan pengurutan tabel otomatis. Untuk informasi selengkapnya, lihat Penyortiran tabel otomatis.

Amazon Redshift tidak mengubah tabel yang memiliki kunci pengurutan atau distribusi yang ada. Dengan satu pengecualian, jika tabel memiliki kunci distribusi yang belum pernah digunakan dalam aJOIN, maka kuncinya dapat diubah jika Amazon Redshift menentukan ada kunci yang lebih baik.

Untuk melihat kunci pengurutan tabel, kueri tampilan katalog INFO sistem SVV TABLE _ _. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO. Untuk melihat rekomendasi Amazon Redshift Advisor untuk tabel, kueri tampilan katalog RECOMMENDATIONS sistem SVV _ ALTER _ TABLE _. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang diambil oleh Amazon Redshift, kueri tampilan katalog ACTION sistem SVL AUTO _ WORKER _ _. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.

COMPOUND

Menentukan bahwa data diurutkan menggunakan kunci majemuk yang terdiri dari semua kolom yang terdaftar, dalam urutan mereka terdaftar. Kunci sortir majemuk paling berguna ketika kueri memindai baris sesuai dengan urutan kolom pengurutan. Manfaat kinerja penyortiran dengan kunci majemuk berkurang ketika kueri bergantung pada kolom pengurutan sekunder. Anda dapat menentukan maksimum 400 COMPOUND SORTKEY kolom per tabel.

INTERLEAVED

Menentukan bahwa data diurutkan menggunakan kunci sortir disisipkan. Maksimal delapan kolom dapat ditentukan untuk kunci sortir yang disisipkan.

Pengurutan yang disisipkan memberikan bobot yang sama untuk setiap kolom, atau subset kolom, dalam kunci pengurutan, sehingga kueri tidak bergantung pada urutan kolom dalam kunci pengurutan. Saat kueri menggunakan satu atau beberapa kolom pengurutan sekunder, penyortiran interleaved secara signifikan meningkatkan kinerja kueri. Penyortiran interleaved membawa biaya overhead yang kecil untuk operasi pemuatan data dan penyedotan debu.

penting

Jangan gunakan tombol sortir interleaved pada kolom dengan atribut yang meningkat secara monoton, seperti kolom identitas, tanggal, atau stempel waktu.

ENCODE AUTO

Mengaktifkan Amazon Redshift untuk secara otomatis menyesuaikan jenis pengkodean untuk semua kolom dalam tabel untuk mengoptimalkan kinerja kueri. ENCODEAUTOmempertahankan jenis encode awal yang Anda tentukan dalam membuat tabel. Kemudian, jika Amazon Redshift menentukan bahwa jenis pengkodean baru dapat meningkatkan kinerja kueri, Amazon Redshift dapat mengubah jenis pengkodean kolom tabel. ENCODEAUTOadalah default jika Anda tidak menentukan jenis pengkodean pada kolom apa pun dalam tabel.

UNIQUE(column_name [,...])

Kendala yang menentukan bahwa sekelompok satu atau lebih kolom tabel hanya dapat berisi nilai unik. Perilaku kendala tabel unik sama dengan batasan kolom, dengan kemampuan tambahan untuk menjangkau beberapa kolom. Dalam konteks batasan unik, nilai null tidak dianggap sama. Setiap batasan tabel unik harus memberi nama satu set kolom yang berbeda dari kumpulan kolom yang dinamai oleh kendala kunci unik atau primer lainnya yang ditentukan untuk tabel.

penting

Kendala unik bersifat informasi dan tidak ditegakkan oleh sistem.

PRIMARYKEY(column_name [,...])

Kendala yang menentukan bahwa kolom atau sejumlah kolom tabel hanya dapat berisi nilai non-null yang unik (nonduplikat). Mengidentifikasi satu set kolom sebagai kunci utama juga menyediakan metadata tentang desain skema. Kunci utama menyiratkan bahwa tabel lain dapat mengandalkan kumpulan kolom ini sebagai pengidentifikasi unik untuk baris. Satu kunci primer dapat ditentukan untuk tabel, apakah sebagai kendala kolom tunggal atau kendala tabel. Kendala kunci primer harus memberi nama satu set kolom yang berbeda dari kumpulan kolom lain yang dinamai oleh batasan unik yang ditentukan untuk tabel yang sama.

penting

Kendala kunci primer hanya bersifat informasional. Mereka tidak ditegakkan oleh sistem, tetapi mereka digunakan oleh perencana.

FOREIGNKEY(column_name [,...]) REFERENCES reftable [(refcolumn)]

Kendala yang menentukan batasan kunci asing, yang mengharuskan sekelompok satu atau lebih kolom tabel baru hanya harus berisi nilai yang cocok dengan nilai dalam kolom atau kolom referensi dari beberapa baris tabel referensi. Jika refcolumn dihilangkan, kunci utama reftable digunakan. Kolom yang direferensikan harus berupa kolom dari kendala kunci unik atau primer dalam tabel yang direferensikan.

penting

Kendala kunci asing hanya bersifat informasi. Mereka tidak ditegakkan oleh sistem, tetapi mereka digunakan oleh perencana.

Catatan penggunaan

Keunikan, kunci utama, dan kendala kunci asing hanya bersifat informasi; mereka tidak diberlakukan oleh Amazon Redshift saat Anda mengisi tabel. Misalnya, jika Anda menyisipkan data ke dalam tabel dengan dependensi, sisipan dapat berhasil meskipun melanggar batasan. Meskipun demikian, kunci utama dan kunci asing digunakan sebagai petunjuk perencanaan dan mereka harus dinyatakan jika ETL proses Anda atau proses lain dalam aplikasi Anda menegakkan integritasnya. Untuk informasi tentang cara menjatuhkan tabel dengan dependensi, lihat. DROP TABLE

Batas dan kuota

Pertimbangkan batasan berikut saat Anda membuat tabel.

  • Ada batas untuk jumlah maksimum tabel dalam cluster dengan tipe node. Untuk informasi selengkapnya, lihat Batas dalam Panduan Manajemen Pergeseran Merah Amazon.

  • Jumlah maksimum karakter untuk nama tabel adalah 127.

  • Jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600.

  • Jumlah maksimum SORTKEY kolom yang dapat Anda tentukan dalam satu tabel adalah 400.

Ringkasan pengaturan tingkat kolom dan pengaturan tingkat tabel

Beberapa atribut dan pengaturan dapat diatur pada tingkat kolom atau di tingkat tabel. Dalam beberapa kasus, pengaturan atribut atau kendala pada tingkat kolom atau di tingkat tabel memiliki efek yang sama. Dalam kasus lain, mereka menghasilkan hasil yang berbeda.

Daftar berikut merangkum pengaturan tingkat kolom dan tingkat tabel:

DISTKEY

Tidak ada perbedaan efek apakah diatur pada tingkat kolom atau di tingkat tabel.

Jika DISTKEY diatur, baik di tingkat kolom atau di tingkat tabel, DISTSTYLE harus diatur ke KEY atau tidak diatur sama sekali. DISTSTYLEdapat diatur hanya di tingkat tabel.

SORTKEY

Jika diatur pada tingkat kolom, SORTKEY harus satu kolom. Jika SORTKEY diatur pada tingkat tabel, satu atau lebih kolom dapat membentuk senyawa atau kunci sortir komposit yang disisipkan.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift tidak mendukung perubahan konfigurasi sensitivitas huruf besar/kecil untuk kolom. Saat Anda menambahkan kolom baru ke tabel, Amazon Redshift menggunakan nilai default untuk sensitivitas huruf besar/kecil. Amazon Redshift tidak mendukung kata COLLATE kunci saat menambahkan kolom baru.

Untuk informasi tentang cara membuat database menggunakan pemeriksaan database, lihat. CREATE DATABASE

Untuk informasi tentang COLLATE fungsi, lihatCOLLATE fungsi.

UNIQUE

Pada tingkat kolom, satu atau lebih kunci dapat diatur keUNIQUE; UNIQUE kendala berlaku untuk setiap kolom satu per satu. Jika UNIQUE diatur pada tingkat tabel, satu atau lebih kolom dapat membuat UNIQUE kendala komposit.

PRIMARY KEY

Jika diatur pada tingkat kolom, PRIMARY KEY harus satu kolom. Jika PRIMARY KEY diatur pada tingkat tabel, satu atau lebih kolom dapat membentuk kunci primer komposit.

FOREIGN KEY

Tidak ada perbedaan efek apakah FOREIGN KEY diatur pada tingkat kolom atau di tingkat tabel. Pada tingkat kolom, sintaksnya hanya dapat REFERENCES direfabel [(refcolumn)].

Distribusi data yang masuk

Ketika skema distribusi hash dari data yang masuk cocok dengan tabel target, tidak ada distribusi fisik data yang sebenarnya diperlukan ketika data dimuat. Misalnya, jika kunci distribusi diatur untuk tabel baru dan data dimasukkan dari tabel lain yang didistribusikan pada kolom kunci yang sama, data dimuat di tempat, menggunakan node dan irisan yang sama. Namun, jika tabel sumber dan target disetel ke EVEN distribusi, data didistribusikan kembali ke dalam tabel target.

Tabel lebar

Anda mungkin dapat membuat tabel yang sangat lebar tetapi tidak dapat melakukan pemrosesan kueri, seperti INSERT atau SELECT pernyataan, di atas meja. Lebar maksimum tabel dengan kolom lebar tetap, sepertiCHAR, adalah 64KB - 1 (atau 65535 byte). Jika tabel menyertakan VARCHAR kolom, tabel dapat memiliki lebar deklarasi yang lebih besar tanpa mengembalikan kesalahan karena VARCHARS kolom tidak menyumbangkan lebar deklarasi penuhnya ke batas pemrosesan kueri yang dihitung. Batas pemrosesan kueri yang efektif dengan VARCHAR kolom akan bervariasi berdasarkan sejumlah faktor.

Jika tabel terlalu lebar untuk memasukkan atau memilih, Anda menerima kesalahan berikut.

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)

Contoh

Untuk contoh yang menunjukkan cara menggunakan CREATE TABLE perintah, lihat Contoh topik.