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一致,支援文法也相同,例如預設為表建立全索引等。
參數
參數 | 說明 |
| 表名。 表名以字母或底線(_)開頭,可包含字母、數字以及底線(_),長度為1~127個字元。 支援 |
| 判斷 |
| 選擇性參數,若表中已有相同主鍵的記錄,新記錄不會被寫入。 |
| 選擇性參數,若表中已有相同主鍵的記錄,新記錄將替換已有相同主鍵的記錄。 |
樣本
本樣本根據customer表,建立一個新的表new_customer。customer表結構如下:
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_id、customer_name列的資料,並將資料寫入新表new_customer。樣本語句如下:
CREATE TABLE new_customer
AS
SELECT customer_id, customer_name
FROM customer;樣本3
從customer表讀取customer_id、login_time列的資料,並將資料寫入新表new_customer。定義新表customer_id、login_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_id、login_time列的資料,並將資料寫入新表new_customer。定義新表customer_id、login_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_id、customer_name、login_time列的資料,並將資料寫入新表new_customer。定義新表倒排索引為customer_id。樣本語句如下:
CREATE TABLE new_customer (
INDEX a_idx (customer_id))
AS
SELECT customer_id, customer_name, login_time
FROM customer;