Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh ALTER TABLE
Contoh berikut menunjukkan penggunaan dasar dari perintah ALTER TABLE.
Ganti nama tabel atau tampilan
Perintah berikut mengganti nama tabel USERS 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 tabel VENUE ke pengguna DWUSER:
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 kolom VENUESEATS di tabel VENUE 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 tabel CATEGORY, 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 kolom VARCHAR 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 kolom EVENTNAME ke 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 LZO ke 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 LZO ke 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 DISTYLE KEY DISTYLE
Contoh berikut menunjukkan bagaimana mengubah DISTYLE dan DISTYLE dari tabel.
Buat tabel dengan gaya distribusi EVEN. Tampilan SVV_TABLE_INFO menunjukkan bahwa DISTSTYLE adalah EVEN.
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 tabel DISTKEY menjadi. inv_warehouse_sk
Tampilan SVV_TABLE_INFO 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 tabel DISTKEY menjadi. inv_item_sk
Tampilan SVV_TABLE_INFO 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 ke DISTSTYLE ALL.
Buat tabel dengan gaya distribusi EVEN. Tampilan SVV_TABLE_INFO menunjukkan bahwa DISTSTYLE adalah EVEN.
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 tabel DISTSTYLE menjadi ALL. Tampilan SVV_TABLE_INFO menunjukkan DISTSYTLE yang diubah.
alter table inventory alter diststyle all;
select "table", "diststyle" from svv_table_info;
table | diststyle
-----------+----------------
inventory | ALL
Mengubah tabel 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 ENCODE AUTO.
Definisi tabel untuk contoh ini berikut. Kolom c0
didefinisikan dengan jenis pengkodean AZ64, 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 ke AUTO.
alter table t1 alter encode auto;
Contoh berikut menunjukkan cara mengubah tabel untuk menghapus pengaturan ENCODE AUTO.
Definisi tabel untuk contoh ini berikut. Kolom tabel didefinisikan tanpa pengkodean. Dalam hal ini, encoding default ke ENCODE AUTO.
create table t2(c0 int, c1 varchar);
Untuk tabel ini, pernyataan berikut mengubah pengkodean kolom c0 ke LZO. Pengkodean tabel tidak lagi diatur ke ENCODE AUTO.
alter table t2 alter column c0 encode lzo;;
Ubah kontrol keamanan tingkat baris
Perintah berikut mematikan RLS untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;
Perintah berikut mengaktifkan RLS untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
Perintah berikut mengaktifkan RLS 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 mengaktifkan RLS 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 mengaktifkan RLS dan menetapkan tipe konjungsi RLS ke OR untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;
Perintah berikut mengaktifkan RLS dan menetapkan tipe konjungsi RLS ke AND untuk tabel:
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;