Banco de Dados e o temido SELECT – SQL para Iniciantes

Banco de Dados e o temido SELECT - SQL para Iniciantes

Tópicos que você vai ver

1. Filtrando colunas com SELECT
2.Como combinar mais de uma cláusula WHERE
3. Consultas com números
4. Selecionando um dado NULO
5. SELECT com LIKE
6. IN e NOT IN

Antes de mais nada, no post anterior, vimos que a cláusula WHERE apareceu em uma consulta com o SELECT para acessarmos os dados de nossa tabela. Mas o que o WHERE faz?

O WHERE é uma cláusula que diz ao SQL o que ele deve procurar, no caso, a condição que você fornecer no código.

Desse modo, o resultado que será exibido será o teste da condição. Se for verdadeiro, aparece, caso contrário, não.

O Temido SELECT – SQL para Iniciantes

Vamos analisar o código:

SELECT * FROM nome_da_tabela
WHERE (condição)

Logo, essa sintaxe quer dizer: selecione todos os campos da tabela tal. Em resumo, o asterisco equivale a todos os campos da tabela.

Aqui vai uma dica rápida: se você for inserir uma condição que corresponda a um VARCHAR, CHAR, DATE, DATETIME, BLOB OU TIMESTAMP, sempre use aspas simples.

Já que o código dará erro caso você não coloque.

Filtrando colunas com SELECT

Dependendo da consulta, é necessário que façamos uma filtragem dos campos que vão aparecer na tela, certo?

Para isso, devemos informar ao SELECT quais campos queremos que apareça em nossa pesquisa:

SELECT nome, endereco 
FROM cliente;

Segundo essa consulta, apenas o nome e o endereço de clientes vão aparecer:

O Temido SELECT – SQL para Iniciantes

Como no meu banco de dados só tem a Joana de cliente até agora, só apareceu ela. Desse modo, com esse comando vão aparecer todos os clientes, mas somente os campos de nome e endereço.

SELECT nome, endereço 
FROM cliente

WHERE nome = 
'Joana das Flores';

Agora sim, ele restringe o resultado da consulta a apenas uma, pois inserimos uma cláusula e sob ela uma condição.

Assim, eu disse ao meu SELECT que me retornasse apenas o nome e o endereço de quem se chamava Joana das Flores.

O Temido SELECT – SQL para Iniciantes

Quando queremos filtrar os dados, utilizamos a cláusula WHERE.

Como combinar mais de uma cláusula WHERE?

Certamente, ao se fazer uma pesquisa, podemos precisar refinar a nossa consulta.

Às vezes, para ter acesso a uma informação é preciso combinar cláusulas.

Só para exemplificar, vamos voltar à situação anterior. Por algum motivo, precisamos buscar os clientes com o mesmo endereço e id_cliente entre 1 e 5. Como faríamos isso?

SELECT id_cliente, nome, 
endereço FROM cliente
WHERE endereço = 
‘Rua das Flores’
AND id_cliente 
BETWEEN 1 and 5;
O Temido SELECT – SQL para Iniciantes

Nesse caso o AND e o BETWEEN filtraram o meu resultado para os clientes que tivessem o id entre 1 e 5.

BETWEEN: entre

AND: e.

Consulta com números

Vamos supor que eu queira fazer uma pesquisa na tabela produtos que eu acabei de criar. Eu quero selecionar o nome de todas as flores que tenham em estoque 15 unidades. Desse modo, como o código ficaria?

SELECT nome_produto 
FROM produtos
WHERE tipo = ‘flor’
AND estoque = 15;
O Temido SELECT – SQL para Iniciantes

Agora, eu quero consultar as minhas flores que custam entre 4 e 7 reais.

SELECT nome_produto, 
preco FROM produtos
WHERE tipo_produto = 
‘flor’
AND preco 
BETWEEN 4 and 7;
O Temido SELECT – SQL para Iniciantes

Portanto, para realizar consultas com operadores, a sintaxe segue a mesma lógica:

SELECT nome_produto, 
preco FROM produtos
WHERE tipo_produto = 
‘flor’
AND preco > 4;
O Temido SELECT – SQL para Iniciantes

 Logo, os operadores são:

  • > – maior;
  • < – menor;
  • = – igual;
  • <> –  diferente;
  • <= – menor ou igual;
  • >= – maior ou igual.

Selecionando um dado NULO

Por conseguinte, uma hora ou outra teremos que buscar um dado nulo.  Como fazemos?

SELECT nome_produto 
FROM produtos
WHERE tipo_produto 
IS NULL;
O Temido SELECT – SQL para Iniciantes

Dessa forma, o código não vai funcionar se atribuirmos valor nulo. Somente na cláusula: IS NULL. Não há como comparar um objeto nulo, pois ele possui valor indefinido.

SELECT com LIKE

Tal qual no exemplo dos códigos acima, nós comparamos caracteres apenas com o sinal de igual. No entanto, existe uma palavra específica para consultas com CHAR ou VARCHAR: o LIKE.

Em resumo, o LIKE trabalha com dois caracteres especiais: o %(por cento) e o _(sublinhado). O % substitui o número de caracteres e o sublinhado substitui apenas um. Vamos entender melhor:

Desse modo, o LIKE ‘%a’ : significa que a pesquisa vai retornar as palavras com vários caracteres antes do ‘a’. E o LIKE ‘_a’: que a pesquisa vai retornar as palavras com apenas um caractere antes do ‘a’.

IN e NOT IN

A cláusula IN serve para avaliar se o valor de um conjunto existe. Se existir, é ele quem aparece na busca:

SELECT nome 
FROM cliente
WHERE endereço 
IN (‘Rua das Flores’);
O Temido SELECT – SQL para Iniciantes

Contudo, cláusula NOT IN vai retornar o que não está dentro deste conjunto:

SELECT nome 
FROM cliente
WHERE endereço 
NOT IN (‘Rua das Flores’);
O Temido SELECT – SQL para Iniciantes

Qual é a sua opinião?