SELECT: Indo além do WHERE simples

Introdução

Em outros artigos foram inicializados estudos sobre o comando SELECT, único comando da DQL (Data Query Language – Linguagem de Consulta de Dados) pertencente a SQL (Structured Query Language – Linguagem Estruturada de Consulta). Este artigo irá mostrar como fazer consultas utilizando os operadores lógicos na cláusula WHERE.

Tabelas

Para demonstrar os operadores lógicos serão utilizadas as tabelas do modelo lógico abaixo. Para saber como criar as tabelas desse modelo lógico, leia o artigo CREATE TABLE.

FUNCION >< SETOR

Relacionamento entre as tabelas FUNCION e SETOR

As tabelas devem conter os dados apresentados na sequência. Os artigos INSERT e UPDATE e DELETE ensinam a incluir, alterar e excluir dados numa tabela.

Tabela FUNCION
ID_FUNCION
NOME
SOBRENOME
SALARIO
ID_SETOR
1
Tadeu Pereira
2500.00
1
2
Ylane Amorim
2200.00
2
3
Lucas Pereira
2500.00
3
4
Cibelle Pereira
2200.00
4
5
Julian Menezes
2000.00
1
6
Ewerton Rodrigues
2000.00
1
7
Jacob Neto
1500.00
2
8
Maria Silva
1000.00
null
9
Fernanda Fernandes
1800.00
4

 

Tabela SETOR
ID_SETOR
SETOR
1
Desenvolvimento
2
Manutenção
3
Financeiro
4
Vendas
5
RH

Cláusula WHERE com Operadores Lógicos

Como apresentado anteriormente, o comando SELECT é simples e extenso, um dos motivo é a flexibilidade da cláusula WHERE. Essa permite a utilização de operadores comparativos para informar ao SGBDR quais registros devem ser selecionados e mostrado no resultado da consulta. Acrescentando-se aos operadores comparativos os operadores lógicos a atuação da cláusula WHERE cresce de maneira significativa.

Obs.: Os COLCHETES denotam uma parte opcional e as CHAVES indicam que partes podem ser repetidas indefinidamente ou omitidas completamente.

Sintaxe:

select ATRIBUTO [{, ATRIBUTO}] from TABELA

[where ATRIBUTO <OPERADOR_COMPARATIVO> VALOR

[{ OPERADOR_LOGICO ATRIBUTO <OPERADOR_COMPARATIVO> VALOR}] ]

[;]

Utilização do operador lógico “AND”:

O operador lógico AND é utilizado para obter os registros que atendam todas as condições impostas pelos operadores comparativos envolvidos na cláusula WHERE. Este operador pode ser analisado de forma similar ao seu equivalente nas linguagens de programação, em outras palavras, o registro só será retornado se o resultado de todos os operadores comparativos forem atendidos. Uma maneira de vê como esse operador lógico atua é olhando e analisando a tabela verdade abaixo:

Tabela verdade do operador lógico AND
Condição 1
Condição 2
AND
False
False
False
False
True
False
True
False
False
True
True
True

Alguns conseguem entender melhor o operador lógico AND criando uma tabela verdade baseada na operação básica multiplicar da matemática, aqui representada pelo asterisco(*). Nesse caso todo valor igual a 0(zero) será considerado FALSE (falso) e todo valor diferente de 0(zero) será considerado TRUE(verdadeiro).

Tabela verdade do operador lógico AND
(visto como uma operação de multiplicação)
Condição 1
Condição 2
AND (*)
0
0
0
0
1
0
1
0
0
1
1
1

Obs.: Na operação básica multiplicar, todo valor multiplicado por 0(zero) terá como resultado 0(zero), por dedução, se o valor 0(zero) for considerarmos FALSE(falso), toda operação utilizando o operador lógico AND será falsa se um dos valores for falso.

Exemplo #1:

select ID_FUNCION, NOME from FUNCION
where ID_FUNCION > 5 and ID_SETOR is not null;

Resultado #1:

ID_FUNCION
NOME
ID_SETOR
6
Ewerton
1
7
Jacob
2
9
Fernanda
4

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo ID_FUNCION  seja superior a 5(cinco) e o valor do atributo ID_SETOR não esteja nulo (para entender o operador comparativo IS NOT NULL leia o artigo que aborda o mesmo).

Utilização do operador lógico “OR”:

O operador lógico OR é utilizado para obter os registros que atendam a pelo menos uma das condições impostas pelos operadores comparativos envolvidos na cláusula WHERE. Assim como o operador lógico AND, o  operador lógico OR pode ser analisado de forma similar ao seu equivalente nas linguagens de programação, ou seja, o registro só será retornado se o resultado de pelo menos um dos operadores comparativos for atendido.

Tabela verdade do operador lógico OR
Condição 1
Condição 2
OR
False
False
False
False
True
True
True
False
True
True
True
True

O seu equivalente na matemática é a operação básica somar. Como explicado anteriormente, todo valor igual a 0(zero) será considerado FALSE (falso) e todo valor diferente de 0(zero) será considerado TRUE(verdadeiro).

Tabela verdade do operador lógico OR
(visto como uma operação de soma)
Condição 1
Condição 2
OR (+)
0
0
0
0
1
1
1
0
1
1
1
2

Obs.: Na operação básica somar, todo valor somado com 0(zero) terá como resultado ele mesmo, por dedução, se o valor 0(zero) for considerarmos FALSE(falso), toda operação utilizando o operador lógico OR será verdadeiro se pelo menos um dos valores for verdadeiro.

Exemplo #2:

select ID_FUNCION, NOME from FUNCION
where ID_FUNCION = 5 or ID_SETOR is null;

Resultado #2:

ID_FUNCION
NOME
ID_SETOR
5
Julian
1
8
Maria
null

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo ID_FUNCION  é igual a 5(cinco) e o valor do atributo ID_SETOR seja nulo (para entender o operador comparativo IS NULL leia o artigo que aborda o mesmo).

Conclusão

Neste artigo foi explicado como a cláusula WHERE do comando SELECT utiliza os operadores lógicos AND e OR. Com esses dois operadores lógicos é possível criar filtros, em consultas SQL, bem mais elaborados. No Canal da TIDP no youtube você pode assistir vídeos sobre esse e outros assuntos.

Até o próximo artigo.

Assuntos relacionados:

SQL: Comando SELECT – Parte I

SQL: Comando SELECT – Parte II

SQL: Comando SELECT – Parte III

CREATE TABLE

INSERT

UPDATE e DELETE

Possui mestrado em Computação Aplicada pela Universidade Estadual do Ceará (2010), especialização em Engenharia de Software pela Faculdade de Juazeiro do Norte (2010), graduação em Automática pelo Centro Federal de Educação Tecnológica do Ceará (2005). Tem experiência na área de Ciência da Computação , com ênfase em Sistemas de Computação, atuando principalmente nos seguintes temas: Desenvolvimento dos programas de computador IndSist, Store, Teacher entre outros. Desenvolvimento dos programas Mobile-Android Agenda Iterativa e Guia Cariris.Disciplinas que ministra ou ministrou no ensino superior: Linguagem de Programação, Paradigma de Programação, Estrutura de Dados, Engenharia de Software, Banco de Dados. Currículo Lattes