Skip to content

CREATE TABLE SELECT

创建一个新表,并通过SELECT语句的结果填充该表。

语法格式

sql
createasstmt::=
    CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP | GLOBAL TEMPORARY | GLOBAL TEMP] TABLE [IF NOT EXISTS] name_space [( ColId [,ColId]... )] AS selectstmt

参数说明

  • [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP | GLOBAL TEMPORARY | GLOBAL TEMP]:指定创建的表是临时表还是全局临时表。
    • TEMPORARYTEMP :创建临时表,这些表在会话结束时会被自动删除。
    • LOCAL TEMPORARYLOCAL TEMP:表的作用范围仅限于当前会话。
    • GLOBAL TEMPORARYGLOBAL TEMP:创建全局临时表。
  • name_space:表名,可带模式名也可忽略模式名。
  • ( ColId [,ColId]... ):列名,可选值,缺省时列名为查询中的列名。
  • selectstmt:查询语句,详情参考查询章节。

说明:

ColId字段数必须和selectstmt中的字段数保持一致。

示例

sql
SQL> CREATE TABLE copy_tab4(col1 INT,col2 VARCHAR); 

SQL> INSERT INTO copy_tab4 VALUES(1,'VALUE1')(2,'VALUE2');

SQL> CREATE TABLE copy_tab5 AS SELECT * FROM copy_tab4;

SQL> SELECT * FROM copy_tab5;

COL1 | COL2 | 
------------------------------------------------------------------------------
1 | VALUE1|
2 | VALUE2|