✅ Explicação

A instrução DELETE serve para excluir uma ou mais linhas de uma tabela ou view. Se usada numa view, a exclusão afeta a tabela base — exceto se tiver um gatilho INSTEAD OF DELETE, que então assume o controle.

📌 Usos mais comuns

  • Excluir registros com base em uma condição (WHERE)

  • Excluir uma linha específica com uso de cursor (WHERE CURRENT OF)

  • Limpar toda a tabela (sem WHERE) — cuidado!

  • Trabalhar com views atualizáveis

🧾 Sintaxe

🔹 Forma pesquisada (Searched DELETE)
DELETE FROM nome_tabela
 WHERE condição;
🔹 Forma posicionada (Positioned DELETE — com cursor)
DELETE FROM nome_tabela
 WHERE CURRENT OF nome_cursor;

🧪 Exemplos práticos

Exemplo 1: Deletar funcionários com salário abaixo de 1500
DELETE FROM EMPREGADOS
 WHERE SALARIO < 1500;
Exemplo 2: Deletar uma linha específica (ID = 1050)
DELETE FROM EMPREGADOS
 WHERE ID = 1050;
Exemplo 3: Usando cursor em COBOL para deletar
EXEC SQL
    DECLARE CUR_EMP CURSOR FOR
    SELECT ID FROM EMPREGADOS
     WHERE SALARIO < 1000
FOR UPDATE
END-EXEC.

EXEC SQL
    OPEN CUR_EMP
END-EXEC.

PERFORM UNTIL SQLCODE ≠ 0
    EXEC SQL
        FETCH CUR_EMP INTO :WS-ID
    END-EXEC

    IF SQLCODE = 0
        EXEC SQL
            DELETE FROM EMPREGADOS
             WHERE CURRENT OF CUR_EMP
        END-EXEC
    END-IF
END-PERFORM.

EXEC SQL
    CLOSE CUR_EMP
END-EXEC.

⚠️ Regras importantes

  • NUNCA esqueça o WHERE se quiser deletar apenas linhas específicas. Sem ele, você apaga tudo.

  • É preciso ter privilégio DELETE na tabela.

  • Se a condição usar colunas, também precisa ter privilégio SELECT.

  • Subconsultas no WHERE também exigem SELECT sobre as tabelas referenciadas.

💡 Dicas

  • Use COMMIT após DELETE em programas para garantir que a exclusão foi finalizada.

  • Em ambientes de teste, sempre rode primeiro um SELECT com a mesma condição antes de dar o DELETE.

  • Prefira apagar por chave primária (ID) sempre que possível.

 

✅ Conclusão

O DELETE é um dos comandos mais poderosos (e perigosos) do SQL. Use com responsabilidade. Quando bem usado, é a ferramenta ideal pra manter o banco de dados limpo e íntegro.