CREATE TABLE AS
Nome
CREATE TABLE AS -- cria uma tabela a partir dos resultados de uma consulta
Sinopse
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela [ (nome_da_coluna [, ...] ) ]
AS consulta
Descrição
O comando CREATE TABLE AS cria uma tabela e a carrega com dados computados pelo comando SELECT, ou por um comando EXECUTE que executa um comando SELECT preparado. As colunas da tabela possuem os nomes e tipos de dado associados às colunas da saída do comando SELECT (exceto que é possível mudar os nomes das colunas fornecendo uma lista explícita de novos nomes de colunas).
O comando CREATE TABLE AS possui 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 da nova tabela. A nova tabela não terá conhecimento das mudanças posteriores ocorridas nas tabelas de origem da consulta. Contrastando com este comportamento, a visão executa novamente o comando SELECT que a define sempre que uma consulta é realizada.
Parâmetros
- TEMPORARY ou TEMP
-
Se for especificado, a tabela é criada como uma tabela temporária. Consulte o comando
CREATE TABLE
para obter mais detalhes.
- nome_da_tabela
-
O nome (opcionalmente qualificado pelo esquema) da tabela a ser criada.
- nome_da_coluna
-
O nome da coluna na nova tabela. Se os nomes das colunas não forem fornecidos, são obtidos a partir dos nomes das colunas produzidas pela consulta. Se a tabela for criada a partir de um comando EXECUTE, a lista de nomes de colunas não pode ser especificada.
- consulta
-
Um comando de consulta (ou seja, um comando SELECT ou um comando EXECUTE que executa um comando SELECT preparado). Consulte
SELECT
ou
EXECUTE
, respectivamente, para obter a descrição da sintaxe permitida.
Observações
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 tem por base uma funcionalidade do Oracle. Não existe nenhum comando com funcionalidade equivalente no padrão SQL. 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.