Capítulo 17: Consultas de Ação SQL: UPDATE e DELETE em Massa
🎯 Objetivo da Aula
Nesta aula de abertura do Módulo 5, você deixará de ser apenas um consultor de dados e aprenderá a atuar como um verdadeiro administrador de dados através das Consultas de Ação (Action Queries) da linguagem SQL. No laboratório de informática, você aprenderá a diferença fundamental entre consultas de seleção (que apenas exibem registros na tela) e consultas de ação, que modificam ou excluem dados fisicamente no disco em fração de segundo. Você dominará os comandos UPDATE (para reajustes tarifários em lote) e DELETE (para expurgo controlado de dados obsoletos), adotando o protocolo de segurança preventivo indispensável de todo DBA corporativo.
Ao final desta aula, você saberá reajustar tabelas de frete da FastLog S.A. com um único clique de comando, sem precisar alterar linha por linha manualmente no sistema.
🏢 Cenário Prático (FastLog S.A.)
Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: A Petrobras anunciou um aumento emergencial de 6,5% no preço do óleo diesel. A diretoria comercial determinou que todas as 850 ordens de frete agendadas para o próximo mês na rota do interior paulista deveriam sofrer um repasse imediato de 6,5% no valor faturado. Um assistente começou a abrir frete por frete no formulário, multiplicar o valor na calculadora do celular e redigitar a nova quantia. Após 4 horas de digitação exaustiva, ele cometeu um erro de vírgula em uma carga de químicos, reajustando um frete de R$ 12.000,00 para R$ 1.200,00, gerando um prejuízo operacional de R$ 10.800,00 em uma única viagem.
Sua Missão: Como especialista em SQL corporativo, você escreverá um comando UPDATE que calcula e atualiza o reajuste de combustível de todas as 850 cargas simultaneamente em 0,05 segundo, com precisão de arredondamento bancário e sem risco de erro humano de digitação.
🧠 Fundamentos: A Teoria Traduzida
1. Consultas de Seleção vs. Consultas de Ação
- Consulta de Seleção (
SELECT): É passiva (somente leitura). Ela não altera nenhum caractere no disco; apenas extrai e projeta dados na tela. - Consulta de Ação (
UPDATE,DELETE,INSERT INTO): É ativa e executável. Ela altera os bytes gravados no arquivo.accdb. Uma vez confirmada a execução, não existe botão “Desfazer” (Ctrl + Z) no SGBD!
flowchart LR
subgraph PROTOCOLO["🛡️ A Regra Sagrada de Segurança do DBA"]
P1["1. Teste Preventivo:<br/>SELECT ID_OrdemFrete, Valor_Frete<br/>FROM tbl_OrdensFrete<br/>WHERE Status_Ordem = 'Agendado';"]
P1 -->|"Conferiu quantas linhas serão afetadas?"| P2["2. Execução Oficial:<br/>UPDATE tbl_OrdensFrete<br/>SET Valor_Frete = Valor_Frete * 1.065<br/>WHERE Status_Ordem = 'Agendado';"]
end
style PROTOCOLO fill:#f8f9fa,stroke:#0056b3,stroke-width:2px
style P1 fill:#d1ecf1,stroke:#0c5460,stroke-width:1px,color:#0c5460
style P2 fill:#d4edda,stroke:#155724,stroke-width:2px,color:#1557242. O Comando de Atualização em Massa: UPDATE
A sintaxe canônica do UPDATE é composta por três elementos essenciais:
- Atenção Máxima: Se você esquecer a cláusula
WHERE, o SGBD atualizará TODAS AS LINHAS DA TABELA INTEIRA sem distinção!
3. O Comando de Exclusão em Massa: DELETE
Permite expurgar registros obsoletos ou cancelados:
- Protocolo de Blindagem: Nunca rode um
DELETEdireto. Sempre rode primeiro umSELECT * FROM Tabela WHERE ...com o mesmo critério. Se a lista exibida na tela for exatamente o que deve ser apagado, aí sim você converte o comando paraDELETE!
📖 Exemplo Guiado: Passo a Passo no Laboratório
Abra o arquivo FastLog_Database.accdb. Vamos construir a consulta de reajuste tarifário.
Passo 1: Abrindo a Consulta em Modo SQL
- Acesse Criar ➔ Design da Consulta.
- Feche a janelinha Adicionar Tabelas.
- No canto superior esquerdo, clique no botão Modo SQL.
- Limpe o editor em branco.
🛠️ Prática Obrigatória 1: Reajuste de Tarifas em Lote com UPDATE
Você aplicará um reajuste de combustível de 6,5% sobre os fretes com status 'Agendado'.
Passo a Passo no Computador:
- Passo de Verificação Prévia (Protocolo de Segurança):
- Digite primeiro a consulta de inspeção no editor SQL:
- Clique em
! Executare anote na memória os valores atuais (ex: um frete de R$ 10.000,00).
- Passo de Execução do Reajuste:
- Volte ao Modo SQL e altere o código para o comando de ação oficial:
- Clique no botão
! Executar(exclamação vermelha).
- A Mensagem de Confirmação do Access:
- O Access exibirá um alerta oficial do sistema: “Você está prestes a atualizar X linha(s). Depois de clicar em Sim, você não poderá usar o comando Desfazer para reverter as alterações.”
- Clique no botão Sim.
- Conferência da Atualização:
- Abra a tabela
tbl_OrdensFreteno Modo Folha de Dados: - Observe que o frete que antes era de R$ 10.000,00 agora está perfeitamente registrado como R$ 10.650,00!
- Abra a tabela
- Salve a consulta como:
qry_AcaoReajusteCombustivel.
✅ Resultado Esperado (Prática 1):
O comando UPDATE calcula e grava o aumento de 6,5% em todas as cargas agendadas de forma instantânea, com arredondamento em 2 casas decimais.
🛠️ Prática Obrigatória 2: Expurgo Seguro de Cotações Canceladas com DELETE
Agora você criará a rotina de limpeza do banco de dados, excluindo registros marcados com status 'Cancelado'.
Passo a Passo no Computador:
- Acesse Criar ➔ Design da Consulta ➔ Modo SQL.
- Teste Prévio de Visualização:
- Digite primeiro o comando de conferência:
- Execute e verifique se apenas as viagens canceladas aparecem listadas.
- Convertendo para o Comando de Exclusão:
- Volte ao Modo SQL e digite o comando de expurgo definitivo:
- Clique no botão
! Executar.
- Confirmação do SGBD:
- O Access emitirá a caixa de diálogo de segurança: “Você está prestes a excluir X linha(s) da tabela especificada.”
- Clique em Sim.
- Abra a tabela
tbl_OrdensFrete: nenhum frete cancelado existe mais na fila operacional! - Salve a consulta como:
qry_AcaoExpurgoCancelados.
✅ Resultado Esperado (Prática 2):
A rotina remove com total segurança os registros cancelados, limpando a base operacional sem tocar nos fretes em andamento ou entregues.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o banco de dados e feche o Access.
- Nomeie o arquivo:
FastLog_BD_Cap17_SeuNome_SeuSobrenome.accdb. - Acesse o Microsoft Teams na sua turma.
- Abra a tarefa: “Banco de Dados - Cap 17: Consultas de Ação UPDATE e DELETE”.
- Anexe o seu arquivo
.accdbe conclua o envio clicando em Entregar (Turn In).
💡 Checkpoint de Gestão & TI
Por que operadores comuns nunca devem ter permissão para rodar comandos UPDATE e DELETE livremente? Porque uma vírgula ou um filtro esquecido pode alterar ou apagar o patrimônio financeiro inteiro de uma corporação em 1 segundo. Consultas de ação são as ferramentas mais poderosas de um DBA e devem ser protegidas por senhas, permissões restritas e procedimentos padronizados de homologação.
🔥 Desafio de Fixação: Reajuste Regional por Filial de Origem
A transportadora obteve um desconto comercial nos pedágios da Região Sul e decidiu repassar uma bonificação de 3% de redução no valor dos fretes cuja origem seja a filial de Curitiba (ID_Filial_Origem = 3).
Escreva uma consulta de ação SQL no Access que atenda aos seguintes requisitos:
- Utilize o comando
UPDATEna tabelatbl_OrdensFrete. - Aplique uma redução de 3% (
Valor_Frete = Round(Valor_Frete * 0.97, 2)). - Restrinja o reajuste apenas para ordens com
ID_Filial_Origem = 3E cujo status seja'Agendado'. - Salve a consulta com o nome:
qry_AcaoBonificacaoCuritiba.
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas reflexivas abaixo com base no conteúdo deste capítulo. Ao concluir, apresente o caderno ao professor para conferência e visto.
- Qual é a diferença fundamental entre uma Consulta de Seleção (
SELECT) e uma Consulta de Ação no Access? - No Cenário Prático da FastLog, qual foi o prejuízo financeiro causado pelo erro de digitação manual na calculadora do assistente?
- O que acontece se um desenvolvedor executar o comando
UPDATEsem declarar a cláusulaWHERE? - Qual é a finalidade da função matemática
Round(valor, 2)nos cálculos de reajuste tarifário em SQL? - O que acontece se executarmos o comando
DELETE FROM tbl_OrdensFrete;sem nenhuma condição de filtro? - Por que o comando “Desfazer” (
Ctrl + Z) não funciona após confirmarmos a execução de uma consulta de ação no banco de dados? - Explique a Regra Sagrada de Segurança do DBA recomendada antes de executar qualquer comando
UPDATEouDELETE. - Como o Microsoft Access avisa visualmente o operador de que uma consulta de ação está prestes a modificar dados físicos?
- Na Prática Obrigatória 2, por que foi importante filtrar apenas registros com status
'Cancelado'na rotina de expurgo? - No Desafio de Fixação, como a fórmula
Valor_Frete * 0.97consegue aplicar matematicamente um desconto de 3% sobre o frete?