SELECT INTO

Name

SELECT INTO  --  cria uma nova tabela a partir do resultado de uma consulta

Synopsis

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 ) ]
  

Entradas

TEMPORARY
TEMP

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.

nova_tabela

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.

Saídas

Consulte os comandos CREATE TABLE e SELECT para obter um sumário das mensagens de saída possíveis.

Descrição

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.

Compatibilidade

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).