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

O operador SQL NOT é um dos operadores lógicos e permite **filtrar eficientemente e com precisão os resultados da pesquisa por meio do método de exclusão**. Utilizando o operador `NOT`, você exclui dados que atendem a determinadas condições, restringindo os resultados às informações relevantes.

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

O SQL NOT, juntamente com SQL AND e [SQL OR](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-like/), é um dos operadores [operadores SQL](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/operadores-sql/) lógicos que permitem formular condições e critérios para consultas de dados. Enquanto os operadores `AND` e `OR` filtram registros que atendem a todas ou pelo menos uma condição especificada, **o operador `NOT` baseia-se no método de exclusão**. Em sua consulta, você exclui todas as informações dos registros que atendem a uma condição definida.

O operador SQL NOT é frequentemente usado em conjunto com [SQL SELECT](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-select/), [SQL WHERE](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-where/) e SQL HAVING. Para tornar a pesquisa o mais precisa possível, você também pode combinar o operador `NOT` com os operadores `AND` e `OR`. Dessa forma, você pode filtrar resultados irrelevantes que não atendem a todas as condições definidas (`AND`) ou que não atendem a pelo menos uma das condições mencionadas (`OR`).

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

Os operadores SQL `NOT`, `AND` e `OR` diferenciam-se da seguinte forma:

<table>
  <thead>
    <tr>
      <th>SQL `NOT`</th>
      <th>SQL `AND`</th>
      <th>SQL `OR`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Retorna apenas os registros que não atendem a uma condição definida.</td>
      <td>Retorna registros que atendem a todos os critérios de pesquisa predefinidos.</td>
      <td>Retorna todas as informações que atendem a pelo menos uma das condições definidas .</td>
    </tr>
    <tr>
      <td>Nega uma condição que deve ser excluída da pesquisa.</td>
      <td>Combina condições para restringir a pesquisa a informações que atendem a múltiplos critérios de pesquisa.</td>
      <td>Expande os resultados da pesquisa para dados que atendem a um de vários critérios.</td>
    </tr>
  </tbody>
</table>

Dica Quer se aprofundar mais em [SQL](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-sql/), mas ainda tem pouco conhecimento? Nossa [introdução ao SQL com exemplos](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/aprender-sql-com-exemplos/) pode ajudá-lo a começar rapidamente com essa linguagem de banco de dados.

## Sintaxe do operador `NOT`

A sintaxe simples do `NOT` é a seguinte:

```sql
SELECT  *
FROM Tabela
WHERE  NOT  (condição_de_pesquisa)
```

Os seguintes parâmetros são usados:

- `SELECT`: Seleciona colunas que são relevantes para a sua pesquisa. Com um asterisco `*`, você pesquisa toda a tabela selecionada, incluindo todas as colunas associadas. Você também pode especificar colunas individuais com a chave primária ou estrangeira correspondente.
- `FROM`: Define a tabela que você deseja pesquisar.
- `WHERE`: Define condições usando operadores como SQL NOT para restringir a consulta de dados.
- `NOT`: Em combinação com `WHERE`, especifica a negação de uma condição que os resultados da pesquisa não devem atender..

Deseja tornar sua consulta de dados mais precisa? Combinar `AND` ou `OR` com `NOT` pode tornar sua consulta de dados mais precisa.

### Combinar SQL `NOT` e `AND`

Em combinação com `AND`, os resultados que **satisfazem ambas as condições de pesquisa** não devem fazer parte do conjunto de resultados.

```sql
SELECT  *
FROM  Tabela
WHERE  NOT  (condição_de_pesquisa1  AND  condição_de_pesquisa2)
```

### Combinar SQL `NOT` e `OR`

Em combinação com `OR`, você pode excluir dados que **não satisfazem pelo menos uma das condições de pesquisa**.

```sql
SELECT  *
FROM  Tabela
WHERE  NOT  (condição_de_pesquisa1  OR  condição_de_pesquisa2)
```

## Quando usar o operador SQL `NOT`

As possibilidades de uso para consultas e pesquisas com `NOT` são **praticamente ilimitadas**. Você pode, por exemplo:

- Excluir dados de clientes, pedidos ou produtos por região, ano, categoria, preço ou características
- Ignorar registros que possuem valores inválidos ou ausentes
- Filtrar dados financeiros que não atendem a determinados critérios de transação
- Excluir dados de funcionários que não pertençam a um determinado departamento
- Filtrar candidatos que não possuem uma qualificação específica

## Exemplos de uso do operador SQL `NOT`

Dependendo do caso de uso, a pesquisa com o operador `NOT` pode variar bastante – dependendo de como você define a condição com a cláusula `WHERE`, o operador `NOT` e outros operadores opcionais. Para ilustrar, oferecemos **três exemplos práticos**.

### Excluir funcionários por região

Você deseja exibir em uma tabela “Funcionários” apenas informações sobre funcionários que **não vivem na Brasil**. Para isso, você define a condição com a coluna “País”, a cláusula `WHERE`, o operador `NOT` e o operador de comparação `=` da seguinte forma:

```sql
SELECT  *
FROM Funcionários
WHERE NOT (País = 'Brasil')
```

De forma semelhante, você pode proceder se quiser exibir em uma tabela de produtos apenas aqueles que **não estão mais em estoque**:

```sql
SELECT  *
FROM  Produtos
WHERE  NOT  (Estoque  >  0)
```

### Filtrar grupos de clientes

Em uma tabela “Clientes”, você deseja procurar um grupo de clientes que **não cumprem certas condições pré-definidas**. Nesse exemplo, eles não devem ter menos de 30 anos e não devem morar em Goiânia. Portanto, além do `NOT`, também são usados operadores de comparação e o operador `AND`.

```sql
SELECT  *
FROM  Clientes
WHERE  NOT  (Idade  <  30  AND  Cidade  =  'Goiânia')
```

### Filtrar qualificações ausentes em candidaturas

Você deseja excluir certos resultados em uma tabela de “Candidatos” que **não possuem qualificações específicas**, como “Bacharelado” ou “Experiência”. A consulta seria a seguinte:

```sql
SELECT  *
FROM  Candidatos
WHERE  NOT  (Grau  =  'Bacharelado'  OR  Experiência  <  3)
```

## Alternativas ao SQL NOT

Uma alternativa com função idêntica não existe, pois o operador `NOT` se caracteriza pela negação dos critérios de pesquisa. No entanto, como o SQL NOT é um operador versátil, ele pode ser **usado para consultas precisas** combinado com vários comandos SQL. Entre esses comandos estão o [SQL JOIN](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-join/) ou funções agregadas SQL `HAVING` como [SQL SUM](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-sum/) ou `AVG`, operadores de comparação como `=` ou `>` e comandos e operadores como [SQL LIKE](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-like/). Para restringir ou expandir o método de exclusão para várias condições, também são úteis os operadores lógicos `AND` e `OR`.


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