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.
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.
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.
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 | Відсутній запис |
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.
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.
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'
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:
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.