# PostgreSQL DELETE: como eliminar conteúdo de uma tabela

O PostgreSQL `DELETE` pode ser utilizado para eliminar conteúdo de uma tabela. Além disso, este comando pode ser especificado através de cláusulas para que apenas determinadas linhas sejam elegíveis para eliminação. Uma vez que a eliminação não pode ser revertida, é importante utilizar o comando com muito cuidado.

## O que é o PostgreSQL `DELETE`?

O comando `DELETE` é utilizado no PostgreSQL para **eliminar registos de uma tabela**. Pode utilizar a cláusula `WHERE` para selecionar registos específicos cujo conteúdo será eliminado. Se omitir a cláusula `WHERE` ao utilizar o comando, todo o conteúdo da tabela em questão **será eliminado definitivamente**. Por este motivo, o comando deve ser utilizado com muita precaução.

## PostgreSQL `DELETE`: sintaxe e funcionalidades

A sintaxe do PostgreSQL `DELETE` tem a seguinte estrutura básica:

```postgresql
DELETE FROM nombre_de_la_tabla 
WHERE [condición]
```

A palavra-chave `DELETE FROM` inicia a eliminação na tabela especificada. Podes utilizar a cláusula `WHERE` para especificar em que linhas o conteúdo deve ser eliminado. Se pretenderes ter em conta várias condições, podes enumerá-las utilizando `AND` ou `OR`.

Nota Antes de apagar dados, certifique-se de que dispõe de uma cópia de segurança atualizada da base de dados ou execute o processo de apagamento numa transação. Desta forma, poderá evitar a perda de dados importantes caso o comando seja executado incorretamente por descuido.

## Apagar todo o conteúdo de uma tabela

A forma mais fácil de explicar como funciona `DELETE` no PostgreSQL é através de um exemplo prático. Para tal, utilizamos o comando [`CREATE TABLE`](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/postgresql-create-table/) para criar uma nova tabela no PostgreSQL chamada «Lista de clientes». Em seguida, utilizamos o \[comando `INSERT INTO](t3://page?uid=37087)` para preenchê-la com várias informações. A tabela tem três colunas chamadas «ID», «Nome» e «Cidade» e contém inicialmente quatro entradas. Eis o seu aspeto:

```postgresql
|ID|Nombre|Ciudad| 
|-|-|-| 
|1|Sánchez|Córdoba| 
|2|Morales|León| 
|3|Simón|Salamanca| 
|4|Sánchez|San Sebastián|
```

Se agora quisermos manter a tabela, mas **apagar todo o conteúdo**, utilizamos o PostgreSQL `DELETE` sem nenhuma cláusula adicional. O comando ficaria então assim para o nosso exemplo:

```postgresql
DELETE FROM lista_de_clientes;
```

## Apagar uma linha no PostgreSQL `DELETE`

Na maioria das vezes, porém, vais deparar-te com uma situação em que simplesmente desejas eliminar **uma linha específica**. Isso também é possível no PostgreSQL `DELETE`. Para tal, utilizamos o comando com uma cláusula `WHERE`. No nosso exemplo, queremos eliminar o cliente «Morales» com o ID «2». O código adequado seria o seguinte:

```postgresql
DELETE FROM lista_de_clientes 
WHERE ID = 2;
```

## Especificar linhas com várias cláusulas

Podem ocorrer entradas duplicadas e, consequentemente, ambíguas, especialmente em tabelas extensas. Se quiser garantir que apenas a linha pretendida é eliminada, pode utilizar o PostgreSQL `DELETE` com **cláusulas múltiplas**. No nosso exemplo, temos dois clientes chamados «Sánchez» e queremos eliminar apenas a segunda entrada. Por isso, combinamos duas cláusulas. O código é o seguinte:

```postgresql
DELETE FROM lista_de_clientes 
WHERE Nombre = 'Sánchez' 
AND ID >= 3;
```

Desta forma, são eliminadas todas as linhas em que o nome «Sánchez» e o ID são iguais ou superiores a «3». Como a primeira entrada com esse nome tem um ID inferior a «3», essa entrada permanece na base de dados mesmo após o comando de eliminação.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/postgresql-delete/](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/postgresql-delete/) for AI/LLM consumption.