SELECT [ ALL | DISTINCT [ ON ( expressão [, ...] ) ] ] * | expressão [ AS nome_de_saída ] [, ...] INTO [ TEMPORARY | TEMP ] [ TABLE ] nova_tabela [ FROM item_do_from [, ...] ] [ WHERE condição ] [ GROUP BY expressão [, ...] ] [ HAVING condição [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] seleção ] [ ORDER BY expressão [ ASC | DESC | USING operator ] [, ...] ] [ LIMIT { contador | ALL } ] [ OFFSET início ] [ FOR UPDATE [ OF nome_da_tabela [, ...] ] ]
O comando SELECT INTO cria uma tabela e a carrega com dados computados por uma consulta. Os dados não são retornados para o cliente, como acontece normalmente no comando SELECT. As colunas da nova tabela possuem o mesmo nome e tipo de dado das colunas da saída do comando SELECT.
Todos os outros parâmetros estão descritos detalhadamente no comando SELECT .
O comando CREATE TABLE AS é funcionalmente semelhante ao comando SELECT INTO. O comando CREATE TABLE AS é a sintaxe recomendada, uma vez que esta forma do comando SELECT INTO não está disponível no ECPG nem no PL/pgSQL, porque estes interpretam a cláusula INTO de forma diferente.
O padrão SQL utiliza o comando SELECT ... INTO para representar a seleção de valores colocados dentro de variáveis escalares do programa hospedeiro, em vez de criar uma nova tabela. Esta é a mesma utilização encontrada no ECPG (veja o Capítulo 30 ) e no PL/pgSQL (veja o Capítulo 37 ). A utilização pelo 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.