As tabelas são um dos componentes principais de todo sistema de banco de dados relacional e o SQL Server não é diferente. As tabelas armazenam os dados que o mecanismo de banco de dados relacional usa para consultas, relatórios e outras operações. Neste artigo, vou mostrar como modificar dados de uma tabela do SQL Server usando T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE e TRUNCATE.
Em meu artigo anterior, Essencial SQL Server: Criando Bancos de Dados e Tabelas, mostrei como você pode criar bancos de dados e tabelas básicas do SQL Server. Neste artigo, vamos ver como você pode popular essas tabelas adicionando, atualizando e excluindo linhas.
I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:
CREATE TABLE dbo.myLogins ( id INT NOT NULL PRIMARY KEY, name VARCHAR (20), login_date DATETIME );
Neste artigo, vamos ver como adicionar dados a uma tabela usando a instrução INSERT, modificar dados em uma tabela usando a instrução UPDATE e excluir dados usando a instrução DELETE. Os dados em uma tabela podem ser excluídos de algumas maneiras diferentes, então também vamos abordar a diferença entre usar a instrução DELETE e a instrução TRUNCATE.
Adicionando linhas usando T-SQL INSERT
Você pode adicionar dados a uma tabela do SQL Server de várias maneiras:
- Você pode usar o Query Designer interativo do SQL Server Management Studio (SSMS) para adicionar linhas a uma tabela
- Você pode usar o PowerShell
- Você pode usar o Assistente de Importação e Exportação do SQL Server ou Integration Services para importar dados em uma tabela
- Você pode usar a ferramenta de linha de comando utilitário bcp.
Dito isso, a forma mais comum de adicionar dados a uma tabela do SQL Server é usando a instrução INSERT do SQL. A instrução INSERT T-SQL adiciona uma ou mais linhas a uma tabela do SQL Server.
O exemplo a seguir mostra como adicionar uma linha à tabela de exemplo que você viu anteriormente:
INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')
Aqui, a instrução INSERT INTO identifica a tabela que conterá as linhas inseridas. Em seguida, dentro dos parênteses, você pode ver uma lista das colunas que serão usadas. Esta lista utiliza todas as colunas na tabela, mas você não precisa fazer isso.
Finalmente, a cláusula VALUES fornece os valores reais que serão inseridos na tabela. Como atalho, você pode omitir a lista de colunas em uma instrução INSERT. Por exemplo, a seguinte instrução INSERT realiza exatamente a mesma função que o exemplo anterior:
INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')

A menos que a coluna seja definida usando as palavras-chave NOT NULL, você também pode especificar explicitamente NULL na lista de valores de uma instrução INSERT. Alternativamente, quando você não deseja especificar um valor para uma coluna, você pode deixar essa coluna fora de suas listas de colunas e valores, o que fará com que ela contenha um valor NULL.
Inserindo linhas de tabela a partir dos resultados de uma consulta
Além de usar uma instrução INSERT T-SQL padrão com uma cláusula VALUES, você também pode adicionar linhas a uma tabela como resultado de uma consulta SQL. A consulta pode ser simples ou complexa, e os resultados podem ser inseridos na tabela de destino.
Por exemplo, para copiar linhas da tabela myLogins2 para a tabela myLogins, você pode usar uma consulta como a que você pode ver abaixo:
INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.
Este exemplo usa os resultados da subconsulta da tabela myLogins2 para inserir linhas na tabela myLogins. A instrução INSERT insere dados nas três colunas da tabela. A subconsulta usa uma instrução SELECT para selecionar as mesmas três colunas de uma segunda tabela chamada myLogins2.
No entanto, neste exemplo, apenas as linhas com um valor de id maior que 50 serão retornadas e adicionadas à tabela myLogins. Neste exemplo simples, os nomes das colunas são os mesmos, mas isso não é uma exigência. Para que isso funcione, você precisa de uma ou mais linhas na tabela myLogins2 que tenham um valor de id maior que 50 e que não estejam presentes na tabela myLogins.
Atualizando linhas usando T-SQL UPDATE
Assim como adicionar linhas a uma tabela, existem várias maneiras de você poder modificar as linhas em uma tabela. O Designer de Consultas do SSMS permite que você atualize linhas de forma interativa, mas você também pode usar o PowerShell ou o Integration Services.
No entanto, a maneira mais comum de modificar linhas existentes em uma tabela de banco de dados é usar a instrução SQL UPDATE. A instrução T-SQL UPDATE modifica os valores em uma ou mais linhas em uma tabela do SQL Server.
Normalmente, você gostaria de usar a instrução UPDATE juntamente com uma cláusula WHERE para especificar quais linhas atualizar. Se você não usar a cláusula WHERE, então todas as linhas na tabela serão atualizadas. A listagem a seguir mostra um exemplo simples de como usar a instrução UPDATE do T-SQL para modificar os valores em uma linha da tabela myLogins.
UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1
Como mencionei, se você omitisse a cláusula WHERE, a coluna de nome de cada linha seria definida para o novo valor. Da mesma forma, se a cláusula WHERE incluir várias linhas, como poderia acontecer se você usasse os operadores < ou >, então várias linhas correspondentes seriam atualizadas.
Atualizando linhas da tabela com base nos resultados de uma consulta
Assim como com a instrução INSERT, você também pode atualizar linhas em uma tabela usando valores de outra tabela. Na listagem a seguir, você pode ver como usar uma atualização SQL de outra tabela.
UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id
Aqui, você pode ver que a instrução UPDATE estará agindo na tabela myLogins, e que a coluna de nome será atualizada usando os valores da tabela myLogins2 onde o valor nas colunas de id das duas tabelas correspondem.

