No SQL Server, existem várias maneiras de criar tabelas. Um método popular é usar a instrução CREATE TABLE T-SQL no SQL Server Management Studio (SSMS) Object Explorer. Outra opção é usar a instrução SQL SELECT INTO. Neste artigo, exploraremos diferentes técnicas para criar tabelas usando a instrução SELECT INTO.
Criando uma Tabela a partir de Outra Tabela
A instrução SELECT INTO nos permite criar uma nova tabela com base em uma tabela existente. Aqui está um exemplo:
USE TestDB
GO
SELECT * INTO TableA FROM TestTable
GO
SELECT * FROM TableA
No código acima, uma nova tabela chamada TableA é criada e todas as linhas da tabela de origem (TestTable) são inseridas nela. A instrução SELECT recupera todas as colunas e linhas da nova tabela.
Embora TableA e TestTable possam parecer idênticas à primeira vista, existem algumas diferenças em suas estruturas. Por exemplo, índices, chaves primárias e restrições de verificação de TestTable não são transferidos para TableA. No entanto, os tipos de coluna, restrições NOT NULL e especificações de identidade são preservados na nova tabela.
Copiando Dados Filtrados
Às vezes, pode ser necessário copiar apenas dados específicos da tabela de origem para a tabela de destino. Nesses casos, podemos usar uma condição WHERE para filtrar os dados. Aqui está um exemplo:
USE TestDB
GO
SELECT Val INTO TableB FROM TestTable WHERE ID > 3
GO
SELECT * FROM TableB
No código acima, uma nova tabela chamada TableB é criada com base em TestTable, mas apenas os dados que atendem à condição especificada (ID > 3) são copiados. A instrução SELECT recupera todas as colunas e linhas de TableB.
Criando uma Tabela Vazia
Se precisarmos apenas de uma cópia vazia de uma tabela específica, podemos usar uma condição na cláusula WHERE que seja sempre falsa. Aqui está um exemplo:
USE TestDB
GO
SELECT * INTO TableC FROM TestTable WHERE 0 > 1
GO
SELECT * FROM TableC
No código acima, uma tabela vazia chamada TableC é criada a partir de TestTable. Como a condição (0 > 1) é sempre falsa, nenhum dado é copiado. Os nomes das colunas, especificação de identidade e nulidade das colunas são herdados da tabela base.
Alternativamente, podemos obter o mesmo resultado usando a instrução SELECT TOP 0 * INTO:
USE TestDB
GO
SELECT TOP 0 * INTO TableD FROM TestTable
GO
SELECT * FROM TableD
Nesse caso, selecionar as primeiras 0 linhas da tabela base na instrução SELECT INTO resulta na criação de uma tabela vazia com a mesma estrutura.
Copiando Colunas Selecionadas
Também podemos criar uma nova tabela copiando apenas colunas selecionadas da tabela de origem. Aqui está um exemplo:
USE TestDB
GO
SELECT Val INTO TableX FROM TestTable
GO
SELECT * FROM TableX
No código acima, uma nova tabela chamada TableX é criada apenas com a coluna Val selecionada da tabela base.
Também podemos especificar novas colunas e valores na instrução SELECT INTO. Aqui está um exemplo:
USE TestDB
GO
SELECT IDENTITY (INT, 1, 1) AS ID, 1 AS IsUsed, Val INTO TableY FROM TestTable
GO
SELECT * FROM TableY
Nesse caso, a nova tabela (TableY) contém os dados da tabela base na coluna Val, valores de identidade recém-gerados e um valor constante de 1 na coluna IsUsed.
Criando uma Tabela sem uma Tabela Base
Também é possível criar uma tabela sem usar uma tabela base. Aqui está um exemplo:
USE TestDB
GO
SELECT 1 AS Val INTO TableZ
GO
SELECT * FROM TableZ
No código acima, uma tabela de uma coluna e uma linha é criada selecionando um número (1) como valor.
Conclusão
Neste artigo, exploramos várias técnicas para criar tabelas no SQL Server usando a instrução SELECT INTO. Aprendemos como criar uma tabela a partir de outra tabela, copiar dados filtrados, criar uma tabela vazia, copiar colunas selecionadas e até mesmo criar uma tabela sem uma tabela base. Essas técnicas oferecem flexibilidade e conveniência ao trabalhar com tabelas no SQL Server.
No próximo artigo, iremos aprofundar mais detalhes avançados da criação de tabelas usando a instrução SELECT INTO.
Artigo Atualizado pela Última Vez: 2021-09-22