您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

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

如果声明了这个选项,则该表作为临时表创建. 临时表在会话退出的时候自动删除. 在该临时表存在的期间(本次会话), 同名的永久表是不可见的. 任何在临时表上创建的索引也自动是临时的.

LOCAL 关键字是可选的.

table_name

要创建的表名.这个表不能是已经存在的. 不过,临时表可以创建为和现有永久表同名. (译注∶这里指的是同名临时表或永久表不能已经存在)

column_name

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

query

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

诊断

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

注意

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

兼容性

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

历史

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