CREATE TABLE AS
功能描述
根据查询结果创建表。
CREATE TABLE AS创建一个表并且用来自SELECT命令的结果填充该表。该表的字段和SELECT输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。
CREATE TABLE AS对源表进行一次查询,然后将数据写入新表中,而查询视图结果会根据源表的变化而有所改变。相比之下,每次做查询的时候,视图都重新计算定义它的SELECT语句。
注意事项
- 本章节只包含dolphin新增的语法,原openGauss的语法未做删除和修改。
语法格式
1. CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE table_name
2. [ (column_name [, ...] ) ]
3. [ WITH ( {storage_parameter = value} [, ... ] ) ]
4. [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
5. [ COMPRESS | NOCOMPRESS ]
6. [ TABLESPACE tablespace_name ]
7. [ AS ] query
8. [ WITH [ NO ] DATA ];
参数说明
- [ AS ] query
一个SELECT VALUES命令。
AS关键字可选,但若query中带有WITH语句,则必须使用括号将query包围,参考语句:
1. CREATE TABLE t_new (WITH temp_t(a, b) AS (SELECT a, b FROM t_old) SELECT * FROM temp_t);
示例
1. --创建一个表tpcds.store_returns表。
2. openGauss=# CREATE TABLE tpcds.store_returns
3. (
4. W_WAREHOUSE_SK INTEGER NOT NULL,
5. W_WAREHOUSE_ID CHAR(16) NOT NULL,
6. sr_item_sk VARCHAR(20) ,
7. W_WAREHOUSE_SQ_FT INTEGER
8. );
9. --创建一个表tpcds.store_returns_t1并插入tpcds.store_returns表中sr_item_sk字段中大于16的数值。
10. openGauss=# CREATE TABLE tpcds.store_returns_t1 AS SELECT * FROM tpcds.store_returns WHERE sr_item_sk > '4795';
12. --使用tpcds.store_returns拷贝一个新表tpcds.store_returns_t2。
13. openGauss=# CREATE TABLE tpcds.store_returns_t2 AS table tpcds.store_returns;
15. --删除表。
16. openGauss=# DROP TABLE tpcds.store_returns_t1 ;
17. openGauss=# DROP TABLE tpcds.store_returns_t2 ;
18. openGauss=# DROP TABLE tpcds.store_returns;
