Esempi di ALTER TABLE - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di ALTER TABLE

I seguenti esempi dimostrano l'utilizzo di base del comando ALTER TABLE.

Ridenominazione di una tabella o una vista

Il seguente comando rinomina la tabella USERS in USERS_BKUP:

alter table users rename to users_bkup;

Puoi anche usare questo tipo di comando per rinominare una vista.

Modifica del proprietario di una tabella o di una vista

Il seguente comando modifica il proprietario della tabella VENUE nell'utente DWUSER:

alter table venue owner to dwuser;

I seguenti comandi creano una vista, quindi cambiano il suo proprietario:

create view vdate as select * from date; alter table vdate owner to vuser;

Ridenominazione di una colonna

Il seguente comando rinomina la colonna VENUESEATS della tabella VENUE in VENUESIZE:

alter table venue rename column venueseats to venuesize;

Rimozione del vincolo di una tabella

Per eliminare un vincolo di tabella, ad esempio una chiave primaria, una chiave esterna o un vincolo univoco, individua innanzitutto il nome interno del vincolo. Poi specifica il nome del vincolo nel comando ALTER TABLE. L'esempio seguente trova i vincoli per la tabella CATEGORY, quindi rimuove la chiave primaria con il nome 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;

Modificare una colonna VARCHAR

Per preservare lo storage, è possibile definire una tabella inizialmente con colonne VARCHAR con la dimensione minima necessaria per i requisiti di dati attuali. Successivamente, per utilizzare stringhe più lunghe, è possibile modificare la tabella per aumentare le dimensioni della colonna.

L'esempio seguente aumenta le dimensioni della colonna EVENTNAME in VARCHAR(300).

alter table event alter column eventname type varchar(300);

Modifica della codifica di compressione per una colonna

È possibile modificare la codifica di compressione di una colonna. Di seguito è riportata una serie di esempi che dimostrano questo approccio. La definizione di tabella per questi esempi è come segue.

create table t1(c0 int encode lzo, c1 bigint encode zstd, c2 varchar(16) encode lzo, c3 varchar(32) encode zstd);

La seguente istruzione modifica la codifica di compressione per la colonna c0 dalla codifica LZO alla codifica AZ64.

alter table t1 alter column c0 encode az64;

La seguente istruzione modifica la codifica di compressione per la colonna c1 dalla codifica Zstandard alla codifica AZ64.

alter table t1 alter column c1 encode az64;

La seguente istruzione modifica la codifica di compressione per la colonna c2 dalla codifica LZO alla codifica Byte-Dictionary.

alter table t1 alter column c2 encode bytedict;

La seguente istruzione modifica la codifica di compressione per la colonna c3 dalla codifica Zstandard alla codifica Runlength.

alter table t1 alter column c3 encode runlength;

Modificare una colonna DISTSTYLE KEY DISTKEY

I seguenti esempi mostrano come modificare DISTSTYLE e DISTKEY di una tabella.

Crea una tabella con stile di distribuzione EVEN. La vista SVV_TABLE_INFO mostra che DISTSTYLE è 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

Modificare la tabella DISTKEY in inv_warehouse_sk. La vista SVV_TABLE_INFO mostra la colonna inv_warehouse_sk come chiave di distribuzione risultante.

alter table inventory alter diststyle key distkey inv_warehouse_sk; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk)

Modificare la tabella DISTKEY in inv_item_sk. La vista SVV_TABLE_INFO mostra la colonna inv_item_sk come chiave di distribuzione risultante.

alter table inventory alter distkey inv_item_sk; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_item_sk)

Modificare una tabella in DISTSTYLE ALL

Gli esempi seguenti mostrano come modificare una tabella in DISTSTYLE ALL.

Crea una tabella con stile di distribuzione EVEN. La vista SVV_TABLE_INFO mostra che DISTSTYLE è 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

Modificare la tabella DISTSTYLE su ALL. La vista SVV_TABLE_INFO mostra il DISTSYTLE modificato.

alter table inventory alter diststyle all; select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | ALL

Modifica una tabella SORTKEY

È possibile modificare una tabella per avere una chiave di ordinamento composta o nessuna chiave di ordinamento.

Nella seguente definizione della tabella, tabella t1 è definita con una chiave di ordinamento interlacciata.

create table t1 (c0 int, c1 int) interleaved sortkey(c0, c1);

Il comando seguente modifica la tabella da una chiave di ordinamento interlacciata a una chiave di ordinamento composta.

alter table t1 alter sortkey(c0, c1);

Il comando seguente modifica la tabella per rimuovere la chiave di ordinamento interlacciata.

alter table t1 alter sortkey none;

Nella seguente definizione della tabella, tabella t1 è definita con una colonna c0 come chiave di ordinamento.

create table t1 (c0 int, c1 int) sortkey(c0);

Il comando seguente modifica la tabella t1 in una chiave di ordinamento composta.

alter table t1 alter sortkey(c0, c1);

Modifica di una tabella in ENCODE AUTO

L'esempio seguente mostra come modificare una tabella in ENCODE AUTO.

La definizione di tabella per questo esempio è come segue. La colonna c0 è definita con il tipo di codifica AZ64 mentre la colonna c1 è definita con il tipo di codifica LZO.

create table t1(c0 int encode AZ64, c1 varchar encode LZO);

Per questa tabella, l'istruzione seguente modifica la codifica in AUTO.

alter table t1 alter encode auto;

L'esempio seguente mostra come modificare una tabella per rimuovere l'impostazione ENCODE AUTO.

La definizione di tabella per questo esempio è come segue. Le colonne della tabella sono definite senza codifica. In questo caso, la codifica predefinita è ENCODE AUTO.

create table t2(c0 int, c1 varchar);

Per questa tabella, la seguente istruzione modifica la codifica della colonna c0 in LZO. La codifica della tabella non è più impostata su ENCODE AUTO.

alter table t2 alter column c0 encode lzo;;

Modifica del controllo della sicurezza a livello di riga

Il seguente comando disattiva RLS per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;

Il seguente comando disattiva RLS (sicurezza a livello di riga) per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;

Il seguente comando attiva RLS per la tabella e la rende accessibile nell'unità di condivisione dati:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES OFF;

Il seguente comando attiva RLS per la tabella e la rende inaccessibile nell'unità di condivisione dati:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON; ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES ON;

Il seguente comando attiva RLS e imposta il tipo di combinazione RLS su OR per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;

Il seguente comando attiva RLS e imposta il tipo di combinazione RLS su AND per la tabella:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;