Pular para o conteúdo principal

Como usar o SQL MINUS

O operador SQL MINUS subtrai um conjunto de resultados de outro. É simples de usar: Basta colocar MINUS entre duas consultas para excluir registros comuns do primeiro conjunto.
Actualizado 30 de jul. de 2024  · 10 min de leitura

No SQL, o operador MINUS é uma ferramenta poderosa para subtrair um conjunto de resultados de outro. Esse operador é essencial para cenários em que precisamos identificar as linhas exclusivas em um conjunto de dados, mas não em outro.

Neste artigo, exploraremos a finalidade, a sintaxe e as aplicações práticas do operador SQL MINUS, garantindo a você uma compreensão profunda da consulta SQL e da manipulação de dados eficazes.

A resposta rápida: Como usar o SQL MINUS

O operador SQL MINUS subtrai um conjunto de resultados de outro, retornando apenas as linhas exclusivas do primeiro conjunto que não estão presentes no segundo.

Vamos imaginar que você tenha duas tabelas de funcionários, uma de 2023 e outra de 2024. Queremos descobrir quais funcionários estavam presentes em Employees2023, mas não estão em Employees2024. Você poderia usar uma instrução SQL MINUS para obter a resposta. 

SELECT EmployeeID, Name, Department
FROM Employees2023
MINUS
SELECT EmployeeID, Name, Department
FROM Employees2024;
Employees2023:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 1          | Alice   | HR         |

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |


Employees2024:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |

| 5          | Eve     | Marketing  |


Expected Output:

| EmployeeID | Name  | Department |

|------------|-------|------------|

| 1          | Alice | HR         |

O que é o operador SQL MINUS?

O operador SQL MINUS compara dois comandos SELECT e retorna as linhas do primeiro comando SELECT que estão ausentes no segundo. Especificamente, ele executa uma operação de diferença de conjunto, que é crucial para várias tarefas de análise de dados. Isso é particularmente útil para os esforços de limpeza, validação e consolidação de dados, nos quais precisamos identificar discrepâncias entre conjuntos de dados.

Sintaxe do operador SQL MINUS

A sintaxe básica do operador MINUS é a seguinte:

SELECT column1, column2, ...
FROM table1
MINUS
SELECT column1, column2, ...
FROM table2;

Os componentes da consulta são:

  • Declaração SELECT: A instrução SELECT especifica as colunas desejadas e a tabela da qual você deseja recuperá-las.
  • Operador MINUS: O operador MINUS subtrai o segundo conjunto de resultados do primeiro.
  • Componentes opcionais, como a cláusula WHERE podem ser incluídos para filtrar os dados.
SELECT column1, column2, ...
FROM table1
WHERE condition
MINUS
SELECT column1, column2, ...
FROM table2
WHERE condition;

Pontos importantes a serem lembrados

Para usar o operador MINUS corretamente, tenha em mente estes pontos-chave:

  • Ambos os demonstrativos SELECT devem ter o mesmo número de colunas.
  • Os tipos de dados das colunas correspondentes devem ser os mesmos.
  • Embora os nomes das os nomes das colunas não precisem ser idênticos, seus tipos de dados devem estar alinhados.
  • MINUS remove as linhas duplicadas do conjunto de resultados final, retornando apenas as linhas distintas.

Exemplos práticos

Vamos agora dar uma olhada em alguns exemplos práticos para solidificar nosso entendimento.

Exemplo com uma única expressão

Usamos a seguinte consulta para encontrar os departamentos exclusivos em 2019 que não estão presentes em 2020:

SELECT Department
FROM Employees2019
MINUS
SELECT Department
FROM Employees2020;

Exemplo com a cláusula ORDER BY

Usamos a seguinte consulta para obter os funcionários exclusivos em 2019, classificados por seus nomes:

SELECT EmployeeName
FROM Employees2019
MINUS
SELECT EmployeeName
FROM Employees2020
ORDER BY EmployeeName;

Casos de uso comuns do operador MINUS

O operador SQL MINUS é uma ferramenta versátil que pode ser aplicada em vários cenários para aprimorar a análise e o gerenciamento de dados. A seguir, discutimos vários casos de uso cotidiano em que o operador MINUS se mostra particularmente útil.

Validação de dados em processos de ETL

Garantir a consistência e a precisão dos dados nos processos de ETL (extração, transformação e carregamento). O operador do MINUS pode validar os dados comparando os conjuntos de dados de origem e de destino.

Vamos dar uma olhada em um exemplo. Para validar se todos os registros da tabela de preparação foram carregados na tabela final, podemos usar a seguinte consulta:

SELECT *
FROM StagingTable
MINUS
SELECT *
FROM FinalTable;

Identificação de dados ausentes entre dois conjuntos de dados

Ao consolidar dados de várias fontes, é essencial identificar todos os registros ausentes para garantir a integridade:

SELECT CustomerID
FROM SourceA
MINUS
SELECT CustomerID
FROM SourceB;

Limitações e alternativas

