Ejemplos de ALTER TABLE - Amazon Redshift

Ejemplos de ALTER TABLE

En los siguientes ejemplos se muestra el uso básico del comando ALTER TABLE.

Cambiar el nombre de una tabla o una vista

El siguiente comando cambia el nombre de la tabla USERS a USERS_BKUP:

alter table users rename to users_bkup;

También puede utilizar este tipo de comando para cambiar el nombre de una vista.

Cambiar el propietario de una tabla o vista

El siguiente comando cambia el propietario de la tabla VENUE al usuario DWUSER:

alter table venue owner to dwuser;

Los siguientes comandos crean una vista y, luego, cambian su propietario:

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

Cambiar el nombre de una columna

El siguiente comando cambia el nombre de la columna VENUESEATS de la tabla VENUE a VENUESIZE:

alter table venue rename column venueseats to venuesize;

Eliminar la restricción de una tabla

Para eliminar la restricción de una tabla, como clave principal, clave externa o restricción única, primero debe buscar el nombre interno de la restricción. Y, a continuación, especificar el nombre de la restricción en el comando ALTER TABLE. En el siguiente ejemplo, se buscan las restricciones de la tabla CATEGORY y, luego, se elimina la clave principal con el nombre 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;

Modificar una columna VARCHAR

Para ahorrar espacio de almacenamiento, puede definir inicialmente una tabla con columnas VARCHAR con el tamaño mínimo necesario para sus requisitos de datos actuales. Si más adelante, para dar cabida a cadenas más largas, puede modificar la tabla para aumentar el tamaño de la columna.

En el siguiente ejemplo, se cambia el tamaño de la columna EVENTNAME a VARCHAR(300).

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

Modificar la codificación de compresión de una columna

Puede modificar la codificación de compresión de una columna. A continuación, encontrará un conjunto de ejemplos que demuestran este enfoque. La definición de la tabla para estos ejemplos es la siguiente.

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

La siguiente instrucción modifica la codificación de compresión de la columna c0 de codificación LZO a AZ64.

alter table t1 alter column c0 encode az64;

La siguiente instrucción modifica la codificación de compresión de la columna c1 de codificación Zstandard a AZ64.

alter table t1 alter column c1 encode az64;

La siguiente instrucción modifica la codificación de compresión de la columna c2 de codificación LZO a codificación por diccionario de bytes.

alter table t1 alter column c2 encode bytedict;

La siguiente instrucción modifica la codificación de compresión de la columna c3 de codificación Zstandard a Runlength.

alter table t1 alter column c3 encode runlength;

Modificar una columna DISTSTYLE KEY DISTKEY

Los siguientes ejemplos muestran cómo cambiar DISTSTYLE y DISTKEY en una tabla.

Crear una tabla con un estilo de distribución EVEN. LA vista SVV_TABLE_INFO muestra que DISTSYLE es 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

Altere la tabla DISTKEY a inv_warehouse_sk. La vista SVV_TABLE_INFO muestra la columna inv_warehouse_sk como la clave de distribución resultante.

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

Altere la tabla DISTKEY a inv_item_sk. La vista SVV_TABLE_INFO muestra la columna inv_item_sk como la clave de distribución resultante.

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

Modificar una tabla a DISTSTYLE ALL

En los ejemplos siguientes se muestra cómo cambiar una tabla a DISTSTYLE ALL.

Crear una tabla con un estilo de distribución EVEN. LA vista SVV_TABLE_INFO muestra que DISTSYLE es 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

Cambie la tabla DISTSTYLE a ALL. La vista SVV_TABLE_INFO muestra el DISTSYTLE modificado.

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

Modificar una tabla SORTKEY

Puede modificar una tabla para que tenga una clave de ordenación compuesta o ninguna clave de ordenación.

En la siguiente definición de la tabla, la tabla t1 se define con una sortkey intercalada.

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

El siguiente comando modifica la tabla de una clave de ordenación intercalada a una clave de ordenación compuesta.

alter table t1 alter sortkey(c0, c1);

El siguiente comando modifica la tabla para eliminar la clave de ordenación intercalada.

alter table t1 alter sortkey none;

En la siguiente definición de la tabla, la tabla t1 se define con una columna c0 como sortkey.

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

El siguiente comando modifica la tabla t1 a una clave de ordenación compuesta.

alter table t1 alter sortkey(c0, c1);

Modificar una tabla para pasarla a ENCODE AUTO

En el siguiente ejemplo, se muestra cómo modificar una tabla para pasarla a ENCODE AUTO.

A continuación, se muestra la definición de la tabla para este ejemplo. La columna c0 se define con el tipo de codificación AZ64 y la columna c1 se define con el tipo de codificación LZO.

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

Para esta tabla, la siguiente instrucción modifica la codificación a AUTO.

alter table t1 alter encode auto;

En el siguiente ejemplo, se muestra cómo modificar una tabla para quitar el ajuste ENCODE AUTO.

A continuación, se muestra la definición de la tabla para este ejemplo. Las columnas de la tabla se definen sin codificación. En este caso, la codificación adopta la opción ENCODE AUTO de manera predeterminada.

create table t2(c0 int, c1 varchar);

Para esta tabla, la siguiente instrucción modifica la codificación de la columna c0 a LZO. La codificación de la tabla ya no se establece en ENCODE AUTO.

alter table t2 alter column c0 encode lzo;;

Modificar el control de seguridad de nivel de fila

El siguiente comando desactiva la RLS de la tabla:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;

El siguiente comando activa la RLS para la tabla:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;

El siguiente comando activa la RLS para la tabla y la hace accesible a través de recursos compartidos de datos:

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

El siguiente comando activa la RLS para la tabla y la hace inaccesible a través de recursos compartidos de datos:

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

El siguiente comando activa la RLS y establece el tipo de conjunción RLS en OR para la tabla:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;

El siguiente comando activa la RLS y establece el tipo de conjunción RLS en AND para la tabla:

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;