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 operador ] [, ...] ] [ LIMIT { contador | ALL } ] [ OFFSET início ] [ FOR { UPDATE | SHARE } [ OF nome_da_tabela [, ...] ] [ NOWAIT ] [...] ]
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 associados às colunas de saída do comando SELECT. [1] [2]
Se for especificado, a tabela será criada como uma tabela temporária. Para obter detalhes deve ser consultado o comando CREATE TABLE.
O nome (opcionalmente qualificado pelo esquema) da tabela a ser criada.
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. Além disso, o comando CREATE TABLE AS oferece um conjunto maior de funcionalidades do que as oferecidas pelo comando SELECT INTO.
Antes do PostgreSQL 8.0, a tabela criada pelo comando SELECT INTO incluía os OIDs por padrão. Desde o PostgreSQL 8.1 este é mais o caso — para incluir os OIDs na nova tabela a variável de configuração default_with_oids deve ser ativada. Como alternativa, o comando CREATE TABLE AS pode ser utilizado com a cláusula WITH OIDS.
Criar a tabela filmes_recentes consistindo apenas das entradas recentes na tabela filmes:
SELECT * INTO filmes_recentes FROM filmes WHERE data_prod >= '2002-01-01';
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 (consulte o Capítulo 31) e no PL/pgSQL (consulte o Capítulo 37). A utilização pelo PostgreSQL do comando SELECT INTO para representar a criação de uma tabela é histórica. Nos programas novos é melhor utilizar o comando CREATE TABLE AS para esta finalidade.
[1] |
Oracle — O comando SELECT INTO retorna dados de uma ou mais tabelas do banco de dados e atribui os valores selecionados a variáveis ou coleções. PL/SQL User's Guide and Reference 10g Release 1 (10.1) Part Number B10807-01 (N. do T.) |
[2] |
DB2 — O comando SELECT INTO produz uma tabela de resultado consistindo de no máximo uma linha, e atribui os valores desta linha às variáveis hospedeira. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.) |