CREATE TABLE AS

Name

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

Synopsis

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

描述

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

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

这条命令和 SELECT INTO, 有相同的功能, 但是我们建议你多用这条命令,因为它不象 SELECT ... INTO 语法那样融合和一些其它用法 混淆.

参数

[LOCAL] TEMPORARY[LOCAL] TEMP

如果声明了这个选项,则该表作为临时表创建. 参阅 CREATE TABLE 获取细节.

table_name

要创建的表名(可以是用大纲修饰的).

column_name

字段的名称.多字段的名称可以用逗号分隔的字段名列表声明. 如果没有提供字段名子,那么就从查询的输出字段名中获取.

query

有效的查询语句(也就是一条 SELECT 命令),请参考 SELECT 获取可以使用的语法的描述.

诊断

请参考 CREATE TABLESELECT 获取可能的输出的概要.

注意

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

兼容性

这条命令是根据 Oracle 的一个特性 制作的.在 SQL92 或 SQL99 中没有功能相等的命令.不过, 把CREATE TABLEINSERT ... SELECT 组合起来可以通过略微多一些的工作完成同样的事情.

历史

PostgreSQL 6.3 开始就已经有 CREATE TABLE AS 命令了.

又见

CREATE TABLE, CREATE VIEW, SELECT, SELECT INTO