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;

相关链接

CREATE TABLE,SELECT