Esempi - 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

Gli esempi seguenti illustrano vari attributi di colonne e tabelle nelle istruzioni Amazon Redshift CREATETABLE. Per ulteriori informazioni CREATETABLE, incluse le definizioni dei parametri, consultaCREATE TABLE.

Molti esempi utilizzano tabelle e dati del set di dati di TICKITesempio. Per ulteriori informazioni, consulta Database di esempio.

È possibile anteporre al nome della tabella il nome del database e il nome dello schema in un CREATE TABLE comando. Ad esempio, dev_database.public.sales. Il nome del database deve essere il database a cui si è connessi. Qualsiasi tentativo di creare oggetti di database in un altro database restituisce un errore di operazione non valida.

Creazione di una tabella con una chiave di distribuzione, una chiave di ordinamento composta e una compressione

L'esempio seguente crea una SALES tabella nel TICKIT database con una compressione definita per diverse colonne. LISTIDviene dichiarata come chiave di distribuzione LISTID e viene SELLERID dichiarata come chiave di ordinamento composta a più colonne. Anche i vincoli della chiave primaria e della chiave esterna sono definiti per la tabella. Prima di creare la tabella dell'esempio, potrebbe essere necessario aggiungere un UNIQUE vincolo a ogni colonna a cui fa riferimento una chiave esterna, se i vincoli non esistono.

create table sales( salesid integer not null, listid integer not null, sellerid integer not null, buyerid integer not null, eventid integer not null encode mostly16, dateid smallint not null, qtysold smallint not null encode mostly8, pricepaid decimal(8,2) encode delta32k, commission decimal(8,2) encode delta32k, saletime timestamp, primary key(salesid), foreign key(listid) references listing(listid), foreign key(sellerid) references users(userid), foreign key(buyerid) references users(userid), foreign key(dateid) references date(dateid)) distkey(listid) compound sortkey(listid,sellerid);

I risultati sono i seguenti:

schemaname | tablename | column | type | encoding | distkey | sortkey | notnull -----------+-----------+------------+-----------------------------+----------+---------+---------+-------- public | sales | salesid | integer | lzo | false | 0 | true public | sales | listid | integer | none | true | 1 | true public | sales | sellerid | integer | none | false | 2 | true public | sales | buyerid | integer | lzo | false | 0 | true public | sales | eventid | integer | mostly16 | false | 0 | true public | sales | dateid | smallint | lzo | false | 0 | true public | sales | qtysold | smallint | mostly8 | false | 0 | true public | sales | pricepaid | numeric(8,2) | delta32k | false | 0 | false public | sales | commission | numeric(8,2) | delta32k | false | 0 | false public | sales | saletime | timestamp without time zone | lzo | false | 0 | false

Nell'esempio seguente viene creata la tabella t1 con una colonna col1 senza distinzione tra maiuscole e minuscole.

create table T1 ( col1 Varchar(20) collate case_insensitive ); insert into T1 values ('bob'), ('john'), ('Tom'), ('JOHN'), ('Bob');

Esecuzione di query sulla tabella:

select * from T1 where col1 = 'John'; col1 ------ john JOHN (2 rows)

Creazione di una tabella usando una chiave di ordinamento interlacciato

L'esempio seguente crea la CUSTOMER tabella con una chiave di ordinamento interlacciata.

create table customer_interleaved ( c_custkey integer not null, c_name varchar(25) not null, c_address varchar(25) not null, c_city varchar(10) not null, c_nation varchar(15) not null, c_region varchar(12) not null, c_phone varchar(15) not null, c_mktsegment varchar(10) not null) diststyle all interleaved sortkey (c_custkey, c_city, c_mktsegment);

Crea una tabella usando IF NOT EXISTS

L'esempio seguente crea la CITIES tabella o non fa nulla e restituisce un messaggio se esiste già:

create table if not exists cities( cityid integer not null, city varchar(100) not null, state char(2) not null);

Crea una tabella con ALL distribuzione

L'esempio seguente crea la VENUE tabella con ALL distribuzione.

create table venue( venueid smallint not null, venuename varchar(100), venuecity varchar(30), venuestate char(2), venueseats integer, primary key(venueid)) diststyle all;

Crea una tabella con EVEN distribuzione

L'esempio seguente crea una tabella chiamata MYEVENT con tre colonne.

create table myevent( eventid int, eventname varchar(200), eventcity varchar(30)) diststyle even;

La tabella è distribuita in modo uniforme e non è ordinata. La tabella non ha né dichiarazioni DISTKEY né SORTKEY colonne.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'myevent'; column | type | encoding | distkey | sortkey -----------+------------------------+----------+---------+--------- eventid | integer | lzo | f | 0 eventname | character varying(200) | lzo | f | 0 eventcity | character varying(30) | lzo | f | 0 (3 rows)

Crea una tabella temporanea che sia LIKE un'altra tabella

L'esempio seguente crea una tabella temporanea denominataTEMPEVENT, che eredita le colonne dalla EVENT tabella.

create temp table tempevent(like event);

Questa tabella eredita anche SORTKEY gli attributi DISTKEY e della tabella principale:

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'tempevent'; column | type | encoding | distkey | sortkey -----------+-----------------------------+----------+---------+--------- eventid | integer | none | t | 1 venueid | smallint | none | f | 0 catid | smallint | none | f | 0 dateid | smallint | none | f | 0 eventname | character varying(200) | lzo | f | 0 starttime | timestamp without time zone | bytedict | f | 0 (6 rows)

Crea una tabella con una colonna IDENTITY

