SELECT [ ALL | DISTINCT [ ON ( expressão [, ...] ) ] ]
* | expressão [ AS nome_saída ] [, ...]
INTO [ TEMPORARY | TEMP ] [ TABLE ] nova_tabela
[ FROM item_de [, ...] ]
[ WHERE condição ]
[ GROUP BY expressão [, ...] ]
[ HAVING condição [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
[ ORDER BY expressão [ ASC | DESC | USING operador ] [, ...] ]
[ FOR UPDATE [ OF nome_tabela [, ...] ] ]
[ LIMIT [ início , ] { contador | ALL } ]
[ OFFSET início ]
onde item_de pode ser:
[ ONLY ] nome_tabela [ * ]
[ [ AS ] alias [ ( lista_alias_coluna ) ] ]
|
( select )
[ AS ] alias [ ( lista_alias_coluna ) ]
|
item_de [ NATURAL ] join_type item_de
[ ON condição_junção | USING ( lista_coluna_junção ) ]
Se TEMPORARY ou TEMP for especificado, a tabela criada vai existir apenas durante a sessão, sendo automaticamente eliminada no fim da sessão. Uma tabela permanente com o mesmo nome, caso exista, não será visível (nesta sessão) enquanto a tabela temporária existir. Todo índice criado em tabela temporária também é temporário.
O nome da nova tabela a ser criada. A tabela não pode existir. Entretanto, pode ser criada uma tabela temporária que possua o mesmo nome de uma tabela permanente existente.
Todas as outras entradas estão descritas detalhadamente no comando SELECT.
Consulte os comandos CREATE TABLE e SELECT para obter um sumário das mensagens de saída possíveis.
O comando SELECT INTO cria uma nova tabela e a preenche com os dados produzidos por uma consulta. Os dados não são retornados para o cliente, como acontece em um comando SELECT normal. As colunas da nova tabela possuem os mesmos nomes e tipos de dado das colunas de saída do comando SELECT.
Note: O comando CREATE TABLE AS é funcionalmente equivalente ao comando SELECT INTO. CREATE TABLE AS é a sintaxe recomendada, porque SELECT INTO não é padrão. De fato, esta forma do SELECT INTO não está disponível no PL/pgSQL e no ecpg , porque os dois interpretam a cláusula INTO de forma diferente.
O SQL92 utiliza o comando SELECT ... INTO para representar a seleção de valores para dentro de variáveis escalares do programa hospedeiro, em vez de criar uma nova tabela. Esta é a mesma utilização encontrada no PL/pgSQL e no ecpg . A utilização no PostgreSQL do comando SELECT INTO para representar a criação de uma tabela é histórica. É melhor utilizar o comando CREATE TABLE AS para esta finalidade nos programas novos (O comando CREATE TABLE AS também não é padrão, mas tem menos chance de gerar confusão).