Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ALTERTABLEcontoh
Contoh berikut menunjukkan penggunaan dasar ALTER TABLE perintah.
Ganti nama tabel atau tampilan
Perintah berikut mengganti nama USERS tabel menjadi _: USERS BKUP
alter table users rename to users_bkup;
Anda juga dapat menggunakan jenis perintah ini untuk mengganti nama tampilan.
Mengubah pemilik tabel atau tampilan
Perintah berikut mengubah pemilik VENUE tabel ke penggunaDWUSER:
alter table venue owner to dwuser;
Perintah berikut membuat tampilan, lalu ubah pemiliknya:
create view vdate as select * from date; alter table vdate owner to vuser;
Ubah Nama Kolom
Perintah berikut mengganti nama VENUESEATS kolom dalam VENUE tabel menjadi: VENUESIZE
alter table venue rename column venueseats to venuesize;
Jatuhkan kendala tabel
Untuk menjatuhkan batasan tabel, seperti kunci utama, kunci asing, atau batasan unik, pertama-tama temukan nama internal kendala. Kemudian tentukan nama kendala dalam perintah. ALTER TABLE Contoh berikut menemukan kendala untuk CATEGORY tabel, lalu menjatuhkan kunci utama dengan nama. category_pkey
select constraint_name, constraint_type from information_schema.table_constraints where constraint_schema ='public' and table_name = 'category';
constraint_name | constraint_type ----------------+---------------- category_pkey | PRIMARY KEY
alter table category drop constraint category_pkey;
Mengubah kolom VARCHAR
Untuk menghemat penyimpanan, Anda dapat menentukan tabel awalnya dengan VARCHAR kolom dengan ukuran minimum yang diperlukan untuk kebutuhan data Anda saat ini. Kemudian, untuk mengakomodasi string yang lebih panjang, Anda dapat mengubah tabel untuk meningkatkan ukuran kolom.
Contoh berikut meningkatkan ukuran EVENTNAME kolom menjadi VARCHAR (300).
alter table event alter column eventname type varchar(300);
Mengubah pengkodean kompresi untuk kolom
Anda dapat mengubah pengkodean kompresi kolom. Di bawah ini, Anda dapat menemukan serangkaian contoh yang menunjukkan pendekatan ini. Definisi tabel untuk contoh-contoh ini adalah sebagai berikut.
create table t1(c0 int encode lzo, c1 bigint encode zstd, c2 varchar(16) encode lzo, c3 varchar(32) encode zstd);
Pernyataan berikut mengubah pengkodean kompresi untuk kolom c0 dari pengkodean ke LZO pengkodean. AZ64
alter table t1 alter column c0 encode az64;
Pernyataan berikut mengubah pengkodean kompresi untuk kolom c1 dari pengkodean Zstandard menjadi pengkodean. AZ64
alter table t1 alter column c1 encode az64;
Pernyataan berikut mengubah pengkodean kompresi untuk kolom c2 dari pengkodean ke LZO pengkodean Byte-dictionary.
alter table t1 alter column c2 encode bytedict;
Pernyataan berikut mengubah pengkodean kompresi untuk kolom c3 dari pengkodean Zstandard ke pengkodean Runlength.
alter table t1 alter column c3 encode runlength;
Mengubah kolom DISTSTYLE KEY DISTKEY
Contoh berikut menunjukkan cara mengubah DISTSTYLE dan DISTKEY tabel.
Buat tabel dengan gaya EVEN distribusi. INFOTampilan SVV TABLE _ _ menunjukkan bahwa DISTSTYLE adalahEVEN.
create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | EVEN
Ubah meja DISTKEY menjadiinv_warehouse_sk
. INFOTampilan SVV _ TABLE _ menunjukkan inv_warehouse_sk
kolom sebagai kunci distribusi yang dihasilkan.
alter table inventory alter diststyle key distkey inv_warehouse_sk; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk)
Ubah meja DISTKEY menjadiinv_item_sk
. INFOTampilan SVV _ TABLE _ menunjukkan inv_item_sk
kolom sebagai kunci distribusi yang dihasilkan.
alter table inventory alter distkey inv_item_sk; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+----------------------- inventory | KEY(inv_item_sk)
Ubah tabel menjadi DISTSTYLE ALL
Contoh berikut menunjukkan cara mengubah tabel menjadi DISTSTYLEALL.
Buat tabel dengan gaya EVEN distribusi. INFOTampilan SVV TABLE _ _ menunjukkan bahwa DISTSTYLE adalahEVEN.
create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | EVEN
Ubah meja DISTSTYLE menjadiALL. INFOTampilan SVV TABLE _ _ menunjukkan perubahanDISTSYTLE.
alter table inventory alter diststyle all; select "table", "diststyle" from svv_table_info;
table | diststyle -----------+---------------- inventory | ALL
Ubah meja SORTKEY
Anda dapat mengubah tabel untuk memiliki kunci sortir majemuk atau tidak ada kunci pengurutan.
Dalam definisi tabel berikut, tabel t1
didefinisikan dengan sortkey yang disisipkan.
create table t1 (c0 int, c1 int) interleaved sortkey(c0, c1);
Perintah berikut mengubah tabel dari kunci sortir yang disisipkan ke kunci sortir majemuk.
alter table t1 alter sortkey(c0, c1);
Perintah berikut mengubah tabel untuk menghapus kunci sortir yang disisipkan.
alter table t1 alter sortkey none;
Dalam definisi tabel berikut, tabel t1
didefinisikan dengan kolom c0
sebagai sortkey.
create table t1 (c0 int, c1 int) sortkey(c0);
Perintah berikut mengubah tabel t1
menjadi kunci sortir majemuk.
alter table t1 alter sortkey(c0, c1);
Ubah tabel menjadi ENCODE AUTO
Contoh berikut menunjukkan bagaimana mengubah tabel untuk ENCODEAUTO.
Definisi tabel untuk contoh ini berikut. Kolom c0
didefinisikan dengan jenis pengkodeanAZ64, dan kolom c1
didefinisikan dengan jenis pengkodean. LZO
create table t1(c0 int encode AZ64, c1 varchar encode LZO);
Untuk tabel ini, pernyataan berikut mengubah pengkodean menjadi. AUTO
alter table t1 alter encode auto;
Contoh berikut menunjukkan bagaimana mengubah tabel untuk menghapus ENCODE AUTO pengaturan.
Definisi tabel untuk contoh ini berikut. Kolom tabel didefinisikan tanpa pengkodean. Dalam hal ini, pengkodean default ke. ENCODE AUTO
create table t2(c0 int, c1 varchar);
Untuk tabel ini, pernyataan berikut mengubah pengkodean kolom c0 menjadi. LZO Pengkodean tabel tidak lagi diatur ke ENCODEAUTO.
alter table t2 alter column c0 encode lzo;;
Ubah kontrol keamanan tingkat baris
Perintah berikut RLS dimatikan untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;
Perintah berikut RLS menyala untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
Perintah berikut RLS menyala untuk tabel dan membuatnya dapat diakses melalui datashares:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES OFF;
Perintah berikut RLS menyala untuk tabel dan membuatnya tidak dapat diakses melalui datashares:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES ON;
Perintah berikut RLS menyala dan menetapkan tipe RLS konjungsi ke OR untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;
Perintah berikut RLS menyala dan menetapkan tipe RLS konjungsi AND untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;