O comando CREATE TABLE AS SELECT (abbreviado como CTAS) é uma ferramenta poderosa no universo de bancos de dados relacionais, especialmente no SQL, permitindo criar uma nova tabela a partir da seleção de dados existentes. Essa técnica é amplamente utilizada por desenvolvedores e administradores de banco de dados para facilitar operações de backup, transformação de dados e cópia de tabelas de forma eficiente.
Ao dominar o uso do CREATE TABLE AS SELECT, você consegue otimizar processos e evitar redundâncias no seu trabalho com dados. Este artigo apresenta um guia completo, com exemplos práticos, dicas e questões frequentes para que você possa aplicar essa funcionalidade na sua rotina.

O que é o comando CREATE TABLE AS SELECT?
Definição
O comando CREATE TABLE AS SELECT permite criar uma nova tabela a partir do resultado de uma consulta SELECT. Em outras palavras, você pode copiar a estrutura e os dados de uma tabela existente ou criar uma nova tabela a partir de uma consulta específica.
Como funciona
Quando você executa um comando CTAS, uma nova tabela é criada com base na seleção e filtragem de dados de uma ou mais tabelas existentes. Dependendo da sintaxe utilizada, também é possível definir aspectos como restrições, índices ou tipos de dados específicos para a nova tabela.
Por que usar CREATE TABLE AS SELECT?
Vantagens principais
- Facilidade e agilidade: crie tabelas novas rapidamente com base em consultas complexas.
- Backup e réplica: copie dados de uma tabela para segurança ou testes.
- Transformações de dados: gere versões alteradas de tabelas para análise ou processamento.
- Evita redundância: criar tabelas temporárias ou persistentes durante processos de ETL.
Sintaxe básica do CREATE TABLE AS SELECT
Forma padrão
CREATE TABLE nome_da_tabela ASSELECT colunasFROM tabela_original[WHERE condições][OPCIONAL: definir restrições adicionais];Exemplo prático:
CREATE TABLE clientes_ativos ASSELECT id, nome, emailFROM clientesWHERE ativo = 1;Exemplos práticos de uso
1. Criando uma cópia de uma tabela
Para fazer uma cópia exata de uma tabela, incluindo dados:
CREATE TABLE copia_clientes ASSELECT * FROM clientes;2. Filtrando dados na criação de nova tabela
Por exemplo, criar uma tabela apenas com clientes de uma certa região:
CREATE TABLE clientes_sul ASSELECT id, nome, estadoFROM clientesWHERE regiao = 'Sul';3. Transformando dados durante a criação
Realizar cálculos ou modificações na consulta:
CREATE TABLE vendas_com_taxa ASSELECT id_venda, valor, valor * 1.05 AS valor_com_taxaFROM vendas;Considerações ao usar CREATE TABLE AS SELECT
Diferença entre CTAS e CREATE TABLE + INSERT
O comando CREATE TABLE AS SELECT realiza uma combinação das etapas de criação e inserção de uma só vez, tornando o processo mais eficiente. Já o método tradicional exige a criação da tabela manualmente e, posteriormente, a inserção dos dados.
Compatibilidade entre bancos de dados
Embora a sintaxe básica seja semelhante, pode haver variações na implementação de CTAS entre bancos de dados como MySQL, PostgreSQL, SQL Server e Oracle. É importante consultar a documentação específica do seu sistema.
Cuidados com estruturas e restrições
Por padrão, a tabela criada via CTAS não herda restrições como chaves primárias, índices ou triggers. Essas configurações devem ser adicionadas posteriormente, se necessário.
Tabela comparativa: CREATE TABLE AS SELECT em diferentes SGBDs
| SGBD | Sintaxe básica | Observações |
|---|---|---|
| MySQL | CREATE TABLE nova_tabela AS SELECT ... ; | Não suporta diretamente, sendo necessário usar SET ou CREATE TABLE + INSERT. |
| PostgreSQL | CREATE TABLE nova_tabela AS SELECT ... ; | Suporta CTAS de forma nativa e eficiente. |
| SQL Server | SELECT ... INTO nova_tabela FROM ... ; | Usa SELECT INTO para criar a tabela e popular ao mesmo tempo. |
| Oracle | CREATE TABLE nova_tabela AS SELECT ... ; | Compatível e amplamente utilizado. |
Perguntas Frequentes (FAQs)
1. Posso criar uma tabela com dados de várias tabelas usando CTAS?
Sim. Basta usar uma consulta SQL com JOINs ou subconsultas na cláusula SELECT ao criar a nova tabela.
2. Quais limitações do comando CREATE TABLE AS SELECT?
Entre as limitações estão: não copiar restrições, chaves primárias ou índices existentes automaticamente; além de depender do suporte do sistema gerenciador de banco de dados.
3. Como criar uma tabela temporária usando CTAS?
Alguns bancos permitem criar tabelas temporárias com CTAS usando palavras-chave específicas (como TEMP ou TEMPORARY); consulte a documentação do seu sistema para detalhes.
Conclusão
O comando CREATE TABLE AS SELECT é uma ferramenta essencial para quem trabalha com bancos de dados relacionais. Sua utilização permite criar cópias, transformar dados e otimizar processos de gerenciamento de informações de maneira rápida e eficiente.
Entender as diferenças entre os principais sistemas gerenciadores de bancos de dados e suas particularidades é vital para tirar o máximo proveito dessa funcionalidade. Como disse o renomado especialista em banco de dados Ed Levenson, "A capacidade de criar e manipular tabelas de forma rápida é fundamental para qualquer profissional de dados".
Para aprofundar seus conhecimentos em SQL, consulte recursos como o SQLCourse e a documentação oficial do PostgreSQL.
Referências
- Gupta, C. (2020). SQL para Data Science. Editora Ciência Moderna.
- PostgreSQL Documentation. (2023). https://www.postgresql.org/docs/
- MySQL Documentation. (2023). https://dev.mysql.com/doc/