
# CREATE TABLE LIKE
#### 语法
CREATE TABLE \[ IF NOT EXISTS\] table_name ( { column_name data_type \[ COMMENT comment\] \[ WITH (property_name = expression \[,...\] ) \] \| LIKE existing_table_name \[ {INCLUDING\| EXCLUDING} PROPERTIES\] } ) \[,...\] \[ COMMENT table_comment\] \[WITH (property_name = expression \[,... \] ) \]
#### 描述
使用LIKE子句可以在一个新表中包含一个已存在的表所有的列定义。可以使用多个LIKE来复制多个表的列。
如果使用了INCLUDING PROPERTIES，表的所有属性也会被复制到新表，该选项最多只能对一个表生效。
对于从表中复制过来的属性，可以使用WITH子句指定属性名进行修改。
默认使用EXCLUDING PROPERTIES属性。
对于带分区的表，如果用括号包裹like子句，复制的列定义不会包含分区键的信息。
#### 示例
- 创建基础表order01和order02
  ```
  CREATE TABLE order01(id int,name string,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'STORED AS TEXTFILE;
  CREATE TABLE order02(sku int, sku_name string, sku_describe string);
  ```
  

- 创建表orders_like01，它将包含表order01定义的列及表属性
  ```
  CREATE TABLE orders_like01 like order01 INCLUDING PROPERTIES;
  ```
  

- 创建表orders_like02，它将包含表order02定义的列，并将表的存储格式设置为'TEXTFILE'
  ```
  CREATE TABLE orders_like02 like order02 STORED AS TEXTFILE;
  ```
  

- 创建表orders_like03，它将包含表order01定义的列及表属性，order02定义的列，以及额外的列c1和c2
  ```
  CREATE TABLE orders_like03 (c1 int,c2 float,LIKE order01 INCLUDING PROPERTIES,LIKE order02);
  ```
  
- 创建表orders_like04和orders_like05，它们都会包含同一个表order_partition的定义，但orders_like04不会包含分区键信息，而orders_like05会包含分区键的信息
  ```
  CREATE TABLE order_partition(id int,name string,tel string) PARTITIONED BY (sku int);
  CREATE TABLE orders_like04 (like order_partition);
  CREATE TABLE orders_like05 like order_partition;
  DESC orders_like04;
   Column |  Type   | Extra | Comment 
  ---|---|---|---------
   id     | integer |       |         
   name   | varchar |       |         
   tel    | varchar |       |         
   sku    | integer |       |         
  (4 rows)
  DESC orders_like05;
   Column |  Type   |     Extra     | Comment 
  ---|---|---|---------
   id     | integer |               |         
   name   | varchar |               |         
   tel    | varchar |               |         
   sku    | integer | partition key |         
  (4 rows)
  ```
  
 
