CREATE TABLE AS

Name

CREATE TABLE AS -- cria uma nova tabela a partir do resultado de uma consulta

Synopsis

CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela [ (nome_da_coluna [, ...] ) ]
    AS consulta
  

Descrição

O comando CREATE TABLE AS cria e carrega uma tabela com dados produzidos pelo comando SELECT. As colunas da tabela possuem os nomes e tipos de dado associados às colunas da saída produzida pelo comando SELECT (exceto que é possível substituir os nomes das colunas fornecendo-se uma lista explícita de novos nomes de colunas).

O comando CREATE TABLE AS exibe alguma semelhança com a criação de uma visão, mas na realidade é bastante diferente: este comando cria a nova tabela e executa a consulta apenas uma vez para fazer a carga inicial dos dados da nova tabela. A nova tabela não vai ter conhecimento das próximas mudanças ocorridas na tabela de origem da consulta. Contrastando com este comportamento, uma visão executa novamente o comando SELECT sempre que é consultada.

Parâmetros

[LOCAL] TEMPORARY ou [LOCAL] TEMP

Se for especificado, a tabela é criada como uma tabela temporária. Tabelas temporárias são automaticamente eliminadas no final da sessão. Uma tabela persistente com o mesmo nome, caso exista, não será vista na sessão enquanto a tabela temporária existir. Todo índice criado em tabela temporária também é temporário.

A palavra LOCAL é opcional.

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

nome_da_coluna

O nome da coluna da nova tabela. Vários nomes de colunas podem ser especificados utilizando uma lista de nomes separados por vírgula. Se os nomes das colunas não forem fornecidos, serão obtidos a partir dos nomes das colunas produzidas pela consulta.

consulta

Uma declaração de consulta (ou seja, um comando SELECT). Consulte o comando SELECT para obter a descrição da sintaxe permitida.

Diagnósticos

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

Notas

Este comando é funcionalmente equivalente ao SELECT INTO mas é preferível, porque é menos propenso a ser confundido com outros usos da sintaxe do comando SELECT ... INTO.

Compatibilidade

Este comando é baseado em uma funcionalidade do Oracle. Não existe nenhum comando com funcionalidade equivalente no SQL92 nem no SQL99. Entretanto, uma combinação de CREATE TABLE com INSERT ... SELECT pode ser utilizada para produzir o mesmo resultado com um pouco mais de esforço.

Histórico

O comando CREATE TABLE AS está disponível desde o PostgreSQL 6.3.

Consulte também

CREATE TABLE, CREATE VIEW , SELECT, SELECT INTO