Introdução
Uma tabela é uma estrutura lógica bidimensional e o meio fundamental de armazenamento de dados em sistemas de gerenciamento de banco de dados relacional. Seu formato de “linha e coluna” é muito parecido com a organização da planilha.
Cada novo registro introduzido em uma tabela é uma linha (também chamada de registro ou tupla), enquanto as linhas são agrupadas em um conjunto finito de colunas (também chamadas de campos ou atributos). Cada coluna tem um nome e um tipo de dados e serve como referência para exibir conjuntos de resultados ao consultar dados de sistemas de banco de dados relacionais.
Neste artigo, exploramos as opções atuais que nos permitem adicionar novas colunas a uma tabela existente no banco de dados SQL Server. O caso de uso pode surgir em muitas ocasiões. Particularmente, acontece quando há atualizações para um aplicativo e elas exigem a adição de novas colunas.
Criar uma tabela
Para começar nosso pequeno conjunto de experimentos, vamos criar uma pequena tabela com quatro colunas contendo informações básicas sobre alguma empresa:
-- Listing 1: Create New Table ntab
use AU
go
create table ntab (
ID INT identity (1,1)
, CompanyName varchar(100)
, CompanyAddress varchar(200)
, DateofIncorporation datetime
);
Adicionar uma única coluna
Para adicionar uma única coluna ao ntab table, executamos o código fornecido na Listagem 2. O resultado é uma tabela de cinco colunas, conforme mostrado na Figura 1. Geramos esses metadados sobre nossa tabela com o sp_columns procedimento armazenado.
-- Listing 2: Add ManagingDirector Column to Empty Table
alter table ntab add ManagingDirector varchar(50);
exec sp_columns ntab;
Usando o código da Listagem 3, preenchemos uma nova tabela com 1.000 linhas.
-- Listing 3: Add Column to Empty Table
insert into ntab values ('Simplex Technologies','Plot 121 Nova Ridge II, Appolonia City','20201023','Kenneth Igiri');
GO 1000
Em seguida, adicionamos outra coluna TaxIdentityNumber – podemos fazê-lo com sucesso sem sobrecarga de desempenho aparente:
-- Listing 4: Add Column to Populated Table
alter table ntab add TaxIdentityNumber varchar(20);
exec sp_columns ntab;
Solte ou adicione várias colunas usando o comando ALTER TABLE
Em uma única instrução, também podemos descartar ou adicionar colunas. Importante:Quando descartamos colunas de uma tabela com dados, perdemos os dados muito rapidamente. Certamente não é um comando para brincar na produção.
O comando ALTER TABLE é um comando DDL (Data Definition Language) semelhante a TRUNCATE. A operação não é capturada no log de transações e é impossível revertê-la. Se você tiver motivos para fazer isso em produção, você deve ter um backup para poder voltar ao estado anterior.
-- Listing 5: Drop Column from Table
alter table ntab drop column ManagingDirector, TaxIdentityNumber;
alter table ntab add ManagingDirector varchar(50), TaxIdentityNumber varchar(20);
select * from ntab;
Importante:Ao tentar descartar uma coluna com índice, ela retorna um erro (veja a imagem). Primeiro, você deve fazer backup e descartar o Index.
Usando a GUI – Designer de tabela
Antes de prosseguirmos, observe que você precisa garantir o uso da versão mais recente do SQL Server Management Studio. Se houver uma incompatibilidade entre a versão do banco de dados e sua versão do SSMS, você receberá o seguinte erro:
Para alterar a estrutura da tabela, abra o Table Designer no SSMS:clique com o botão direito do mouse na tabela e clique em Design.
Você verá o ntab detalhes da mesa:
No Table Designer, adicionamos os nomes das colunas que queremos adicionar e especificamos os Tipos de Dados e a nulidade conforme desejado.
Uma vez feito, salvamos a tabela usando qualquer uma das opções disponíveis. Por exemplo, consulte a opção disponível no menu da barra do SSMS:
Há uma configuração do SQL Server Management Studio, que pode impedir o salvamento da tabela com colunas recém-adicionadas. Pode ser necessário desativar esta configuração:
Ferramentas> Opções> Designers> Designers de tabela e banco de dados
Em segundo plano, o SQL Server executa o mesmo SQL que mostramos anteriormente (Listagem 5). Extraímos isso usando o SQL Profiler. Você pode obter os mesmos dados com Extended Events:
Quando terminarmos, podemos ver os mesmos resultados de antes:
dbForge Studio para SQL Server
O dbForge Studio for SQL Server da empresa Devart oferece uma interface funcional robusta para interagir com o SQL Server. Como a solução é semelhante ao SSMS, é fácil de operar. Ele se conecta perfeitamente à instância do SQL Server e permite que o usuário interaja sem problemas com os objetos do SQL Server. Você pode baixar a edição expressa aqui .
Para modificar uma tabela no dbForge Studio, clique com o botão direito do mouse nessa tabela para visualizar as propriedades detalhadas.
Você adiciona uma nova coluna da mesma forma que faz no Designer de Tabelas do SQL Server. No entanto, observe o nível de detalhe mostrado para a tabela, incluindo a tabela DDL. É muito mais robusto do que o disponível no SSMS.
O dbForge Studio segue as mesmas regras de adição de colunas a tabelas que o SQL Server Management Studio. O DDL da tabela é atualizado assim que você adiciona uma coluna. No entanto, você deve clicar em SALVAR para manter as alterações:
Conclusão
Este artigo demonstrou os métodos que podemos usar para adicionar colunas a uma tabela existente no SQL Server, independentemente de essa tabela conter dados ou não.
Também ilustramos o impacto de descartar colunas quando a tabela tem dados. Salientamos que o comando ALTER TABLE é um comando DDL. Não há logs e também não há impacto significativo no desempenho. Use o Table Designer para inserir colunas entre colunas existentes em vez de no final da lista de colunas.
Também analisamos a funcionalidade do Devart dbForge Studio 2019. Possui uma interface muito mais robusta e conveniente para esta tarefa e outras semelhantes. Ele também pode oferecer muitos outros recursos para tornar o gerenciamento de banco de dados do SQL Server muito mais fácil.
Referências
- Impacto no desempenho dos comandos ALTER TABLE
- Alterar tabela em T-SQL
- Recurso de designer de tabela no dbForge Studio para SQL Server