Beispiele für ALTER TABLE - Amazon Redshift

Beispiele für ALTER TABLE

Das folgende Beispiele zeigt die grundsätzliche Nutzung des Befehls ALTER TABLE.

Umbenennen einer Tabelle

Mit dem folgenden Befehl wird die Tabelle USERS in USERS_BKUP umbenannt:

alter table users rename to users_bkup;

Sie können diese Art von Befehl auch verwenden, um eine Ansicht umzubenennen.

Ändern des Besitzers einer Tabelle oder Ansicht

Mit dem folgenden Befehl wird der Besitzer der Tabelle VENUE in den Benutzer DWUSER geändert:

alter table venue owner to dwuser;

Die folgenden Befehle erstellen eine Ansicht und ändern anschließend deren Besitzer:

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

Umbenennen einer Spalte

Mit dem folgenden Befehl wird die Spalte VENUESEATS in der Tabelle VENUE in VENUESIZE geändert:

alter table venue rename column venueseats to venuesize;

Entfernen einer Tabelleneinschränkung

Um eine Tabelleneinschränkung zu entfernen, wie beispielsweise einen Primärschlüssel, einen Fremdschlüssel oder eine spezifische Einschränkung, suchen Sie zunächst den internen Namen der Einschränkung. Geben Sie anschließend den Namen der Einschränkung im Befehl ALTER TABLE ein. Im folgenden Beispiel werden die Einschränkungen für die Tabelle CATEGORY gesucht und anschließend der Primärschlüssel mit dem Namen entfernt 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;

Ändern einer VARCHAR-Spalte

Um Speicherplatz zu sparen, können Sie eine Tabelle zunächst mit VARCHAR-Spalten mit der Mindestgröße definieren, die für Ihre aktuellen Datenanforderungen erforderlich ist. Später können Sie längere Zeichenfolgen unterstützen, indem Sie die Spaltengröße in der Tabelle ändern.

Im folgenden Beispiel wird die Größe der EVENTNAME-Spalte auf VARCHAR(300) erhöht.

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

Ändern der Komprimierungskodierung für eine Spalte

Sie können die Komprimierungskodierung einer Spalte ändern. Nachstehend finden Sie eine Reihe von Beispielen, die diesen Ansatz veranschaulichen. Die Tabellendefinition für diese Beispielen lautet wie folgt.

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

Die folgende Anweisung ändert die Komprimierungskodierung für Spalte c0 von LZO-Kodierung in AZ64-Kodierung.

alter table t1 alter column c0 encode az64;

Die folgende Anweisung ändert die Komprimierungskodierung für Spalte c1 von Zstandard-Kodierung in AZ64-Kodierung.

alter table t1 alter column c1 encode az64;

Die folgende Anweisung ändert die Komprimierungskodierung für Spalte c2 von LZO-Kodierung in Byte-Verzeichnis-Kodierung.

alter table t1 alter column c2 encode bytedict;

Die folgende Anweisung ändert die Komprimierungskodierung für Spalte c3 von Zstandard-Kodierung in Runlength-Kodierung.

alter table t1 alter column c3 encode runlength;

Ändern einer DISTSTYLE KEY DISTKEY-Spalte

Die folgenden Beispiele illustrieren das Ändern von DISTSTYLE und DISTKEY in einer Tabelle.

Erstellen Sie eine Tabelle mit der Verteilung EVEN. Die Ansicht SVV_TABLE_INFO zeigt für DISTSTYLE den Wert 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

Ändern Sie die Tabelle DISTKEY in inv_warehouse_sk. Die Ansicht SVV_TABLE_INFO zeigt die Spalte inv_warehouse_sk als resultierenden Verteilerschlüssel an.

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

Ändern Sie die Tabelle DISTKEY in inv_item_sk. Die Ansicht SVV_TABLE_INFO zeigt die Spalte inv_item_sk als resultierenden Verteilerschlüssel an.

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

Ändern einer Tabelle in DISTSTYLE ALL

Die folgenden Beispiele zeigen, wie Sie eine Tabelle in DISTSTYLE ALL ändern.

Erstellen Sie eine Tabelle mit der Verteilung EVEN. Die Ansicht SVV_TABLE_INFO zeigt für DISTSTYLE den Wert 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

Ändern Sie die Tabelle DISTSTYLE in ALL. Die Ansicht SVV_TABLE_INFO zeigt die geänderte DISTSYTLE an.

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

Ändern des SORTKEY einer Tabelle

Sie können festlegen, ob eine Tabelle einen zusammengesetzten Sortierschlüssel oder keinen Sortierschlüssel haben soll.

In der folgenden Tabellendefinition ist die Tabelle t1 mit einem überlappenden Sortierschlüssel definiert.

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

Der folgende Befehle ändert die Tabelle so, dass aus dem überlappenden Sortierschlüssel ein zusammengesetzter Sortierschlüssel wird.

alter table t1 alter sortkey(c0, c1);

Der folgende Befehl ändert die Tabelle so, dass der überlappende Sortierschlüssel entfernt wird.

alter table t1 alter sortkey none;

In der folgenden Tabellendefinition ist die Tabelle t1 mit der Spalte c0 als Sortierschlüssel definiert.

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

Der folgende Befehle ändert die Tabelle t1 in einen zusammengesetzten Sortierschlüssel.

alter table t1 alter sortkey(c0, c1);

Ändern einer Tabelle in ENCODE AUTO

Das folgende Beispiel zeigt, wie Sie eine Tabelle in ENCODE AUTO ändern.

Die Tabellendefinition für dieses Beispiel lautet wie folgt. Spalte c0 ist mit dem Kodierungstyp AZ64 definiert, und Spalte c1 ist mit dem Kodierungstyp LZO definiert.

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

Die folgende Anweisung ändert die Kodierung dieser Tabelle auf AUTO.

alter table t1 alter encode auto;

Das folgende Beispiel zeigt, wie Sie eine Tabelle ändern, um die Einstellung ENCODE AUTO zu entfernen.

Die Tabellendefinition für dieses Beispiel lautet wie folgt. Die Tabellenspalten werden ohne Kodierung definiert. In diesem Fall ist die Kodierung standardmäßig auf ENCODE AUTO eingestellt.

create table t2(c0 int, c1 varchar);

Die folgende Anweisung ändert die Kodierung für Spalte c0 dieser Tabelle in LZO. Die Tabellenkodierung ist nicht mehr auf ENCODE AUTO eingestellt.

alter table t2 alter column c0 encode lzo;;