全部产品
Search
文档中心

AnalyticDB:CREATE TABLE AS SELECT (CTAS)

更新时间:Jun 26, 2025

AnalyticDB for MySQL memungkinkan Anda mengeksekusi pernyataan CREATE TABLE untuk membuat tabel atau menggunakan pernyataan CREATE TABLE AS SELECT (CTAS) untuk menulis hasil query ke dalam tabel baru.

Sintaks

CREATE TABLE [IF NOT EXISTS] <table_name> [table_definition]
[IGNORE|REPLACE] [AS] <query_statement>
Catatan

Secara default, pernyataan CTAS digunakan dengan cara yang sama seperti pernyataan CREATE TABLE. Kedua metode pembuatan tabel ini memiliki sintaks yang identik. Sebagai contoh, terlepas dari metode yang digunakan, indeks akan dibuat secara otomatis untuk setiap kolom tabel.

Parameter

Parameter

Deskripsi

table_name

Nama tabel.

Nama tabel harus memiliki panjang 1 hingga 127 karakter dan dapat berisi huruf, angka, serta garis bawah (_). Nama tabel harus dimulai dengan huruf atau garis bawah (_).

Tentukan nama tabel dalam format db_name.table_name untuk membedakan tabel yang memiliki nama sama di database berbeda.

IF NOT EXISTS

Menentukan apakah tabel yang ditentukan oleh table_name ada. Jika tabel sudah ada, tidak ada tabel baru yang dibuat.

IGNORE

Opsional. Sebelum catatan baru ditulis ke tabel, sistem memeriksa apakah tabel berisi catatan yang sudah ada dengan kunci utama yang sama dengan catatan baru tersebut. Jika ditemukan kecocokan, catatan baru tidak ditulis ke tabel.

REPLACE

Opsional. Sebelum catatan baru ditulis ke tabel, sistem memeriksa apakah tabel berisi catatan yang sudah ada dengan kunci utama yang sama dengan catatan baru tersebut. Jika ditemukan kecocokan, catatan baru akan menimpa catatan yang sudah ada.

Contoh

Dalam contoh berikut, sebuah tabel bernama new_customer dibuat dari tabel customer. Berikut adalah skema tabel customer:

CREATE TABLE customer (
customer_id bigint NOT NULL COMMENT 'ID Pelanggan',
customer_name varchar NOT NULL COMMENT 'Nama pelanggan',
phone_num bigint NOT NULL COMMENT 'Nomor telepon',
city_name varchar NOT NULL COMMENT 'Kota',
sex int NOT NULL COMMENT 'Jenis kelamin',
id_number varchar NOT NULL COMMENT 'Nomor kartu identitas',
home_address varchar NOT NULL COMMENT 'Alamat rumah',
office_address varchar NOT NULL COMMENT 'Alamat kantor',
age int NOT NULL COMMENT 'Usia',
login_time timestamp NOT NULL COMMENT 'Waktu masuk',
PRIMARY KEY (login_time,customer_id,phone_num)
 )
DISTRIBUTED BY HASH(customer_id)
PARTITION BY VALUE(DATE_FORMAT(login_time, '%Y%m%d')) LIFECYCLE 30
COMMENT 'Tabel informasi pelanggan';                   

Contoh 1

Baca data semua kolom dari tabel customer dan tulis data tersebut ke tabel new_customer, sehingga tabel new_customer memiliki nama kolom dan tipe data yang sama dengan tabel customer. Contoh pernyataan:

CREATE TABLE new_customer 
AS 
SELECT * FROM customer;

Contoh 2

Baca data kolom customer_id dan customer_name dari tabel customer dan tulis data tersebut ke tabel new_customer. Contoh pernyataan:

CREATE TABLE new_customer 
AS 
SELECT customer_id, customer_name 
FROM customer;

Contoh 3

Baca data kolom customer_id dan login_time dari tabel customer dan tulis data tersebut ke tabel new_customer. Di tabel new_customer, definisikan kolom customer_id dan login_time sebagai kunci utama dan kolom customer_id sebagai kunci distribusi. Contoh pernyataan:

CREATE TABLE new_customer (
  PRIMARY KEY (customer_id,login_time)) 
  DISTRIBUTED BY HASH (customer_id)
AS 
SELECT customer_id, login_time
FROM customer;

Contoh 4

Baca data kolom customer_id dan login_time dari tabel customer dan tulis data tersebut ke tabel new_customer. Di tabel new_customer, definisikan kolom customer_id dan login_time sebagai kunci utama dan kolom customer_id sebagai kunci distribusi. Kemudian, ubah tipe data kolom login_time. Contoh pernyataan:

CREATE TABLE new_customer (
  login_time date, 
  PRIMARY KEY (customer_id,login_time)) 
  DISTRIBUTED BY HASH (customer_id)
AS 
SELECT customer_id, login_time
FROM customer;

Contoh 5

Baca data kolom customer_id, customer_name, dan login_time dari tabel customer dan tulis data tersebut ke tabel new_customer. Di tabel new_customer, definisikan kolom customer_id sebagai kolom indeks terbalik. Contoh pernyataan:

CREATE TABLE new_customer (
  INDEX a_idx (customer_id))
AS 
SELECT customer_id, customer_name, login_time 
FROM customer;