Voltar para a lista de artigos Artigos
4 minutos de leitura

Usando AND, OR, e NOT Operadores em SQL

ANDA SQL, OR, e NOT são operadores lógicos importantes em SQL. Eles ajudam você a combinar as condições usadas para filtrar registros. Eles são mais comumente usados em conjunto com o WHERE ou HAVING cláusulas. Além disso, este tópico é uma pergunta bastante comum em entrevistas de emprego SQL.

Para ajudar você a entender completamente estes operadores, vou lhe dar alguns exemplos, explicando completamente a sintaxe e o propósito de cada um. Praticar usando exemplos como estes é um dos melhores métodos para aprender SQL.

Para nossos exemplos, imagine que operamos e possuímos uma academia com locais diferentes ao redor dos Estados Unidos. Quando as pessoas se inscrevem, elas nos dão algumas informações básicas. Estas serão armazenadas em nosso members tabela, que contém uma identificação única para cada membro, juntamente com seu primeiro e último nome, sua idade, a data de entrada na academia e a localização de sua academia.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

SQL E Sintaxe

A sintaxe para o operador AND é:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 AND condition_2 AND condition_n

Quando múltiplas condições são combinadas usando o operador AND, todas as linhas que atendem a todas as condições dadas serão devolvidas.

Agora é hora de aplicar o operador AND ao nosso cenário de academia. Digamos que queríamos encontrar todos os membros que têm menos de 50 anos e moram em Los Angeles. Como podemos fazer isso usando uma consulta SQL?

SELECT * 
FROM members 
WHERE Age < 50 AND Location = 'Los Angeles';
idFirstNameLastNameAgeDateJoinedLocation
4AngelinaJolie452019-04-02Los Angeles

Embora tenhamos dois membros com o Location de Los Angeles, apenas um desses membros está sob o Age de 50 anos. Lembre-se que ao utilizar o operador SQL AND, ambas as condições devem ser cumpridas para que um registro seja devolvido.

SQL OU Sintaxe

A sintaxe para o operador OR é:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 OR condition_2 OR condition_n

Quando múltiplas condições são combinadas utilizando o operador OR, todas as filas que atendem a qualquer uma das condições determinadas serão devolvidas. Podemos aplicar isto ao nosso members escrevendo a seguinte pergunta:

SELECT * 
FROM members 
WHERE Location = 'Los Angeles' OR LastName = 'Hanks'

Com esta consulta, estamos procurando recuperar linhas onde o LastName é Hanks ou o Location é Los Angeles. A execução desta consulta produz o seguinte resultado:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles

Observe como nosso membro Tom Hanks está incluído no conjunto de resultados, mesmo que sua academia Location não seja Los Angeles. Isto porque ele satisfaz a segunda condição que especificamos - seu sobrenome é "Hanks". Lembre-se: ao utilizar o operador SQL OR, todas as linhas que atendem a qualquer uma das condições especificadas serão devolvidas.

SQL NÃO Sintaxe

A sintaxe para o operador NOT é:

SELECT column_1, column_2, … column_n
FROM table
WHERE NOT condition 

Quando múltiplas condições são combinadas usando o operador NOT, todas as linhas que não atendem às condições dadas serão devolvidas.

Podemos usar este operador com nosso exemplo de ginásio de várias maneiras úteis. E se quiséssemos encontrar todos os nossos membros que estavam fora de Los Angeles? Usando a operadora NOT, podemos simplesmente escrever:

SELECT * 
FROM members 
WHERE NOT Location = 'Los Angeles'

A execução desta consulta resulta no seguinte conjunto de dados:

idFirstNameLastNameAgeDateJoinedLocation
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
5MerylStreep712014-03-21Manhattan

Você pode ver claramente o efeito que o operador NOT teve. Nenhum membro que tinha seu Location definido para Los Angeles foi devolvido.

Combinando os operadores AND, OR, e NOT

Há certas situações em que você pode precisar combinar estes operadores para especificar os dados exatos que deseja.

Aqui está nossa members tabela novamente; é o conjunto de dados que estaremos consultando para este exemplo.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

Agora digamos que queremos ir buscar os dados para os membros que se encaixam em critérios muito específicos. Queremos membros que sejam:

  • Com mais de 50 anos de idade.
  • Localizados em Los Angeles ou Manhattan.

Podemos conseguir isso escrevendo a seguinte consulta SQL:

SELECT * FROM members
WHERE AGE > 50 AND (Location='Los Angeles' OR Location='Manhattan')

Observe como utilizamos parênteses/braquetes para agrupar nossos operadores. Fazemos isso para que SQL saiba exatamente como interpretar a ordem de nossos operadores. O resultado desta consulta é:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
5MerylStreep712014-03-21Manhattan

Você pode ver como a combinação dos operadores AND, OR, e NOT de diferentes maneiras pode nos ajudar a filtrar com precisão nossos dados.

Expanda seu SQL com AND, OR, e NÃO Operadores

Agora você tem a capacidade de recuperar os dados exatos que você deseja. Isto abre muitas possibilidades.

Você pode usar a cláusula WHERE em conjunto com AND, OR, e NOT, permitindo que você seja muito preciso com suas consultas SQL. Ler nossos posts no blog é uma ótima maneira de aprender a sintaxe SQL e ver os diferentes cenários onde SQL pode ser útil. Entretanto, se você quiser um guia realmente abrangente para escrever consultas, considere nosso SQL para Iniciantes que lhe dará muita prática prática prática.