CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela [ (nome_da_coluna [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ] AS comando
O comando CREATE TABLE AS cria uma tabela e a preenche 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 de saída do comando SELECT (mas é possível mudar os nomes das colunas fornecendo uma lista explícita contendo os novos nomes das colunas). [1]
O comando CREATE TABLE AS possui alguma semelhança com o comando de 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 preencher inicialmente a nova tabela. A nova tabela não acompanha as mudanças posteriores ocorridas nas tabelas de origem do comando. Diferentemente, a visão executa novamente o comando SELECT que a define sempre que é consultada.
Ignorado por compatibilidade. Para obter detalhes deve ser consultado o comando CREATE TABLE.
Se for especificado a tabela será criada como sendo 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.
O nome da coluna na nova tabela. Se os nomes das colunas não forem fornecidos, estes serão obtidos a partir dos nomes das colunas de saída do comando. Se a tabela for criada a partir de um comando EXECUTE, não poderá ser especificada a lista contendo os nomes das colunas.
Esta cláusula opcional especifica se a tabela criada pelo comando CREATE TABLE AS deve incluir os OIDs. Se não for especificada nenhuma das formas desta cláusula, é utilizado o valor do parâmetro de configuração default_with_oids.
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.
Este comando é funcionalmente equivalente ao comando SELECT INTO, mas é preferido por ser menos propenso a ser confundido com outros usos da sintaxe do SELECT INTO. Além disso, o comando CREATE TABLE AS oferece um superconjunto das funcionalidades oferecidas pelo comando SELECT INTO.
Antes do PostgreSQL 8.0, o comando CREATE TABLE AS sempre incluía os OIDs nas tabelas criadas. A partir do PostgresSQL 8.0, o comando CREATE TABLE AS permite ao usuário especificar explicitamente se os OIDs devem ser incluídos. Se a presença dos OIDs não for especificada explicitamente, é utilizada a variável de configuração default_with_oids. Embora o valor padrão corrente seja TRUE, este valor padrão pode ser mudado no futuro. Portanto, os aplicativos que requerem que os OIDs sejam criados na tabela pelo comando CREATE TABLE AS devem especificar WITH OIDS para garantir a compatibilidade com as versões futuras do PostgreSQL.
Criar a tabela filmes_recentes consistindo apenas das entradas recentes da tabela filmes:
CREATE TABLE filmes_recentes AS SELECT * FROM filmes WHERE data_prod >= '2002-01-01';
O comando CREATE TABLE AS está especificado no padrão SQL:2003. Existem algumas pequenas diferenças entre a definição do comando no SQL:2003 e sua implementação no PostgreSQL:
O padrão requer parênteses em torno da cláusula de subconsulta; no PostgreSQL estes parênteses são opcionais.
O padrão define a cláusula ON COMMIT, que não está atualmente implementada pelo PostgreSQL.
O padrão define a cláusula WITH DATA, que não está atualmente implementada pelo PostgreSQL.
[1] |
DB2 — No comando CREATE TABLE, a cláusula LIKE nome da tabela, nome da visão ou apelido especifica que as colunas da tabela possuem exatamente o mesmo nome e descrição das colunas da tabela, visão ou apelido identificado. O nome especificado após o LIKE deve identificar uma tabela, visão ou apelido existente no catálogo, ou uma tabela temporária declarada. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.) |