Exemples - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples

Les exemples suivants illustrent les différents attributs de colonne et de table dans les instructions Amazon Redshift CREATETABLE. Pour plus d'informations CREATETABLE, notamment sur les définitions de paramètres, consultezCREATE TABLE.

De nombreux exemples utilisent des tableaux et des données provenant de l'ensemble de données TICKITd'échantillon. Pour plus d’informations, consultez Exemple de base de données.

Vous pouvez préfixer le nom de la table avec le nom de la base de données et le nom du schéma dans une CREATE TABLE commande. Par exemple, dev_database.public.sales. Le nom de la base de données doit être la base de données à laquelle vous êtes connecté. Toute tentative de création d’objets de base de données dans une autre base de données échoue avec une erreur d’opération non valide.

Créer une table avec une clé de distribution, une clé de tri composée et une compression

L'exemple suivant crée une SALES table dans la TICKIT base de données avec une compression définie pour plusieurs colonnes. LISTIDest déclarée comme clé de distribution LISTID et SELLERID est déclarée comme clé de tri composée à plusieurs colonnes. Les contraintes de clé primaire et de clé étrangère sont également définies pour la table. Avant de créer la table dans l'exemple, vous devrez peut-être ajouter une UNIQUE contrainte à chaque colonne référencée par une clé étrangère, si aucune contrainte n'existe.

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);

Les résultats sont les suivants :

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

L’exemple suivant crée une table t1 avec une colonne col1 insensible à la casse.

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

Interrogez la table.

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

Créer une table à l’aide d’une clé de tri entrelacé

L'exemple suivant crée la CUSTOMER table avec une clé de tri entrelacée.

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);

Création d'une table à l'aide de IF NOT EXISTS

L'exemple suivant crée la CITIES table ou ne fait rien et renvoie un message si elle existe déjà :

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

Création d'un tableau avec ALL distribution

L'exemple suivant crée la VENUE table avec ALL la distribution.

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

Création d'une table avec EVEN distribution

L'exemple suivant crée une table appelée MYEVENT avec trois colonnes.

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

La table est distribuée uniformément et n’est pas triée. Le tableau ne contient aucune déclaration DISTKEY ni aucune 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)

Création d'une table temporaire qui est LIKE une autre table

L'exemple suivant crée une table temporaire appeléeTEMPEVENT, qui hérite ses colonnes de la EVENT table.

create temp table tempevent(like event);

Cette table hérite également des SORTKEY attributs DISTKEY et de sa table parent :

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)

Création d'un tableau avec une IDENTITY colonne

L'exemple suivant crée une table nommée VENUE _IDENT, dont IDENTITY la colonne est nomméeVENUEID. Cette colonne commence par 0 et s’incrémente de 1 à chaque enregistrement. VENUEIDest également déclarée comme clé primaire de la table.

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

Création d'un tableau avec une IDENTITY colonne par défaut

L’exemple suivant crée une table nommée t1. Ce tableau possède une IDENTITY colonne nommée hist_id et une IDENTITY colonne par défaut nomméebase_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’insertion d’une ligne dans la table montre que les valeurs hist_id et base_id sont générées.

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’insertion d’une deuxième ligne montre que la valeur par défaut pour base_id est générée.

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’insertion d’une troisième ligne montre que la valeur pour base_id n’a pas besoin d’être unique.

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

Création d'un tableau avec des valeurs de DEFAULT colonnes

L'exemple suivant crée une CATEGORYDEF table qui déclare les valeurs par défaut pour chaque colonne :

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)

DISTSTYLEDISTKEY, et SORTKEY options

L'exemple suivant montre comment fonctionnent les DISTSTYLE options DISTKEYSORTKEY,, et. Dans cet exemple, COL1 c'est la clé de distribution ; par conséquent, le style de distribution doit être défini sur KEY ou non défini. Par défaut, comme la table n’a aucune clé de tri, elle n’est pas triée :

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

Dans l’exemple suivant, la même colonne est définie comme clé de distribution et clé de tri. Encore une fois, le style de distribution doit être défini sur KEY ou non défini.

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

Dans l'exemple suivant, aucune colonne n'est définie comme clé de distribution, COL2 elle est définie comme clé de tri et le style de distribution est défini sur ALL :

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

Dans l'exemple suivant, le style de distribution est défini sur EVEN et aucune clé de tri n'est définie explicitement ; par conséquent, le tableau est distribué uniformément mais n'est pas trié.

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

Créez un tableau avec l'ENCODEAUTOoption

L’exemple suivant crée la table t1 avec encodage de compression automatique. ENCODEAUTOest la valeur par défaut pour les tables lorsque vous ne spécifiez aucun type de codage pour aucune colonne.

create table t1(c0 int, c1 varchar);

L'exemple suivant crée la table t2 avec un codage de compression automatique en spécifiant ENCODEAUTO.

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

L'exemple suivant crée la table t3 avec un codage de compression automatique en spécifiant ENCODEAUTO. c0La colonne est définie avec un type de codage initial deDELTA. Amazon Redshift peut modifier l’encodage si un autre encodage fournit de meilleures performances de requête.

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

L'exemple suivant crée la table t4 avec un codage de compression automatique en spécifiant ENCODEAUTO. c0La colonne est définie avec un codage initial deDELTA, et la colonne c1 est définie avec un codage initial deLZO. Amazon Redshift peut modifier ces encodages si d’autres encodages fournissent de meilleures performances de requête.

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