CREATE TABLE AS

Name

CREATE TABLE AS — 从一条 SELECT 的结果中创建一个新表
CREATE [ TEMPORARY | TEMP ] TABLE table [ (column [, ...] ) ]
     AS select_clause
  

输入

TEMPORARY 或 TEMP

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

table

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

column

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

select_clause

有效的查询语句,请参考 SELECT 获取可以使用的语法的描述.

输出

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

描述

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

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

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