SQL e DadosTrilha · etapa 628 min
WHERE: comparação, AND, OR, IN e NOT IN
Vídeos desta etapa, na ordem do portal:
- Utilizando operadores de comparação · 10 min
- Combinando operadores lógicos AND/OR · 9 min
- Operador IN e variações · 8 min
Você já importa CSV e conecta Google Sheets no Looker Studio e já usa SELECT com FROM, *, AS e ROUND para projetar colunas no banco. A planilha trava com volume e edição manual, e o banco resolve com tabela e busca otimizada. Esta aula destrava o filtro de linhas com WHERE, com =, >, <, <>, <=, além de AND, OR, parênteses, IN e NOT IN.
O que foi falado
WHERE filtra linhas com SELECT ... WHERE
Vídeo 1 · 00:00:28O
WHEREfiltra linhas e mostra só quem atende a condição. O mantra éSELECT ... FROM ... WHERE, comSELECTnas colunas,FROMna tabela eWHEREna condição. OSELECT *traz todas as colunas quando nenhuma coluna foi pedida.SELECT * FROM tabela WHERE year = 2010;Filtro numérico com = > < <> sem aspas
Vídeo 1 · 00:03:05Use literais numéricos sem aspas, como year = 2010. Colocar um número entre aspas produz um literal textual: o banco pode convertê-lo implicitamente ou rejeitá-lo, conforme o contexto. = testa igualdade; > e < excluem o limite; <= e >= incluem. <> significa diferente, e muitos bancos também aceitam !=.
SELECT * FROM tabela WHERE year > 2010;Filtro de texto com aspas simples
Vídeo 1 · 00:05:59Literais de texto usam aspas simples, como '3A63'. Aspas duplas normalmente identificam nomes de tabelas ou colunas, incluindo nomes com espaços, como "Report Code". Não são uma substituição portável das aspas simples de texto. -- inicia um comentário até o fim da linha no SQLite.
SELECT * FROM tabela WHERE "Report Code" = '3A63';AND, OR e parênteses definem a ordem
Vídeo 2 · 00:00:43O
ANDexige que todas as condições sejam verdadeiras e deixa o resultado mais específico. OORpede só uma condição verdadeira e vale quando qualquer critério já basta. Os parênteses controlam a ordem como na matemática e evitam ambiguidade comANDeOR.SELECT * FROM tabela WHERE year = 2006 OR year = 2010;Exemplo com AND para ano e mês
Vídeo 2 · 00:02:48O exemplo combina
year = 2006 AND month > 6para pegar só o segundo semestre de 2006. Cada parte sozinha traria mais linhas, comANDsó passa quem atende as duas. Para testar, a aula comenta oWHEREcom--e compara o total com e sem filtro.SELECT * FROM tabela WHERE year = 2006 AND month > 6;Exemplo com OR e parênteses para chuva ou neve
Vídeo 2 · 00:04:47O exemplo exige Rain = 1 e, além disso, temperatura de no máximo 32 ou profundidade de neve maior que zero. AND tem precedência sobre OR; os parênteses tornam explícito que o bloco alternativo fica dentro da exigência de chuva. O nome Snow Depth precisa ser delimitado por conter espaço. NULL indica ausência de valor, diferente de espaço ou zero.
SELECT * FROM tabela WHERE Rain = 1 AND (temperature <= 32 OR "Snow Depth" > 0);IN e NOT IN para listas fixas
Vídeo 3 · 00:00:17IN verifica a presença numa lista, como month IN (3, 6, 9, 12); para valores não nulos, corresponde a alternativas ligadas por OR na mesma coluna. NOT IN exclui os valores da lista. NULL exige cuidado: se estiver no lado esquerdo ou numa lista sem correspondência, a condição pode ficar desconhecida e ser descartada pelo WHERE. Para evitar esse problema em uma subconsulta usada por NOT IN, é preciso remover os nulos dos valores devolvidos por ela; filtrar somente a coluna externa não resolve um NULL na lista.
SELECT * FROM tabela WHERE month IN (3, 6, 9, 12); SELECT * FROM tabela WHERE month NOT IN (3, 6, 9, 12);
Conceitos da aula
- SELECT
- Tabela
- WHERE
- Operadores de comparação
- AND
- OR
- IN
- NOT IN
- NULL
- IS NOT NULL
Reforce este assunto
- SELECT, WHERE e por que banco vence planilhaSQL e Dados · aula 11
- Lógica de programação e primeiros SELECTs com WHERESQL e Dados · aula 9
- TP3, WHERE, AND, OR e LIKESQL e Dados · aula 12