TOP

Lição SQL 4. Filtragem de dados (WHERE)

Na maioria dos casos, não é necessário receber todos os registros, mas apenas aqueles que atendem a determinados critérios. É por isso que existe um operador especial WHERE no SQL para filtragem de amostragem.


1. Filtragem simples pelo operador WHERE.

Vamos selecionar em nossa tabela, por exemplo, registros que dizem respeito apenas a um determinado produto. Para fazer isso, especificamos um parâmetro de seleção adicional que filtrará os valores pela coluna Produto.

Um exemplo de consulta para seleção de valores de texto:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

Como você pode ver, a condição de seleção está entre aspas simples, o que é obrigatório ao filtrar valores de texto. As aspas não são necessárias ao filtrar valores numéricos.

Um exemplo de consulta para seleção de valores numéricos:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

Neste exemplo, selecionamos registros em que a receita de vendas foi superior a US$ 40.000 e, adicionalmente, classificamos todos os registros em ordem crescente pelo campo Valor.

A tabela abaixo lista as instruções condicionais suportadas pelo SQL:

Знак операції Значення
= Дорівнює
<> Не дорівнює
< Менше
<= Менше або рівне
> Більше
>= Більше або рівне
BETWEEN Між двома значеннями
IS NULL Відсутній запис

2. Filtragem por faixa de valores (BETWEEN)

O operador BETWEEN é usado para selecionar dados que estão em um determinado intervalo. Na próxima consulta, serão selecionados todos os valores que estiverem entre US$ 1.000 e US$ 2.000, inclusive, no campo Valor.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

A ordem de classificação dependerá da ordem dos campos na consulta. Ou seja, no nosso caso, os dados serão ordenados primeiro pela coluna Valor e depois por City.

3. Seleção de registros vazios (IS NULL)

No SQL, existe um operador especial para selecionar registros vazios (chamado NULL). Uma entrada vazia é qualquer célula da tabela na qual nenhum caractere é inserido. Se for inserido 0 ou um espaço na célula, considera-se que o campo está preenchido.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

No exemplo acima, removemos intencionalmente dois valores no campo Valor para demonstrar o operador NULL.

4. Filtragem avançada (AND, OR)

A linguagem SQL não se limita a filtrar por uma condição; para seus próprios propósitos, você pode usar construções bastante complexas para selecionar dados simultaneamente por vários critérios. Para isso, o SQL possui operadores adicionais que ampliam os recursos do operador WHERE. Esses operadores são: AND, OR, IN, NOT. Daremos vários exemplos de funcionamento desses operadores.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

Vamos combinar os operadores AND e OR. Para isso, faremos uma seleção de bicicletas (Bikes) e patins (Skates), que foram vendidos no mês de março.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

Vemos que muitos valores foram incluídos em nossa amostra (além de março, também janeiro, fevereiro e abril). Qual é a razão? E o fato de o SQL ter prioridades de execução de comandos. Ou seja, o operador AND tem prioridade maior que o operador OR, portanto foram selecionados primeiro os registros com patins vendidos no mês de março, seguidos de todos os registros relacionados a bicicletas.

Portanto, para obter a amostragem correta, precisamos alterar as prioridades de execução dos comandos. Para isso usaremos parênteses, como na matemática. Então, os operadores entre parênteses serão processados primeiro e depois todo o resto.

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. Filtragem avançada (operador IN)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

O operador IN executa a mesma função que OR, mas tem várias vantagens:

  • Ao trabalhar com listas longas, as frases com IN são mais fáceis de ler;
  • São utilizados menos operadores, o que agiliza o processamento das solicitações;
  • A vantagem mais importante de IN é que em sua construção você pode usar a construção adicional SELECT, que
  • відкриває великі можливості для створення складних підзапитів.

    6. Filtragem avançada (operador NOT)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    A palavra-chave NOT permite remover valores desnecessários da amostra. Além disso, sua peculiaridade é que ele é colocado antes do nome da coluna envolvida na filtragem, e não depois.