全部產品
Search
文件中心

:CREATE TABLE AS SELECT(CTAS)

更新時間:Nov 05, 2024

AnalyticDB for MySQL支援通過CREATE TABLE建立表,也支援通過CREATE TABLE AS SELECT(CTAS)將查詢到的資料寫入新表中。

文法

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

該建表方式預設與CREATE TABLE一致,支援文法也相同,例如預設為表建立全索引等。

參數

參數

說明

table_name

表名。

表名以字母或底線(_)開頭,可包含字母、數字以及底線(_),長度為1~127個字元。

支援db_name.table_name格式,區分不同資料庫下相同名字的表。

IF NOT EXISTS

判斷table_name指定的表是否存在,若存在,則不執行建表語句。

IGNORE

選擇性參數,若表中已有相同主鍵的記錄,新記錄不會被寫入。

REPLACE

選擇性參數,若表中已有相同主鍵的記錄,新記錄將替換已有相同主鍵的記錄。

樣本

本樣本根據customer表,建立一個新的表new_customercustomer表結構如下:

CREATE TABLE customer (
customer_id bigint NOT NULL COMMENT '顧客ID',
customer_name varchar NOT NULL COMMENT '顧客姓名',
phone_num bigint NOT NULL COMMENT '電話',
city_name varchar NOT NULL COMMENT '所屬城市',
sex int NOT NULL COMMENT '性別',
id_number varchar NOT NULL COMMENT '社會安全號碼碼',
home_address varchar NOT NULL COMMENT '家庭住址',
office_address varchar NOT NULL COMMENT '辦公地址',
age int NOT NULL COMMENT '年齡',
login_time timestamp NOT NULL COMMENT '登入時間',
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 '客戶資訊表';                   

樣本1

customer表讀取所有列資料,並將資料寫入新表new_customer。新表new_customer的列名稱、列資料類型與customer表相同。樣本語句如下:

CREATE TABLE new_customer 
AS 
SELECT * FROM customer;

樣本2

customer表讀取customer_idcustomer_name列的資料,並將資料寫入新表new_customer。樣本語句如下:

CREATE TABLE new_customer 
AS 
SELECT customer_id, customer_name 
FROM customer;

樣本3

customer表讀取customer_idlogin_time列的資料,並將資料寫入新表new_customer。定義新表customer_idlogin_time為主鍵,customer_id為分布鍵。樣本語句如下:

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

樣本4

customer表讀取customer_idlogin_time列的資料,並將資料寫入新表new_customer。定義新表customer_idlogin_time為主鍵,customer_id為分布鍵,重新定義login_time列類型。樣本語句如下:

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;

樣本5

customer表讀取customer_idcustomer_namelogin_time列的資料,並將資料寫入新表new_customer。定義新表倒排索引為customer_id。樣本語句如下:

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