SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
如果声明了这个关键字,那么该表是作为一个临时表创建的。请参考 CREATE TABLE 获取细节。
要创建的表的名字(可以有模式修饰)
所有其它输入的域都在 SELECT 中有详细描述。
CREATE TABLE AS 的作用和 SELECT INTO 类似。建议使用 CREATE TABLE AS 语法,因为 SELECT INTO 不是标准语法。实际上,它是不能在 ECPG 或 PL/pgSQL 中使用的,因为它们对 INTO 子句的解释是不同的。而且,CREATE TABLE AS 提供了 SELECT INTO 所提供功能的超集。
在 PostgreSQL 8.1 以前, SELECT INTO 创建的表总是缺省包含 OID 。到了 PostgreSQL 8.1 ,这不再是缺省了,要想在新表中包含 OID ,可以打开 default_with_oids 配置参数或使用 WITH OIDS 子句。
创建一个新表 films_recent ,它的值包含来自 films 的最近的条目:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';