CREATE TABLE AS(7)

NAME
CREATE TABLE AS - 从一条查询的结果中创建一个新表

SYNOPSIS

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ (column_name [, ...] ) ]
    AS query

DESCRIPTION 描述

CREATE TABLE AS 创建一个表并且用来自 SELECT 命令计算出来的数据填充该表。 该表的字段和 SELECT 输出字段的名字及类型相关。 （只不过你可以通过明确地给出一个字段名字列表来覆盖 SELECT 的字段名）。

CREATE TABLE AS 和创建视图有点象， 不过两者之间实在是有比较大差异：它创建一个新表并且只对 SELECT 计算一次来填充这个新表。 新表不能跟踪 SELECT 的源表随后做的变化。 相比之下，每次做查询的时候，视图都重新计算定义它的 SELECT 语句。

PARAMETERS 参数

TEMPORARY or TEMP
     如果声明了这个选项，则该表作为临时表创建。 参阅 CREATE TABLE [create_table(7)] 获取细节。

table_name
     要创建的表名（可以是用模式修饰的）。

column_name
     字段的名称。如果没有提供字段名字，那么就从查询的输出字段名中获取。 如果表是一个 EXECUTE 命令创建的， 那么当前就不能声明字段名列表。

query
     一个查询语句（也就是一条 SELECT 命令或者一条运行准备好的 SELECT 命令的 EXECUTE 命令），请分别参考 SELECT [select(7)] 或者 EXECUTE [execute(l)] 获取可以使用的语法的描述。

NOTES 注意

 这条命令从功能上等效于 SELECT INTO [select_into(7)]， 但是我们更建议你用这个命令，因为它不太可能和 SELECT ... INTO 语法的其它方面的使用混淆。

COMPATIBILITY 兼容性

 这条命令是根据 Oracle 的一个特性制作的。 在 SQL 标准中没有功能相等的命令。不过， 把 CREATE TABLE 和 INSERT ... SELECT 组合起来可以通过略微多一些的工作完成同样的事情。

SEE ALSO 参见
CREATE TABLE [create_table(7)], CREATE VIEW [create_view(l)], EXECUTE [execute(l)], SELECT [select(l)], SELECT INTO [select_into(l)]

译者
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>