SQL: Comando SELECT – Parte III

Introdução

Na primeira parte deste artigo foi iniciada a apresentação do comando SELECT, onde foi declarado que esse é o único comando da DQL (Data Query Language – Linguagem de Consulta de Dados) pertencente a SQL (Structured Query Language – Linguagem Estruturada de Consulta). Também foram expostos alguns operadores comparativos. Na segunda parte foram apresentando os operadores comparativos BETWEEN e IN do comando SELECT, igualmente chamados por alguns de construtores especial, assim como os LIKE e IS NULL que serão apresentado neste artigo

Tabelas

Aqui será utilizado o mesmo modelo lógico e dados do primeiro artigo.

FUNCION >< SETOR

Relacionamento entre as tabelas FUNCION e SETOR

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

Os operadores comparativos são utilizado na cláusula WHERE do comando SELECT para informar ao SGBDR quais registros devem ser selecionados. O SGBDR irá retornar apenas os registros onde os operadores comparativos obterem um resultado verdadeiro baseado na lógica condicional criada pelo operador comparativo.

Embora já tenha sido apresentada no primeiro artigo, a sintaxe da cláusula WHERE será apresentada novamente.

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]

[;]

Utilização do operador comparativo “LIKE” (Semelhante “a uma cadeia de caracteres” >>tradução livre<<):

O operador comparativo LIKE é utilizado para retornar os registros onde o valor do atributo contenha a cadeia de caracteres informada. Os exemplos apresentado utilizarão o sinal de porcentagem(%) como uma máscara, caso ele não seja utilizado o operador LIKE agirá de forma parecida com o operador comparativo = (Igual a).

Exemplo #7:

select ID_FUNCION, NOME from FUNCION
where NOME like ‘J%’;

Resultado #7:

ID_FUNCION
NOME
5
Julian
7
Jacob

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo NOME inicie com o caractere J, o sinal de porcentagem(%) informa ao SGBDR que o resultado não depende dos caracteres que venham após a letra J. Quanto mais caracteres forem informados antes do sinal de porcentagem(%) maior será a restrição sobre os registros, como mostrado no exemplo abaixo:

Exemplo #8:

select ID_FUNCION, NOME from FUNCION
where NOME like ‘Ju%’;

Resultado #8:

ID_FUNCION
NOME
5
Julian

Outras utilizações do operador comparativo LIKE são apresentados nos exemplos #9 e #10.

Exemplo #9:

select ID_FUNCION, NOME from FUNCION
where NOME like ‘%e’;

Resultado #9:

ID_FUNCION
NOME
2
Ylane
4
Cibelle

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo NOME termine com o caractere e.

Exemplo #10:

select ID_FUNCION, NOME from FUNCION
where NOME like ‘%an%’;

Resultado #10:

ID_FUNCION
NOME
2
Ylane
5
Julian
9
Fernanda

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo NOME tenha a cadeia de caractere an em qualquer parte.

Utilização do operador comparativo “NOT LIKE” (Não Semelhante “a uma cadeia de caracteres” >>tradução livre<<):

Este operador é o complemento do operador comparativo LIKE.

Exemplo #11:

select ID_FUNCION, NOME from FUNCION
where NOME not like ‘J%’;

Resultado #11:

ID_FUNCION
NOME
1
Tadeu
2
Ylane
3
Lucas
4
Cibelle
6
Ewerton
8
Maria
9
Fernanda

Neste exemplo o comando SELECT trouxe todos os registros onde o valor do atributo NOME não inicie com o caractere J.

Utilização do operador comparativo “IS NULL” (Nulo >>tradução livre<<):

Antes de iniciar a explicação sobre este operador é importante entender o que é ou não um valor NULL.

O valor NULL não é igual a uma string em branco (sem conteúdo, vazia). O valor NULL significa que o atributo não recebeu nenhum valor, o que não é igual a vazio e sim a inexistência de informação, vale ressaltar que vazio é uma informação.

O valor NULL pode assumir três estados distintos, dependendo da regra de negócio aplicada sobre o atributo:

  1. É uma informação, uma vez que a inexistência da informação pode ser a própria informação.
    • Exemplo: A regra de negócio pode considerar o valor NULL para o atributo NUM_APARTAMENTO como a informação que o endereço se refere a uma residência e não um apartamento. Neste caso o valor NULL pode ser comparado com uma string em branco, embora não seja considerado dessa maneira pela ISO/IEC 9075, documento oficial da ISO (International Organization for Standardization – Organização Internacional de Normalização) que fornece as especificações para “Information technology – Database languages – SQL
  2. A informação existe mais não foi registrada.
    • Exemplo: O atributo DT_NASCIMENTO é uma informação que toda pessoa física tem, caso o seu valor esteja NULL só pode significar que o mesmo não foi informado por esquecimento, desconhecimento ou outro motivo qualquer.
  3. Não se pode tirar nenhuma conclusão sobre a informação.
    • Exemplo: Se não houver o atributo ESTADO_CIVIL no cadastro de uma pessoa física, mas existir o atributo CONJUGE e esse último está NULL, não é possível afirmar qual é o estado civil da pessoa (casada, solteira, desquitado, etc).

Colocado isto vamos a explicação. O operador comparativo IS NULL é utilizado quando se deseja obter os registros de uma tabela onde o seu atributo esteja com o valor NULL.

Exemplo #12:

Este exemplo do comando SELECT trará os registros com o valor do atributo ID_SETOR igual a NULL.

select ID_FUNCION, NOME, ID_SETOR from FUNCION
where ID_SETOR is null;

Resultado #12:

ID_FUNCION
NOME
ID_SETOR
8
Maria
null

Utilização do operador comparativo “IS NOT NULL” (Não Nulo >>tradução livre<<):

Este operador é o complemento do operador comparativo IS NULL.

Exemplo #13:

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

Resultado #13:

ID_FUNCION
NOME
ID_SETOR
1
Tadeu
1
2
Ylane
2
3
Lucas
3
4
Cibelle
4
5
Julian
1
6
Ewerton
1
7
Jacob
2
9
Fernanda
4

Conclusão

Neste terceiro artigo foram apresentados os operadores comparativos LIKE e IS NULL do comando SELECT, também conhecidos como construtores especiais. Para conhecer os operadores comparativos “Básico” leia o artigo SQL: Comando SELECT – Parte I, já os operadores comparativos BETWEEN e IN podem ser visto no artigo SQL: Comando SELECT – Parte II. 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

SELECT: Indo além do WHERE simples

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