L'esempio seguente crea una tabella denominata VENUE _IDENT, che ha una IDENTITY colonna denominataVENUEID. Questa colonna inizia con 0 e incrementa di 1 per ogni record. VENUEIDè inoltre dichiarata come chiave primaria della tabella.

create table venue_ident(venueid bigint identity(0, 1), venuename varchar(100), venuecity varchar(30), venuestate char(2), venueseats integer, primary key(venueid));

Crea una tabella con una IDENTITY colonna predefinita

L'esempio seguente crea una tabella denominata t1. Questa tabella ha una IDENTITY colonna denominata hist_id e una IDENTITY colonna predefinita denominatabase_id.

CREATE TABLE t1( hist_id BIGINT IDENTITY NOT NULL, /* Cannot be overridden */ base_id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL, /* Can be overridden */ business_key varchar(10) , some_field varchar(10) );

L'inserimento di una riga nella tabella mostra che entrambi i valori hist_id e base_id vengono generati.

INSERT INTO T1 (business_key, some_field) values ('A','MM');
SELECT * FROM t1; hist_id | base_id | business_key | some_field ---------+---------+--------------+------------ 1 | 1 | A | MM

L'inserimento di una seconda riga mostra che viene generato il valore predefinito per base_id.

INSERT INTO T1 (base_id, business_key, some_field) values (DEFAULT, 'B','MNOP');
SELECT * FROM t1; hist_id | base_id | business_key | some_field ---------+---------+--------------+------------ 1 | 1 | A | MM 2 | 2 | B | MNOP

L'inserimento di una terza riga mostra che il valore per base_id non deve essere univoco.

INSERT INTO T1 (base_id, business_key, some_field) values (2,'B','MNNN');
SELECT * FROM t1; hist_id | base_id | business_key | some_field ---------+---------+--------------+------------ 1 | 1 | A | MM 2 | 2 | B | MNOP 3 | 2 | B | MNNN

Crea una tabella con i valori DEFAULT delle colonne

L'esempio seguente crea una CATEGORYDEF tabella che dichiara i valori predefiniti per ogni colonna:

create table categorydef( catid smallint not null default 0, catgroup varchar(10) default 'Special', catname varchar(10) default 'Other', catdesc varchar(50) default 'Special events', primary key(catid)); insert into categorydef values(default,default,default,default);
select * from categorydef; catid | catgroup | catname | catdesc -------+----------+---------+---------------- 0 | Special | Other | Special events (1 row)

DISTSTYLEDISTKEYe opzioni SORTKEY

L'esempio seguente mostra come funzionano DISTSTYLE le opzioni DISTKEYSORTKEY, e. In questo esempio, COL1 è la chiave di distribuzione; pertanto, lo stile di distribuzione deve essere impostato KEY o non impostato. Per impostazione predefinita, la tabella non dispone della chiave di ordinamento e quindi non è ordinata:

create table t1(col1 int distkey, col2 int) diststyle key;
select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 't1'; column | type | encoding | distkey | sortkey -------+---------+----------+---------+--------- col1 | integer | az64 | t | 0 col2 | integer | az64 | f | 0

Nell'esempio seguente, la stessa colonna è definita come la chiave di distribuzione e la chiave di ordinamento. Anche in questo caso, lo stile di distribuzione deve essere impostato KEY o non impostato.

create table t2(col1 int distkey sortkey, col2 int);
select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 't2'; column | type | encoding | distkey | sortkey -------+---------+----------+---------+--------- col1 | integer | none | t | 1 col2 | integer | az64 | f | 0

Nell'esempio seguente, nessuna colonna è impostata come chiave di distribuzione, COL2 è impostata come chiave di ordinamento e lo stile di distribuzione è impostato suALL:

create table t3(col1 int, col2 int sortkey) diststyle all;
select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 't3'; Column | Type | Encoding | DistKey | SortKey -------+---------+----------+---------+-------- col1 | integer | az64 | f | 0 col2 | integer | none | f | 1

Nell'esempio seguente, lo stile di distribuzione è impostato su EVEN e nessuna chiave di ordinamento è definita in modo esplicito; pertanto la tabella viene distribuita in modo uniforme ma non ordinata.

create table t4(col1 int, col2 int) diststyle even;
select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 't4'; column | type |encoding | distkey | sortkey --------+---------+---------+---------+-------- col1 | integer | az64 | f | 0 col2 | integer | az64 | f | 0

Crea una tabella con l'opzione ENCODE AUTO

L'esempio seguente crea la tabella t1 con codifica di compressione automatica. ENCODEAUTOè l'impostazione predefinita per le tabelle quando non si specifica un tipo di codifica per nessuna colonna.

create table t1(c0 int, c1 varchar);

L'esempio seguente crea la tabella t2 con codifica di compressione automatica specificando. ENCODE AUTO

create table t2(c0 int, c1 varchar) encode auto;

L'esempio seguente crea la tabella t3 con codifica di compressione automatica specificando. ENCODE AUTO c0La colonna è definita con un tipo di codifica iniziale di. DELTA Amazon Redshift può modificare la codifica se un'altra codifica fornisce migliori prestazioni delle query.

create table t3(c0 int encode delta, c1 varchar) encode auto;

L'esempio seguente crea la tabella t4 con codifica di compressione automatica specificando. ENCODE AUTO c0La colonna viene definita con una codifica iniziale di DELTA e la colonna c1 viene definita con una codifica iniziale di. LZO Amazon Redshift può modificare queste codifiche se altre codifiche forniscono prestazioni di query migliori.

create table t4(c0 int encode delta, c1 varchar encode lzo) encode auto;