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;