SQLShack (Português)
Neste artigo, nós irá explorar o processo de coluna SQL Delete de uma tabela existente. Também entenderemos o impacto da remoção de uma coluna com restrições e objetos definidos.
Introdução
Em um banco de dados relacional, usamos a técnica de design de esquema Normalizações e dividimos as tabelas grandes em tabelas menores. Ajuda a reduzir a redundância e a dependência dos dados. Temos vários formulários de normalização especificados na imagem a seguir.
Não cobrimos as técnicas de normalização neste artigo. Você pode consultar o artigo – O que é normalização de banco de dados no SQL Server?
Suponha que você tenha uma tabela existente com várias colunas. Existem colunas específicas nesta tabela que não são relevantes agora. Você não precisa dessas colunas. Por exemplo, considere uma tabela de produtos e, nesta tabela, você tem uma coluna. Implementamos um mecanismo separado para capturar o feedback do produto, e esta coluna não é relevante agora.
Vamos entender por que é essencial remover colunas indesejadas da tabela SQL. Abaixo está a estrutura da minha tabela e precisamos remover a coluna com tipo de dados varchar (2000).
Esta tabela contém 4 milhões linhas, e o usuário executou o comando para selecionar todos os registros desta tabela.
1
|
SELECIONE * DE Produtos;
|
Capture o plano de execução real (pressione CTRL + M) desta consulta junto com as estatísticas do cliente (pressione Shift + Alt + S).
Em outra janela de consulta, execute a consulta sem a coluna e capture as estatísticas semelhantes.
1
2
3
4
|
SELECT
,
,
FROM ..
|
Vamos comparar o plano de execução real de ambas as consultas no SSMS. Você pode notar que a consulta sem a coluna fornece desempenho aprimorado. Você vê valores baixos de memória compilada, tempo de CPU, contagens de espera reduzidas.
O otimizador de consulta e o mecanismo de banco de dados SQL exigem um esforço adicional para esta coluna, embora não seja útil recuperar dados dela.
Da mesma forma, compare as estatísticas do cliente de ambas as consultas. Você pode notar uma redução significativa nos pacotes TDS recebidos do servidor. Bytes enviados ao cliente, Bytes recebidos do servidor, tempo de processamento do cliente e tempo total de processamento da consulta que não contém a coluna. Também pode ajudá-lo a economizar largura de banda da rede.
Aqui, pretendo que você execute a limpeza do banco de dados e remova as colunas indesejadas para melhorar o desempenho da consulta também.
Vamos explorar como remover uma coluna de uma tabela SQL existente.
Coluna SQL DELETE usando o explorador de objetos SSMS
Podemos remover uma coluna usando o usuário gráfico Método de interface (GUI) no SQL Server. Conecte-se a uma instância no SSMS, expanda os bancos de dados. No banco de dados específico, localize a tabela específica e expanda as colunas.
Ele mostra todas as colunas da tabela específica. Clique com o botão direito na coluna que deseja remover e clique em Excluir, conforme mostrado na imagem a seguir.
Ele abre um janela e lista o nome da coluna a ser removida. Clique em Ok para remover a coluna da tabela.
Colunas SQL DELETE usando o designer de tabela SSMS
Usamos o designer de tabela no SSMS para definir colunas obrigatórias, tipos de dados e propriedades de coluna, como chave primária, colunas de identidade. Também podemos usá-lo para excluir uma coluna de uma tabela existente.
Clique com o botão direito na tabela e vá para Design.
Mostra todas as colunas de uma tabela particular.
Clique com o botão direito no lado esquerdo de uma coluna e você terá a opção Excluir coluna. Clique nele para excluir uma coluna.
Você pode salvá-lo pressionando CTRL + S ou fechar o designer da tabela e clique em Sim na janela seguinte.
SQL DELETE colunas usando o designer de tabela T-SQL
Podemos usar o comando Alter table para remover uma coluna também. A sintaxe é simples de usar. O comando a seguir remove a coluna da tabela.
1
2
3
4
|
USE
IR
ALTER TABLE. DROP COLUMN
GO
|
- Primeiro, especifique o nome da tabela que contém a coluna a ser removida
- Segundo, especifique o nome da coluna que desejamos excluir
Também podemos remover vários colunas em um único comando Alterar tabela, mas todas as colunas devem pertencer a uma única tabela. Este comando remove e colunas em um único comando.
1
2
3
4
|
USE
GO
ALTER TABELA . DROP COLUMN,
GO
|
A coluna SQL DELETE contém restrições CHECK
Usamos restrições CHECK para limitar o intervalo de valores em uma coluna. Suponha que você tenha uma coluna com restrições CHECK.
Queremos remover a coluna, mas esta coluna tem uma restrição CHECK. Vamos tentar removê-lo.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Você recebe uma mensagem de erro informando que os objetos CK_Price_Check são dependentes da coluna.
Não podemos remover esta coluna até que tenha um dependente objeto nele. Para remover esta coluna, primeiro remova a dependência e depois exclua a coluna.
Vamos tentar remover a coluna com a restrição CHECK usando o designer de tabela. Designer de mesa aberta para a mesa.
Clique com o botão direito na coluna e verifique se existem restrições CHECK nesta tabela.
Isso mostra as restrições CHECK conforme a imagem a seguir.
Agora, clique com o botão direito do mouse na coluna e exclua a coluna. Ele não fornece nenhuma mensagem de erro.
Feche a janela do designer e ela pede que você clique em Sim para salvar as alterações.
Fornece uma mensagem de aviso de validação e uma mensagem sobre a restrição de verificação.
Clique em Sim e não conseguirá modificar a tabela. Ele não pode remover a coluna porque a restrição CHECK depende dela.
Não podemos remover a coluna usando o designer de tabela se a coluna tem dependências de outros objetos.
Coluna SQL DELETE com uma visão SQL definida
Vamos criar uma visão SQL para selecionar todos os registros da tabela.
1
2
3
|
Create View vw_ProductSales
as
SELECT * from ProductSales
|
Esta visão depende de todas as colunas da tabela. Elimine a coluna usando o comando Alterar tabela.
1
2
|
ALTER TABLE. DROP COLUMN ProductPrice
GO
|
Não recebemos nenhuma mensagem de erro na execução da consulta. Vamos tentar acessar os registros da visualização.
1
2
|
SELECT *
FROM vw_ProductSales;
|
Recebemos uma mensagem de erro porque a tabela não contém a coluna. Esta coluna estava disponível assim que criamos a visualização SQL.
-
Nota: devemos verificar as dependências do objeto antes de eliminar uma coluna. Isso eliminará os problemas que enfrentaremos mais tarde.
Conclusão
Neste artigo, aprendemos sobre SQL Delete uma coluna de uma tabela existente usando métodos diferentes. Devemos estar cientes de todos esses métodos. Você deve ter cuidado no ambiente de produção antes de remover colunas. Você deve remover todas as dependências e planejá-lo adequadamente.
- Autor
- Postagens recentes
Ele é o criador de uma das maiores coleções online gratuitas de artigos sobre um único tópico, com sua série de 50 partes sobre Grupos de Disponibilidade AlwaysOn do SQL Server. Com base em sua contribuição para a comunidade do SQL Server, ele foi reconhecido com vários prêmios, incluindo o prestigioso “Melhor autor do ano” continuamente em 2020 e 2021 na SQLShack.
Raj está sempre interessado em novos desafios, então se você precisar de consultoria ajuda em qualquer assunto abordado em seus escritos, ele pode ser contatado em [email protected]
Veja todas as postagens de Rajendra Gupta
- Executando atualizações de versões principais e secundárias para AWS RDS SQL Server – 29 de janeiro de 2021
- Implantando instâncias AWS RDS PostgreSQL – 27 de janeiro de 2021
- Migração de bancos de dados SQL locais para AWS RDS SQL Server usando AWS DMS – 25 de janeiro , 2021