Como você pode imaginar, existem muitas opções para usar a instrução UPDATE. Sua consulta pode atualizar várias linhas, pode ser mais complexa usando junções, e você pode usar a cláusula TOP, a cláusula ORDER BY, Expressões de Tabela Comuns (CTEs) e mais para construir suas consultas de atualização.
Excluindo linhas com o T-SQL DELETE e TRUNCATE
Como você deve esperar, é possível excluir linhas de uma tabela usando o SSMS Query Designer interativo, PowerShell ou Integration Services. No entanto, o método mais comum é usar a instrução SQL DELETE.
A instrução T-SQL DELETE remove uma ou mais linhas de uma tabela do SQL Server. É óbvio, mas você deve usar a instrução DELETE do SQL com cuidado, pois ela deleta permanentemente os dados de suas tabelas. Se você cometer um erro, talvez precise restaurar os dados de um snapshot, do log de transações ou de um backup.
O exemplo a seguir mostra como excluir uma linha da tabela myLogins:
DELETE FROM myLogins WHERE id = 1
Aqui, você pode ver que uma linha na tabela myLogins será excluída onde o valor da coluna id é igual a 1. Você também pode excluir várias linhas alterando a cláusula WHERE como na seguinte instrução, que exclui todas as linhas onde o valor de id é maior que 50.
DELETE FROM myLogins WHERE id > 50

Assim como no estado UPDATE, se você omitir a cláusula WHERE, todas as linhas na tabela serão excluídas. Por exemplo, o seguinte exemplo exclui todas as linhas na tabela myLogins:
DELETE FROM myLogins
Excluindo linhas dos resultados de uma consulta
Assim como as instruções INSERT e UPDATE, a instrução DELETE também é capaz de agir a partir dos resultados de uma consulta. O exemplo a seguir mostra como você pode excluir linhas com base em uma consulta:
DELETE FROM myLogins WHERE login_date < '12-31-2022'
Aqui, todas as linhas na tabela myLogins que têm uma data anterior a 31/12/22 na coluna login_date serão excluídas.
I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.
DELETE vs TRUNCATE
O comando DELETE do T-SQL é capaz de remover uma ou mais linhas de uma tabela. No entanto, não é a única maneira de excluir linhas de uma tabela. Você pode excluir todas as linhas em uma tabela do SQL Server usando a instrução T-SQL TRUNCATE TABLE.
A instrução DELETE é uma ação totalmente registrada. Por outro lado, a instrução TRUNCATE TABLE é uma ação minimamente registrada. Isso significa que o comando TRUNCATE terá um desempenho ligeiramente melhor e menos entradas serão adicionadas ao log de transações. Você pode ver um exemplo de uso do TRUNCATE na listagem a seguir.
TRUNCATE TABLE myLogins
Isso excluirá todos os dados na tabela myLogins.
Resumo
Neste tutorial, você viu como adicionar, modificar e excluir linhas em uma tabela do SQL Server usando as instruções T-SQL INSERT, UPDATE e DELETE. Em cada caso, expliquei como trabalhar com valores de uma única linha e como trabalhar com várias linhas como resultado de uma subconsulta. Além disso, você viu como as instruções DELETE e TRUNCATE são diferentes, mesmo que ambas possam essencialmente excluir linhas de uma tabela.
Artigo Relacionado:
Source:
https://petri.com/sql-insert-update-delete-truncate/