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 ] [, ...] ] [ FOR UPDATE [ OF tablename [, ...] ] ] [ LIMIT { count | ALL } [ { OFFSET | , } start ]] 这里 from_item 可以是: [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias_list ) ] ] | ( select ) [ AS ] alias [ ( column_alias_list ) ] | from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column_list ) ]
如果声明了 TEMPORARY 或者 TEMP, 那么输出表就只在本次会话中创建,并且会话结束后自动删除. 同名的现存永久表在临时表存在期间将不可见(在本次会话中). 任何在临时表上创建的索引都是自动临时的.
要创建的新表名.这个表必须是尚未存在的. 不过,我们可以在存在一个永久表的情况下创建一个(同名)临时表.
所有其它输入的域都在 SELECT 中有详细描述.
SELECT INTO 从一个查询的计算结果中创建一个新表. 书局并不返回给客户端,这一点和普通的 SELECT 不同.新表的字段具有和 SELECT 的输出字段 相关联(相同)的名字和数据类型.
注意: CREATE TABLE AS 的作用和 SELECT INTO 相同. 我们建议使用 CREATE TABLE AS 语法, 因为 SELECT INTO 不是标准语法. 实际上,这种类型的 SELECT INTO 是不能在 PL/pgSQL 或者 ecpg 中使用的,因为它们对 INTO 子句的解释是不同的.