Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh
Contoh berikut menunjukkan berbagai atribut kolom dan tabel dalam pernyataan Amazon Redshift CREATETABLE. Untuk informasi selengkapnya tentang CREATETABLE, termasuk definisi parameter, lihatCREATE TABLE.
Banyak contoh menggunakan tabel dan data dari kumpulan data TICKITsampel. Untuk informasi selengkapnya, lihat Contoh database.
Anda dapat mengawali nama tabel dengan nama database dan nama skema dalam sebuah CREATE TABLE perintah. 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 SALES tabel dalam TICKIT database dengan kompresi didefinisikan untuk beberapa kolom. LISTIDdideklarasikan sebagai kunci distribusi, 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 UNIQUE batasan 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 CUSTOMER tabel dengan kunci sortir disisipkan.
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 IF NOT EXISTS
Contoh berikut membuat CITIES tabel, 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 ALL distribusi
Contoh berikut membuat VENUE tabel dengan ALL distribusi.
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 EVEN distribusi
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 deklarasi DISTKEY atau SORTKEY kolom.
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 merupakan tabel LIKE lain
Contoh berikut membuat tabel sementara yang disebutTEMPEVENT, yang mewarisi kolom dari EVENT tabel.
create temp table tempevent(like event);
Tabel ini juga mewarisi DISTKEY dan SORTKEY atribut 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 IDENTITY kolom
Contoh berikut membuat tabel bernama VENUE _IDENT, yang memiliki IDENTITY kolom bernamaVENUEID. Kolom ini dimulai dengan 0 dan bertambah 1 untuk setiap catatan. VENUEIDjuga 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 IDENTITY kolom default
Contoh berikut membuat tabel bernamat1
. Tabel ini memiliki IDENTITY kolom bernama hist_id
dan IDENTITY kolom 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 DEFAULT kolom
Contoh berikut membuat CATEGORYDEF tabel yang mendeklarasikan 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)
DISTSTYLE,DISTKEY, dan SORTKEY opsi
Contoh berikut menunjukkan bagaimanaDISTKEY,SORTKEY, dan DISTSTYLE opsi bekerja. 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 disetel 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 ditetapkan sebagai kunci pengurutan, dan gaya distribusi diatur keALL:
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 ENCODE AUTO opsi
Contoh berikut membuat tabel t1
dengan pengkodean kompresi otomatis. ENCODEAUTOadalah 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 ENCODEAUTO.
create table t2(c0 int, c1 varchar) encode auto;
Contoh berikut membuat tabel t3
dengan pengkodean kompresi otomatis dengan menentukan ENCODEAUTO. 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 ENCODEAUTO. Kolom c0
didefinisikan dengan pengkodean awalDELTA, 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;