# SQL NOT: pesquisas precisas com critérios de exclusão

`NOT` é um dos operadores lógicos do SQL e permite **filtrar os resultados das pesquisas de forma precisa e eficaz através do procedimento de exclusão**. Ao utilizar o operador `NOT` para excluir dados que cumprem determinadas condições, os resultados ficam limitados às informações relevantes.

## O que é o operador SQL `NOT`?

O operador SQL NOT, juntamente com o SQL `AND` e [o SQL OR](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/sql-or/), é um dos operadores lógicos do SQL que permite formular condições e critérios ao realizar consultas de dados. Enquanto os operadores `AND` e `OR` filtram conjuntos de dados que cumprem todas ou pelo menos uma das condições especificadas, **o operador `NOT` baseia-se no procedimento de exclusão**, pois exclui do seu resultado toda a informação nos registos selecionados que *não* cumpra uma determinada condição.

O operador SQL `NOT` é frequentemente utilizado em combinação com o SQL SELECT, o SQL WHERE e o SQL `HAVING`. Para tornar a pesquisa o mais precisa possível, também pode **combinar o operador `NOT` com os operadores `AND` e `OR`**. Desta forma, pode filtrar os resultados irrelevantes que não cumprem as condições específicas (`AND`) ou que não cumprem pelo menos uma das condições mencionadas (`OR`).

### Diferença entre SQL `NOT`, `AND` e `OR`

A seguir, explicamos as principais diferenças entre os operadores `NOT`, `AND` e `OR`:

<table>
  <thead>
    <tr>
      <th>SQL `NOT`</th>
      <th>SQL `AND`</th>
      <th>SQL `OR`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Devolve apenas conjuntos de dados que não satisfazem uma condição definida</td>
      <td>Retorna conjuntos de dados que cumprem todos os critérios de pesquisa predefinidos</td>
      <td>Retorna todas as informações que satisfazem pelo menos uma das condições definidas</td>
    </tr>
    <tr>
      <td>Nega uma condição irrelevante para a pesquisa</td>
      <td>Combina condições para limitar a pesquisa a informações que satisfaçam vários critérios de pesquisa</td>
      <td>Alarga os resultados da pesquisa a dados que cumpram um de vários critérios</td>
    </tr>
  </tbody>
</table>

Dica Gostaria de aprender o básico sobre [SQL](https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/o-que-e-sql/) para começar a trabalhar com esta linguagem de programação? Nesse caso, não hesite em consultar os exemplos da nossa [introdução ao SQL](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/introducao-ao-sql-com-exemplos/).

## A sintaxe do operador `NOT`

A sintaxe simples do `NOT` tem o seguinte aspeto:

```sql
SELECT  *
FROM tabla
WHERE  NOT  (condición)
```

São utilizados os seguintes parâmetros:

- `SELECT`: selecione as colunas relevantes para a sua pesquisa. Ao utilizar um asterisco `*`, pode pesquisar em toda a tabela selecionada, incluindo todas as colunas associadas. Também pode especificar colunas individuais com a respetiva chave primária ou estrangeira.
- `FROM`: define a tabela que pretende pesquisar.
- `WHERE`: define condições através de operadores como o SQL `NOT` para limitar a consulta.
- `NOT`: em combinação com `WHERE`, define a negação de uma condição que os resultados da pesquisa não devem cumprir.

Para precisar a consulta, podes combinar com o `AND` ou o `OR`.

### SQL `NOT` combinado com `AND`

Ao combiná-lo com `AND`, são devolvidos os **registos que não cumpram ambas as condições**.

```sql
SELECT  *
FROM  tabla
WHERE  NOT  (condición1  AND  condición2)
```

### SQL `NOT` combinado com `OR`

Ao combiná-lo com `OR`, obtêm-se resultados que **excluem os registos que cumprem pelo menos uma das condições**.

```sql
SELECT  *
FROM  tabla
WHERE  NOT  (condición1  OR  condición2)
```

## Possíveis utilizações do operador `NOT`

As possibilidades de utilização do `NOT` ao realizar consultas e pesquisas são **praticamente ilimitadas**. Por exemplo, podes fazer o seguinte:

- excluir dados de clientes, encomendas ou produtos por região, ano, categoria, preço ou características;
- ignorar registos com valores inválidos ou com valores em falta;
- filtrar dados financeiros que não cumpram determinados critérios de transação;
- excluir dados de funcionários que não pertençam a um departamento específico;
- filtrar candidatos que não possuam uma qualificação determinada.

## Exemplos de utilização do operador SQL `NOT`

A pesquisa com o operador `NOT` pode variar consideravelmente, dependendo da forma como definir a condição com a cláusula `WHERE`, o operador `NOT` e outros operadores opcionais. Mostramos-lhe isso em **três exemplos de aplicação**.

### Exclusão de funcionários por região

Imagine que, na tabela «Funcionários», pretende mostrar apenas informações sobre os funcionários que não residem na Alemanha. Para tal, defina a condição utilizando a coluna «país», a cláusula `WHERE`, o operador `NOT` e o operador de comparação `=` da seguinte forma:

```sql
SELECT  *
FROM  empleados
WHERE  NOT  (país  =  'Alemania')
```

Da mesma forma, se numa tabela de produtos pretender mostrar apenas **os produtos que já não estão em stock**, deve proceder da seguinte forma:

```sql
SELECT  *
FROM  productos
WHERE  NOT  (stock  >  0)
```

### Filtrar grupos de clientes

Imagina que tens a tabela «Clientes» e precisas de procurar um determinado grupo de clientes que **não cumpra condições pré-definidas**. Neste exemplo, não podem ter menos de 30 anos nem residir em Berlim; por isso, além do `NOT`, também são utilizados operadores de comparação e o valor `AND`.

```sql
SELECT  *
FROM  clientes
WHERE  NOT  (edad  <  30  AND  ciudad  =  'Berlín')
```

### Filtrar as qualificações em falta numa candidatura

Imagina que tens a tabela «Candidatos» e precisas de excluir os resultados que não cumpram **critérios específicos**, como «licenciatura» ou «experiência». A pesquisa ficaria assim:

```sql
SELECT  *
FROM  candidatos
WHERE  NOT  (titulación  =  ´grado´  OR  experiencia  <  3)
```

## Alternativas ao SQL `NOT`

O operador `NOT` caracteriza-se por negar critérios de pesquisa e não existe nenhuma alternativa que tenha essa mesma função. No entanto, o SQL `NOT` é versátil e pode ser combinado para realizar **consultas precisas** com vários comandos SQL. Alguns deles são o SQL JOIN ou funções de agregação do SQL `HAVING`, como [o SQL SUM](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/sql-sum/) ou `AVG`, operadores de comparação como `=` ou `>`, bem como comandos e operadores como o SQL LIKE. Para limitar ou ampliar o procedimento de exclusão a múltiplas condições, também podem ser utilizados os operadores lógicos `AND` e `OR`.


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