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 perintah CREATE TABLE.
Hak istimewa yang diperlukan
Berikut ini adalah hak istimewa yang diperlukan untuk CREATE TABLE:
Superuser
Pengguna dengan hak istimewa CREATE TABLE
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
- LOKAL
-
Tidak wajib. Meskipun kata kunci ini diterima dalam pernyataan, itu tidak berpengaruh di Amazon Redshift.
- SEMENTARA | 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 di grup PUBLIC. Untuk menolak hak istimewa ini kepada pengguna, cabut hak istimewa TEMP dari grup PUBLIC, dan kemudian secara eksplisit memberikan hak istimewa TEMP hanya kepada pengguna atau grup pengguna tertentu.
- JIKA TIDAK ADA
-
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 karakter multibyte UTF-8 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 adalah
tickit
, 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 sistem
template0
,,template1
padb_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 karakter multibyte UTF-8 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 kolom CHAR dan VARCHAR, Anda dapat menggunakan kata kunci MAX alih-alih mendeklarasikan panjang maksimum. MAX menetapkan panjang maksimum untuk 4.096 byte untuk CHAR atau 65535 byte untuk VARCHAR. Ukuran maksimum objek GEOMETRI adalah 1.048.447 byte.
Untuk informasi tentang tipe data yang didukung Amazon Redshift, lihat. Jenis data
- DEFAULT_EXPR DEFAULT
-
Klausul yang menetapkan nilai data default untuk kolom. Tipe data default_expr harus cocok dengan tipe data kolom. Nilai DEFAULT 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 setiap operasi INSERT yang tidak menentukan nilai untuk kolom. Jika tidak ada nilai default yang ditentukan, nilai default untuk kolom adalah null.
Jika operasi COPY dengan daftar kolom yang ditentukan menghilangkan kolom yang memiliki nilai DEFAULT, perintah COPY menyisipkan nilai default_expr.
- IDENTITAS (benih, langkah)
-
Klausul yang menentukan bahwa kolom adalah kolom IDENTITAS. Kolom IDENTITAS berisi nilai autogenerated yang unik. Tipe data untuk kolom IDENTITY harus berupa INT atau BIGINT.
Saat Anda menambahkan baris menggunakan
INSERT INTO [tablename] VALUES()
pernyataanINSERT
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
pernyataanINSERT 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. - DIHASILKAN SECARA DEFAULT SEBAGAI IDENTITAS (seed, step)
-
Klausul yang menentukan bahwa kolom adalah kolom IDENTITAS default dan memungkinkan Anda untuk secara otomatis menetapkan nilai unik ke kolom. Tipe data untuk kolom IDENTITY harus berupa INT atau BIGINT. 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, selama INSERT, 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 BUKAN NULL. NULL tidak dapat dimasukkan.
-
Untuk menyisipkan nilai yang dihasilkan ke kolom identitas default, gunakan kata kunci
DEFAULT
.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 pernyataan ALTER TABLE ADD COLUMN.
-
Anda dapat menambahkan kolom identitas default dengan pernyataan ALTER TABLE APPEND.
-
- PENGKODEAN PENGKODEAN
-
Pengkodean kompresi untuk kolom. ENCODE AUTO adalah 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 ENCODE AUTO. Amazon Redshift tidak lagi secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel. Anda dapat menentukan opsi ENCODE AUTO 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 kompresi RAW secara default.
-
Kolom yang didefinisikan sebagai kunci pengurutan diberi kompresi RAW.
-
Kolom yang didefinisikan sebagai tipe data BOOLEAN, REAL, PRESISI GANDA, GEOMETRI, atau GEOGRAFI diberi kompresi RAW.
-
Kolom yang didefinisikan sebagai SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP, atau TIMESTAMPTZ diberi kompresi. AZ64
-
Kolom yang didefinisikan sebagai CHAR, VARCHAR, atau VARBYTE diberi kompresi LZO.
catatan
Jika Anda tidak ingin kolom dikompresi, tentukan secara eksplisit pengkodean RAW.
compression encodings berikut didukung:
-
AZ64
-
BYTEDIKTUS
-
DELTA
-
DELTA32K
-
LZO
-
MOSTLY8
-
MOSTLY16
-
MOSTLY32
-
RAW (tanpa 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 kata kunci DISTKEY 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 parameter DISTSTYLE nanti dalam topik ini.
Tipe data kolom kunci distribusi dapat berupa: BOOLEAN, NYATA, PRESISI GANDA, SMALLINT, INTEGER, BIGINT, DECIMAL, TANGGAL, WAKTU, TIMETZ, TIMESTAMP, atau TIMESTAMPTZ, CHAR, atau VARCHAR.
- 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 kata kunci SORTKEY 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 kolom SORTKEY per tabel.
Tipe data dari kolom kunci sortir dapat berupa: BOOLEAN, NYATA, PRESISI GANDA, SMALLINT, INTEGER, BIGINT, DECIMAL, TANGGAL, WAKTU, TIMETZ, TIMESTAMP, atau TIMESTAMPTZ, CHAR, atau VARCHAR.
- COLLATE CASE_SENSITIVE | MENYUSUN 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)
- TIDAK NULL | NULL
-
NOT NULL menentukan bahwa kolom tidak diperbolehkan untuk berisi nilai-nilai null. NULL, default, menentukan bahwa kolom menerima nilai null. Kolom IDENTITAS dinyatakan BUKAN NULL secara default.
- UNIK
-
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.
- KUNCI UTAMA
-
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.
Kolom KUNCI PRIMARY juga didefinisikan sebagai NOT NULL.
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 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.
- SUKA parent_table [{TERMASUK | TIDAK TERMASUK} DEFAULT]
-
Klausa yang menentukan tabel yang ada dari mana tabel baru secara otomatis menyalin nama kolom, tipe data, dan batasan NOT NULL. 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 INCLUDED DEFAULTS ditentukan. Perilaku default adalah untuk mengecualikan ekspresi default, sehingga semua kolom tabel baru memiliki default null.
Tabel yang dibuat dengan opsi LIKE tidak mewarisi kendala kunci primer dan asing. Gaya distribusi, kunci pengurutan, BACKUP, dan properti NULL diwarisi oleh tabel LIKE, tetapi Anda tidak dapat secara eksplisit mengaturnya di CREATE TABLE... Pernyataan SEPERTI.
- CADANGAN {YA | 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 BACKUP YA.
- DISTSTYLE {OTOMATIS | GENAP | KUNCI | SEMUA}
-
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 adalah AUTO.
Gaya distribusi yang Anda pilih untuk tabel mempengaruhi kinerja keseluruhan database Anda. Untuk informasi selengkapnya, lihat Distribusi data untuk optimasi kueri. Gaya distribusi yang mungkin adalah sebagai berikut:
-
AUTO: Amazon Redshift menetapkan gaya distribusi optimal berdasarkan data tabel. Misalnya, jika gaya distribusi AUTO ditentukan, Amazon Redshift awalnya menetapkan gaya distribusi ALL ke tabel kecil. Saat tabel bertambah besar, Amazon Redshift mungkin mengubah gaya distribusi menjadi KEY, memilih kunci utama (atau kolom kunci primer komposit) sebagai DISTKEY. Jika tabel tumbuh lebih besar dan tidak ada kolom yang cocok untuk menjadi DISTKEY, 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 sistem PG_CLASS. Untuk informasi selengkapnya, lihat Melihat gaya distribusi.
-
BAHKAN: 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.
-
KUNCI: Data didistribusikan oleh nilai-nilai di kolom DISTKEY. 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 KUNCI DISTYLE, Anda harus memberi nama kolom DISTKEY, baik untuk tabel atau sebagai bagian dari definisi kolom. Untuk informasi selengkapnya, lihat parameter DISTKEY 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. Distribusi ALL dapat meningkatkan waktu eksekusi bila digunakan dengan tabel dimensi tertentu di mana distribusi KEY 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 kata kunci DISTKEY 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 parameter DISTSTYLE sebelumnya dalam topik ini.
- [SENYAWA | DISISIPKAN] 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 kata kunci SORTKEY 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 [ , ... ] )
Anda dapat secara opsional menentukan gaya pengurutan COMPOUND atau INTERLEAVED. Jika Anda menentukan SORTKEY dengan kolom defaultnya adalah COMPOUND. Untuk informasi selengkapnya, lihat Sortir kunci.
Jika Anda tidak menentukan opsi kunci pengurutan apa pun, defaultnya adalah AUTO.
Anda dapat menentukan maksimum 400 kolom COMPOUND SORTKEY atau 8 kolom SORTKEY INTERLEAVED per tabel.
- MOBIL
-
Menentukan bahwa Amazon Redshift menetapkan kunci pengurutan optimal berdasarkan data tabel. Misalnya, jika kunci pengurutan AUTO 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 JOIN, maka kuncinya mungkin berubah jika Amazon Redshift menentukan ada kunci yang lebih baik.
Untuk melihat kunci pengurutan tabel, kueri tampilan katalog sistem SVV_TABLE_INFO. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO. Untuk melihat rekomendasi Amazon Redshift Advisor untuk tabel, kueri tampilan katalog sistem SVV_ALTER_TABLE_REKOMENDASIONS. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang diambil oleh Amazon Redshift, kueri tampilan katalog sistem SVL_AUTO_WORKER_ACTION. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.
- SENYAWA
-
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 kolom COMPOUND SORTKEY per tabel.
- DISISIPKAN
-
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 kunci sortir interleaved pada kolom dengan atribut yang meningkat secara monoton, seperti kolom identitas, tanggal, atau stempel waktu.
- MENYANDIKAN OTOMATIS
Mengaktifkan Amazon Redshift untuk secara otomatis menyesuaikan jenis pengkodean untuk semua kolom dalam tabel untuk mengoptimalkan kinerja kueri. ENCODE AUTO mempertahankan 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. ENCODE AUTO adalah default jika Anda tidak menentukan jenis pengkodean pada kolom apa pun dalam tabel.
- UNIK (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.
- KUNCI UTAMA (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.
- KUNCI ASING (column_name [,...]) REFERENSI 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 proses ETL Anda atau beberapa proses lain dalam aplikasi Anda menegakkan integritasnya. Untuk informasi tentang cara menjatuhkan tabel dengan dependensi, lihat. MEJA DROP
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 kolom SORTKEY 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. DISTSTYLE hanya dapat diatur di tingkat tabel.
- SORTKEY
-
Jika diatur pada tingkat kolom, SORTKEY harus berupa kolom tunggal. Jika SORTKEY diatur pada tingkat tabel, satu atau lebih kolom dapat membentuk senyawa atau kunci sortir komposit yang disisipkan.
- COLLATE CASE_SENSITIVE | MENYUSUN 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 kunci COLLATE saat menambahkan kolom baru.
Untuk informasi tentang cara membuat database menggunakan pemeriksaan database, lihat. BUAT BASIS DATA
Untuk informasi tentang fungsi COLLATE, lihatFungsi COLLATE.
- UNIK
-
Pada tingkat kolom, satu atau lebih kunci dapat diatur ke UNIK; kendala UNIK berlaku untuk setiap kolom secara individual. Jika UNIQUE diatur pada tingkat tabel, satu atau lebih kolom dapat membuat batasan UNIQUE komposit.
- KUNCI UTAMA
-
Jika diatur pada tingkat kolom, PRIMARY KEY harus berupa kolom tunggal. Jika PRIMARY KEY diatur pada tingkat tabel, satu atau lebih kolom dapat membentuk kunci primer komposit.
- KUNCI ASING
-
Tidak ada perbedaan dalam efek apakah FOREIGN KEY diatur pada tingkat kolom atau di tingkat tabel. Pada tingkat kolom, sintaksnya hanya dapat dikembalikan [
REFERENCES
(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 distribusi EVEN, data didistribusikan kembali ke dalam tabel target.
Tabel lebar
Anda mungkin dapat membuat tabel yang sangat lebar tetapi tidak dapat melakukan pemrosesan kueri, seperti pernyataan INSERT atau SELECT, di atas meja. Lebar maksimum tabel dengan kolom lebar tetap, seperti CHAR, adalah 64KB - 1 (atau 65535 byte). Jika tabel menyertakan kolom VARCHAR, tabel dapat memiliki lebar deklarasi yang lebih besar tanpa mengembalikan kesalahan karena kolom VARCHARS tidak menyumbangkan lebar deklarasi penuhnya ke batas pemrosesan kueri yang dihitung. Batas pemrosesan kueri yang efektif dengan kolom VARCHAR 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 perintah CREATE TABLE, lihat Contoh topiknya.