Published on

January 28, 2021

Criando Tabelas no SQL Server Usando SELECT INTO

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

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.