Contoh-contoh - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh-contoh

Contoh berikut menunjukkan berbagai atribut kolom dan tabel dalam pernyataan Amazon Redshift CREATE TABLE. Untuk informasi selengkapnya tentang CREATE TABLE, termasuk definisi parameter, lihatCREATE TABLE.

Banyak contoh menggunakan tabel dan data dari kumpulan data sampel TICKIT. Untuk informasi selengkapnya, lihat Contoh database.

Anda dapat mengawali nama tabel dengan nama database dan nama skema dalam perintah CREATE TABLE. Misalnya,dev_database.public.sales. Nama database harus berupa database yang terhubung dengan Anda. Setiap upaya untuk membuat objek database di database lain gagal dengan dan kesalahan operasi tidak valid.

Buat tabel dengan kunci distribusi, kunci sortir majemuk, dan kompresi

Contoh berikut membuat tabel PENJUALAN dalam database TICKIT dengan kompresi didefinisikan untuk beberapa kolom. LISTID dideklarasikan sebagai kunci distribusi, dan LISTID dan SELLERID dideklarasikan sebagai kunci sortir majemuk multicolumn. Kendala kunci primer dan kunci asing juga ditentukan untuk tabel. Sebelum membuat tabel dalam contoh, Anda mungkin perlu menambahkan batasan UNIK ke setiap kolom yang direferensikan oleh kunci asing, jika batasan tidak ada.

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

Hasilnya mengikuti:

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

Contoh berikut membuat tabel t1 dengan kolom col1 case-insensitive.

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

Kueri tabel:

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

Buat tabel menggunakan kunci sortir yang disisipkan

Contoh berikut membuat tabel CUSTOMER dengan kunci sort interleaved.

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

Buat tabel menggunakan JIKA TIDAK ADA

Contoh berikut membuat tabel CITIES, atau tidak melakukan apa-apa dan mengembalikan pesan jika sudah ada:

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

Buat tabel dengan distribusi SEMUA

Contoh berikut membuat tabel VENUE dengan distribusi SEMUA.

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

Buat Tabel dengan distribusi EVEN

Contoh berikut membuat tabel yang disebut MYEVENT dengan tiga kolom.

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

Tabel didistribusikan secara merata dan tidak diurutkan. Tabel tidak memiliki kolom DISTKEY atau SORTKEY yang dinyatakan.

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)

Buat tabel sementara yang SEPERTI tabel lain

Contoh berikut membuat tabel sementara yang disebut TEMPEVENT, yang mewarisi kolom dari tabel EVENT.

create temp table tempevent(like event);

Tabel ini juga mewarisi atribut DISTKEY dan SORTKEY dari tabel induknya:

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)

Buat tabel dengan kolom IDENTITY

Contoh berikut membuat tabel bernama VENUE_IDENT, yang memiliki kolom IDENTITY bernama VENUEID. Kolom ini dimulai dengan 0 dan bertambah 1 untuk setiap catatan. VENUEID juga dinyatakan sebagai kunci utama tabel.

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

Buat tabel dengan kolom IDENTITAS default

Contoh berikut membuat tabel bernamat1. Tabel ini memiliki kolom IDENTITY bernama hist_id dan kolom IDENTITY default bernamabase_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) );

Memasukkan baris ke dalam tabel menunjukkan bahwa keduanya hist_id dan base_id nilai dihasilkan.

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

Menyisipkan baris kedua menunjukkan bahwa nilai default untuk base_id dihasilkan.

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

Menyisipkan baris ketiga menunjukkan bahwa nilai untuk base_id tidak perlu unik.

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

Buat tabel dengan nilai kolom DEFAULT

Contoh berikut membuat tabel CATEGORYDEF yang menyatakan nilai default untuk setiap kolom:

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)

Opsi DISTYLE, DISTKEY, dan SORTKEY

Contoh berikut menunjukkan cara kerja opsi DISTKEY, SORTKEY, dan DISTSTYLE. Dalam contoh ini, COL1 adalah kunci distribusi; oleh karena itu, gaya distribusi harus diatur ke KEY atau tidak diatur. Secara default, tabel tidak memiliki kunci pengurutan sehingga tidak diurutkan:

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

Dalam contoh berikut, kolom yang sama didefinisikan sebagai kunci distribusi dan kunci sortir. Sekali lagi, gaya distribusi harus diatur ke KEY atau tidak diatur.

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

Dalam contoh berikut, tidak ada kolom yang ditetapkan sebagai kunci distribusi, COL2 diatur sebagai kunci pengurutan, dan gaya distribusi diatur ke SEMUA:

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

Dalam contoh berikut, gaya distribusi diatur ke EVEN dan tidak ada kunci pengurutan didefinisikan secara eksplisit; oleh karena itu tabel didistribusikan secara merata tetapi tidak diurutkan.

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

Buat tabel dengan opsi ENCODE AUTO

Contoh berikut membuat tabel t1 dengan pengkodean kompresi otomatis. ENCODE AUTO adalah default untuk tabel ketika Anda tidak menentukan jenis pengkodean untuk kolom apa pun.

create table t1(c0 int, c1 varchar);

Contoh berikut membuat tabel t2 dengan pengkodean kompresi otomatis dengan menentukan ENCODE AUTO.

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

Contoh berikut membuat tabel t3 dengan pengkodean kompresi otomatis dengan menentukan ENCODE AUTO. Kolom c0 didefinisikan dengan jenis pengkodean awal DELTA. Amazon Redshift dapat mengubah pengkodean jika pengkodean lain memberikan kinerja kueri yang lebih baik.

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

Contoh berikut membuat tabel t4 dengan pengkodean kompresi otomatis dengan menentukan ENCODE AUTO. Kolom c0 didefinisikan dengan pengkodean awal DELTA, dan kolom c1 didefinisikan dengan pengkodean awal LZO. Amazon Redshift dapat mengubah pengkodean ini jika pengkodean lain memberikan kinerja kueri yang lebih baik.

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