Embora o operador SQL MINUS seja uma ferramenta poderosa para comparar conjuntos de dados, ele tem certas limitações e nem sempre é a melhor opção para todos os cenários. Compreender essas limitações e conhecer as alternativas disponíveis pode nos ajudar a tomar decisões melhores ao trabalhar com consultas SQL.

  1. Não suportado por todos os bancos de dados: O operador MINUS não tem suporte universal em todos os sistemas de gerenciamento de banco de dados SQL. Embora esteja disponível no Oracle, ele não é compatível com o SQL Server, que usa o operador EXCEPT.
  2. Requisitos de coluna e tipo de dados: Os dois comandos SELECT usados com o operador MINUS devem ter o mesmo número de colunas, e as colunas correspondentes devem ter tipos de dados compatíveis. Isso pode ser restritivo quando você trabalha com consultas complexas que envolvem diferentes conjuntos de dados.
  3. Sensibilidade a maiúsculas e minúsculas: O operador MINUS diferencia maiúsculas de minúsculas. Por exemplo, "Apple" e "maçã" são considerados valores diferentes. Se a sensibilidade a casos não for considerada, isso pode levar a resultados inesperados.
  4. Não há classificação: O conjunto de resultados retornado pelo operador MINUS não é classificado. Se você precisar de um pedido específico, deverá usar uma cláusula adicional ORDER BY.
  5. Problemas de desempenho: O operador MINUS pode ser lento ao lidar com grandes conjuntos de dados, pois ele precisa realizar uma comparação completa entre os dois conjuntos de resultados. Isso pode levar a gargalos de desempenho em aplicativos de grande escala.

Uma alternativa ao operador MINUS é o operador EXCEPT, que é funcionalmente semelhante e amplamente suportado em diferentes bancos de dados SQL.

  • MENOS: Padrão no Oracle e em alguns outros bancos de dados.
  • EXCETO: Padrão no SQL Server, PostgreSQL e outros bancos de dados.

Conclusão

Entender o operador SQL MINUS é fundamental para que você possa fazer consultas SQL e manipular dados com eficiência. Esse operador nos ajuda a identificar linhas exclusivas entre dois conjuntos de dados, o que o torna valioso para tarefas de validação, limpeza e consolidação de dados. Pratique com diferentes conjuntos de dados para dominar o uso do operador MINUS e aprimorar suas habilidades em SQL.

Se você realmente quiser aprimorar suas habilidades em SQL, faça um curso da DataCamp como Introdução ao SQL. Este curso oferece uma boa base para tópicos mais avançados. Se você acha que tem uma boa noção do básico, experimente nosso curso SQL Intermediário, que se aprofunda nas complexidades do SQL, incluindo operações de conjunto como MINUS.

Perguntas frequentes

Para que é usado o operador SQL MINUS?

O operador SQL MINUS é usado para subtrair um conjunto de resultados de outro, retornando apenas as linhas exclusivas do primeiro conjunto que não estão presentes no segundo.

Quais são os requisitos de sintaxe para usar o operador MINUS do SQL?

Ambos os comandos SELECT na operação MINUS devem ter o mesmo número de colunas, e os tipos de dados das colunas correspondentes devem ser os mesmos.

O operador SQL MINUS pode ser usado em todos os bancos de dados SQL?

Não, o operador MINUS não é compatível com todos os bancos de dados SQL. Por exemplo, ele não é compatível com o MySQL, mas está disponível no Oracle.

Quais são alguns casos de uso comuns do operador MINUS do SQL?

Os casos de uso comuns incluem validação de dados em processos de ETL, identificação de dados ausentes entre dois conjuntos de dados e limpeza e consolidação de dados de várias fontes.

Qual é a diferença entre os operadores SQL MINUS e EXCEPT?

O operador MINUS é usado principalmente no Oracle e em alguns outros bancos de dados, enquanto o operador EXCEPT tem uma função semelhante e é usado no SQL Server, PostgreSQL e outros bancos de dados. Ambos os operadores retornam linhas exclusivas do primeiro comando SELECT que não estão presentes no segundo.

Como o operador MINUS do SQL é diferente de uma antijunção?

O operador MINUS no SQL é usado para retornar todas as linhas da primeira consulta que não estão presentes na segunda consulta. É uma operação de conjunto que compara os resultados de duas consultas e retorna a diferença. Uma antijunção, por outro lado, é um tipo de junção que retorna linhas da primeira tabela quando não existem linhas correspondentes na segunda tabela. Isso pode ser implementado usando um LEFT JOIN combinado com uma cláusula WHERE para filtrar as linhas em que a condição de união não é atendida.

Temas

Aprenda SQL com a DataCamp

curso

Introduction to SQL

2 hr
886.8K
Learn how to create and query relational databases using SQL in just two hours.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre

Sejal Jaiswal

21 min

tutorial

Como usar GROUP BY e HAVING no SQL

Um guia intuitivo para você descobrir os dois comandos SQL mais populares para agregar linhas do seu conjunto de dados
Eugenia Anello's photo

Eugenia Anello

6 min

tutorial

Como usar um alias SQL para simplificar suas consultas

Explore como o uso de um alias SQL simplifica os nomes de colunas e tabelas. Saiba por que usar um alias SQL é fundamental para melhorar a legibilidade e gerenciar uniões complexas.
Allan Ouko's photo

Allan Ouko

9 min

tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

FUNÇÃO SQL COUNT()

COUNT() permite que você conte o número de linhas que correspondem a determinadas condições. Saiba como usá-lo neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

tutorial

QUALIFICAR: A instrução de filtragem SQL que você nunca soube que precisava

Saiba mais sobre a cláusula SQL QUALIFY, um método de filtragem essencial, porém menos conhecido, no SQL. Entenda sua sintaxe, usos e como ela difere de outros métodos de filtragem SQL.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

See MoreSee More