PostgreSQL DELETE
A instrução `DELETE` no PostgreSQL é usada para remover linhas de uma tabela. Ele permite a exclusão de registros específicos com base em uma condição ou de todos os registros se nenhuma condição for especificada.
Uso
A instrução `DELETE` é usada quando você precisa remover dados de uma tabela. É comumente usado para limpar dados obsoletos ou incorretos.
DELETE FROM table_name
[WHERE condition];
Nessa sintaxe, `DELETE FROM nome_da_tabela` especifica a tabela da qual você deseja excluir as tabelas, enquanto a `condição WHERE` opcional determina quais linhas serão removidas.
Exemplos
1. Excluir todas as linhas
DELETE FROM users;
Esse exemplo exclui todos os registros da tabela `users`, esvaziando-a efetivamente.
2. Excluir com uma condição
DELETE FROM orders
WHERE order_date < '2023-01-01';
Aqui, o comando remove todas as linhas da tabela `orders` em que a `order_date` é anterior a 1º de janeiro de 2023.
3. Excluir usando uma subconsulta
DELETE FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE name = 'HR');
Este exemplo exclui os funcionários que pertencem ao departamento de RH, utilizando uma subconsulta para identificar `department_id`s relevantes.
Dicas e práticas recomendadas
- Use com cuidado. Certifique-se sempre de que a cláusula `WHERE` esteja correta para evitar a perda não intencional de dados.
- Dados de backup. Considere a possibilidade de fazer backup da tabela ou do banco de dados antes de realizar exclusões em grande escala.
- Verifique com o SELECT. Execute uma instrução `SELECT` com a mesma condição `WHERE` para verificar quais linhas serão excluídas.
- Use `RETURNING`. Se necessário, use a cláusula `RETURNING` para gerar as linhas que foram excluídas, o que pode ser útil para fins de verificação ou auditoria.
- Limitar as exclusões. Em tabelas de alto volume, considere a possibilidade de excluir em lotes para minimizar os bloqueios de tabela e os impactos no desempenho.
- Consider CASCADE. Ao excluir linhas de uma tabela que tenha restrições de chave estrangeira, você pode usar a opção `CASCADE` para excluir automaticamente quaisquer linhas dependentes em tabelas relacionadas.
- Manuseio de simultaneidade. Esteja ciente de que operações `DELETE` simultâneas podem levar a condições de corrida. Use transações ou mecanismos de bloqueio apropriados para gerenciar as exclusões simultâneas.
- Considerações sobre o desempenho. Otimize as operações `DELETE` assegurando que os índices estejam em vigor para as condições na cláusula `WHERE`, especialmente em tabelas grandes, para melhorar o desempenho.