SQL e DadosAula 1231/08/20261h32
TP3, WHERE, AND, OR e LIKE
Retoma SELECT, FROM e WHERE da aula do banco contra planilha para filtrar linhas com igualdade e comparação. Destrava a leitura do TP3 com AND que afunila, OR que expande, LIKE com % e IN com parênteses para misturar blocos. O TP2 tem entrega até sexta-feira.
O que foi falado
Duplicar e rodar o DeepNote do TP3
00:08:40O notebook do TP3 vem travado, então duplique para o seu workspace para conseguir editar. Rode o notebook antes de resolver para ele criar as tabelas e inserir os valores. Se der erro de tabela não existe, olhe o log e rode de novo porque a sessão caiu.
00:15:48SELECT *traz tudo eWHEREfiltra linhasSELECT *retorna todas as colunas da tabela e exige menos digitação. Listar os campos desejados permite retornar só as colunas necessárias.WHEREfiltra as linhas conforme a pergunta da consulta.SELECT * FROM produtos; SELECT nome, preco FROM produtos;
00:53:22=,<>e comparadores com aspas e padrão americano=filtra por valor exato, como categoria igual a periféricos.<>ou!=filtram a diferença, e>,<,>=e<=comparam número e data incluindo o limite quando tem=. Texto usa aspas simples como em'SP', número usa ponto como em10.5e data se escreve como está no banco no padrão americano sem formatar.SELECT * FROM produtos WHERE categoria = 'perifericos'; SELECT * FROM produtos WHERE categoria <> 'perifericos'; SELECT * FROM clientes WHERE idade > 21;
00:58:44ANDexige tudo e afunilaANDexige que todas as condições sejam atendidas. Quanto maisANDempilhado, mais o resultado afunila, como no exemplo que caiu para 3 linhas. Campo lógico filtra comTRUEpara trazer só ativos.SELECT * FROM produtos WHERE preco > 500 AND estoque < 10 AND categoria <> 'perifericos';
01:03:37ORaceita qualquer condição e expandeORbasta atender qualquer uma das condições. Ele junta os grupos e expande o resultado, como trazer'RJ'ou'SP'em um conjunto novo. No exemplo de SP ou plano diferente de básico, traz SP independente do plano e traz plano não básico de qualquer cidade.SELECT * FROM clientes WHERE estado = 'RJ' OR estado = 'SP';
01:16:53LIKEcom%pesquisa trecho de textoLIKEpesquisa trecho de texto quando você não sabe a grafia exata.%representa qualquer quantidade de caracteres. Com%só no fim filtra pelo começo, e com%dos dois lados permite texto antes e depois, como'%zon%'para achar Belo Horizonte.SELECT * FROM clientes WHERE cidade LIKE '%zon%'; SELECT * FROM clientes WHERE cidade LIKE 'Sao%';
01:21:41INe parênteses para misturarANDcomORPara testar vários valores o elegante é
INem vez de váriosOR, comoestado IN ('RJ', 'SP'). Vírgula no lugar deORdá erro. QuandoANDeORaparecem juntos, use parênteses para isolar os blocos que devem ser avaliados juntos.SELECT * FROM clientes WHERE estado IN ('RJ', 'SP'); SELECT * FROM pedidos WHERE (estado = 'RJ' OR estado = 'SP') AND status <> 'cancelado';
Perguntas que valem a pena
Aspas simples e duplas fazem diferença no SQL?01:08:21
A aula orienta usar aspas simples para valores de texto, como 'SP'. Aspas duplas têm outro papel em muitos bancos, então siga a forma usada nos exemplos para os literais de texto.
O que retorna o filtro com OR entre cidade SP e plano diferente de básico?01:08:49
Atende qualquer uma das condições. Traz 'SP' independente do plano e traz plano não básico de qualquer cidade.
Dá para usar vírgula no lugar de AND para filtrar RJ e SP?01:21:00
Não, vírgula dá erro. Para 'RJ' ou 'SP' use OR, e a forma mais elegante é IN.
Qual a diferença entre usar % só no fim ou dos dois lados no LIKE?01:23:56
Com % só no fim filtra pelo começo do texto. Com % dos dois lados permite texto antes e depois do termo.
Dá para usar * menos uma coluna?01:30:00
Na forma ensinada nesta aula, liste explicitamente as colunas que deseja retornar.
Conceitos da aula
- SELECT
- FROM
- WHERE
- asterisco *
- AND
- OR
- LIKE
- IN
- query
- parênteses
Reforce este assunto
- WHERE: comparação, AND, OR, IN e NOT INSQL e Dados · trilha, etapa 6
- ORDER BY: ordenação com ASC e DESCSQL e Dados · trilha, etapa 7
- Agregação com GROUP BY: SUM, COUNT, AVG, MIN e MAXSQL e Dados · trilha, etapa 8