Voltar para a lista de artigos Artigos
14 minutos de leitura

20 exercícios práticos de SQL WHERE para iniciantes

Índice

No SQL, a cláusula WHERE filtra dados com base em condições definidas. Continue lendo para acompanhar 20 exercícios práticos de WHERE com explicações e soluções fáceis para iniciantes.

Este artigo analisará alguns de nossos exercícios de SQL WHERE. Começaremos explicando a sintaxe básica e, em seguida, examinaremos 20 exercícios fáceis para iniciantes, provenientes dos cursos de SQL listados abaixo. Esses exercícios abrangem os principais usos da cláusula WHERE e são perfeitos para praticar suas habilidades em SQL. Você encontrará mais informações nesses cursos:

Cada curso tem seções separadas para diferentes tópicos de SQL e usa um banco de dados diferente para que você possa praticar SQL. A prática leva à perfeição e é a melhor maneira de elevar suas habilidades em SQL a um novo patamar.

Sem mais delongas, vamos começar.

Fundamentos da cláusula SQL WHERE

A cláusula SQL WHERE define condições para a filtragem de dados. Em outras palavras, ela permite a recuperação apenas dos dados que atendem a critérios específicos. Ao incluir a cláusula WHERE na instrução SELECT, UPDATE, DELETE ou em outra instrução SQL, o conjunto de dados de saída pode ser restringido para incluir somente os dados relevantes.

A filtragem de dados é essencial para o gerenciamento e a análise eficientes dos dados. Ela permite extrair somente as informações necessárias de grandes conjuntos de dados, reduzindo o volume de dados processados e melhorando o desempenho da consulta.

A cláusula WHERE utiliza várias ferramentas para comparar e filtrar dados; elas incluem operadores de comparação, correspondência de padrões para comparar valores com padrões específicos e operadores lógicos para combinar várias condições.

Na declaração SELECT, a cláusula WHERE vem depois das cláusulas SELECT e FROM:

SELECT id, name, age
FROM persons
WHERE age > 18;

Revisão rápida: A cláusula SELECT lista as colunas a serem apresentadas na saída e a cláusula FROM define a tabela da qual os dados são consultados. A cláusula WHERE especifica a condição do filtro. Aqui, selecionamos somente as pessoas cuja idade é superior a 18 anos. Você pode saber mais sobre como escrever a cláusula WHERE no SQL aqui.

As seções a seguir contêm exercícios práticos de SQL WHERE que abrangem os seguintes aplicativos:

  • Filtragem de valores numéricos.
  • Filtragem de valores de texto.
  • Filtragem de valores booleanos.
  • Filtragem de valores NULL.
  • Combinação de várias condições.

Para ter acesso ao ambiente de prática, bancos de dados de amostra e ainda mais prática no site WHERE, recomendo que você se inscreva no(s) curso(s) completo(s).

Prática do SQL WHERE com valores numéricos

Os exercícios desta seção são provenientes do curso Trilha de Práticas em SQL: University. Aqui está o diagrama do banco de dados da universidade usado nos exercícios a seguir:

Isso é muito curto para ser seu próprio título H2. Recomendo adicioná-lo à cláusula WHERE Essentials H2 se você não quiser que ele faça parte do título Numerical Exercises H2.

Exercícios práticos de SQL WHERE para iniciantes

Exercício 1: Exibir informações de um professor específico

Pergunta: Exibir todos os dados do professor cujo ID é igual a 8.

Solução:

SELECT *
FROM lecturer
WHERE id = 8;

Explicação: Como queremos exibir todos os dados desse professor, selecionamos todas as colunas da tabela lecturer tabela. Isso é feito com SELECT * FROM lecturer.

Estamos interessados nos dados do professor com ID 8. Portanto, especificamos isso como uma condição na cláusula WHERE: id = 8.

Exercício 2: Selecionar alunos com pontuação igual ou superior a 95

Pergunta: Exiba o ID do aluno, a nota final e a nota por letra para cada matrícula no curso em que a nota final do aluno foi 95 ou superior.

Solução:

SELECT
  student_id,
  final_grade,
  course_letter_grade
FROM course_enrollment
WHERE final_grade >= 95;

Explicação: Aqui, queremos exibir o ID do aluno, a nota final e a nota com letras para cada matrícula no curso. Portanto, selecionamos somente essas colunas da tabela course_enrollment tabela.

Queremos gerar somente as linhas de dados em que a nota final seja igual ou maior que 95. Para isso, definimos uma condição na cláusula WHERE como final_grade >= 95.

Exercício 3: Selecionar todos os alunos, exceto um

Pergunta: Exibir todos os dados dos alunos com um ID diferente de 1.

Solução:

SELECT *
FROM student
WHERE id != 1;

Explicação: Novamente, queremos selecionar todos os dados da tabela student portanto, usamos o sinal de asterisco (*) que representa todas as colunas disponíveis.

Como queremos exibir os dados de todos os alunos , exceto aquele com o ID 1, definimos uma condição na cláusula WHERE para que o ID não seja igual a 1: id != 1.

Exercício 4: Listar todos os cursos com menos de 3 ECTS

Pergunta: Mostre todos os cursos com menos de 3 pontos ECTS. Exiba duas colunas: title e ects_points.

Solução:

SELECT
  title,
  ects_points
FROM course
WHERE ects_points < 3;

Explicação: Selecionamos os títulos dos cursos e o valor do curso em pontos ECTS na tabela course tabela. Para exibir somente os cursos com valor inferior a 3 pontos ECTS, definimos a condição da cláusula WHERE como ects_points < 3.

Exercícios de SQL WHERE com valores de texto

Os exercícios desta seção são provenientes do curso Trilha de Práticas em SQL: Store. Aqui está o diagrama do banco de dados da loja :

Exercícios práticos de SQL WHERE para iniciantes

Exercício 5: Localizar uma descrição de categoria de produto

Pergunta: Encontre a descrição da categoria com o nome "Alcohol" (Álcool).

Solução:

SELECT description
FROM category
WHERE name = 'Alcohol';

Explicação: Queremos exibir uma descrição de uma categoria de produto, portanto, selecionamos a coluna description da tabela category tabela. Como estamos interessados na descrição da categoria álcool, definimos a condição na cláusula WHERE como name = 'Alcohol'.

Observe que os literais de cadeia de caracteres ('Alcohol') devem ser colocados entre aspas simples (') no SQL.

Exercício 6: Listar todos os clientes cujo e-mail corresponde ao padrão

Pergunta: Exibir todos os dados dos clientes cujos e-mails terminam com '.com'.

Solução:

SELECT *
FROM customer
WHERE contact_email LIKE '%.com';

Explicação: Aqui, selecionamos todos os clientes da tabela customer tabela.

Queremos listar apenas os clientes cujo endereço de e-mail termina com '.com'. Para isso, usaremos a correspondência de padrões. Na cláusula WHERE, definimos uma condição como contact_email LIKE '%.com'. Na correspondência de padrões SQL, o sinal % representa qualquer sequência de caracteres.

O operador LIKE é usado para comparar seu operando esquerdo (geralmente o valor da coluna) com seu operando direito (o padrão a ser correspondido). Se o valor corresponder ao padrão, a condição é aprovada; caso contrário, ela falha.

Você pode saber mais sobre como usar o LIKE no SQL aqui.

Exercício 7: Localizar funcionários cujo sobrenome corresponde ao padrão

Pergunta: Você não se lembra exatamente do sobrenome do funcionário. Era Mixer, Fixer, Bixer ou qualquer outro? Exiba os dados de todos os funcionários cujo sobrenome começa com uma letra e é seguido por "ixer".

Solução:

SELECT *
FROM employee
WHERE last_name LIKE '_ixer';

Explicação: Selecionamos todas as colunas da tabela employee tabela.

Como queremos encontrar os funcionários cujo sobrenome termina com "ixer", usamos novamente a correspondência de padrões. Na cláusula WHERE, definimos a condição como last_name LIKE '_ixer'. O sinal _ representa um caractere.

Exercício 8: Listar todos os produtos em que o nome contém um traço

Pergunta: Mostre todos os dados dos produtos em que o nome contém um traço (-).

Solução:

SELECT *
FROM product
WHERE product_name LIKE '%-%';

Explicação: Selecionamos todas as colunas da tabela product tabela. Na cláusula WHERE, definimos a condição como product_name LIKE '%-%'. O sinal % representa qualquer sequência ou número de caracteres.

Exercícios práticos de WHERE com valores booleanos

Os exercícios desta seção foram retirados do curso Trilha de Práticas em SQL: University. Aqui está o diagrama do banco de dados da universidade:

Exercícios práticos de SQL WHERE para iniciantes

Exercício 9: Listar todos os cursos que terminam com um exame final

Pergunta: Exiba todos os dados dos cursos que têm exames finais (coluna has_exam). Observe que a coluna has_exam armazena valores booleanos (true ou false).

Solução:

SELECT *
FROM course
WHERE has_exam IS TRUE;

Explicação: Selecionamos todas as colunas da tabela course tabela.

Como queremos listar somente os cursos que terminam com um exame final, definimos a condição WHERE como has_exam IS TRUE.

Exercício 10: Listar todos os cursos que não têm um projeto final

Pergunta: Mostre todos os dados dos cursos que não têm um projeto final (coluna has_project). Observe que a coluna has_project armazena valores booleanos (true ou false).

Solução:

SELECT *
FROM course
WHERE has_project IS FALSE;

Explicação: Novamente, selecionamos todas as colunas da tabela course tabela. Desta vez, queremos listar todos os cursos que não têm um projeto final. Definimos a condição da cláusula WHERE como has_project IS FALSE.

Exercício 11: Selecionar todos os alunos que foram aprovados em suas provas finais

Pergunta: Exiba os IDs de todos os alunos que foram aprovados no exame final. Inclua a coluna passed em seus resultados. Observe que a coluna aprovada armazena valores booleanos (true ou false).

Solução:

SELECT
  student_id,
  passed
FROM course_enrollment
WHERE passed IS TRUE;

Explicação: Aqui, queremos exibir a coluna que contém os IDs dos alunos e a coluna que contém informações sobre se o aluno foi aprovado nas provas finais. Selecionamos essas colunas na tabela course_enrollment tabela.

Na cláusula WHERE, definimos a condição passed IS TRUE para filtrar somente os alunos que foram aprovados nas provas finais.

Exercício 12: Selecionar alunos que foram reprovados nas provas finais

Pergunta: Exiba os IDs e as notas finais de todos os alunos que foram reprovados no exame final. Lembre-se de que a coluna passed armazena valores booleanos (true ou false).

Solução:

SELECT
  student_id,
  final_grade
FROM course_enrollment
WHERE passed IS FALSE;

Explicação: Aqui queremos exibir as colunas que contêm os IDs dos alunos e a nota final. Selecionamos essas colunas na tabela course_enrollment tabela. Na cláusula WHERE, definimos a condição aprovada em IS FALSE para filtrar somente os alunos que foram reprovados nas provas finais.

Prática de WHERE com valores NULL

Os exercícios desta seção foram retirados do curso Trilha de Práticas em SQL: Store. Aqui está o diagrama do banco de dados da loja:

Exercícios práticos de SQL WHERE para iniciantes

Exercício 13: Selecionar categorias sem descrições

Pergunta: Exibir todas as categorias que não têm descrição.

Solução:

SELECT *
FROM category
WHERE description IS NULL;

Explicação: Selecionamos todas as colunas da tabela category que armazena as categorias de produtos.

Como queremos listar apenas as categorias que não têm descrição, devemos fornecer a condição WHERE description IS NULL ; NULL significa que não há valor nessa coluna.

Talvez você se pergunte por que usamos IS NULL em vez de = NULL. Isso ocorre porque NULL significa nenhum valor; não podemos verificar se o valor é igual a NULL porque não há nenhum valor para compararmos. IS NULL nos permite verificar se um valor está (ou não) lá.

Exercício 14: Localizar todos os clientes de uma empresa

Pergunta: Exibir todos os dados dos clientes cujo nome da empresa não seja NULL.

Solução:

SELECT *
FROM customer
WHERE company_name IS NOT NULL;

Explicação: Selecionamos todas as colunas da tabela customer tabela. Como queremos listar todos os clientes que estão associados a uma empresa, definimos a condição da cláusula WHERE como company_name IS NOT NULL. Isso é bastante autoexplicativo, pois é o que diríamos em inglês simples.

Exercício 15: Localizar compras com um endereço desconhecido

Pergunta: Exibir o ID da compra, o ID do cliente e o ID do funcionário para compras com endereço de entrega desconhecido.

Solução:

SELECT
  purchase_id,
  customer_id,
  employee_id
FROM purchase
WHERE ship_address IS NULL;

Explicação: Queremos exibir o ID da compra, o ID do cliente e o ID do funcionário, portanto, selecionamos essas colunas na tabela purchase tabela.

Em seguida, queremos listar somente as compras com endereço de entrega desconhecido, o que equivale ao valor NULL. Portanto, a condição da cláusula WHERE é ship_address IS NULL.

Exercício 16: Listar todas as categorias pai

Pergunta: Exibir os nomes de todas as categorias pai, que são categorias que não têm nenhuma categoria pai.

Solução:

SELECT name
FROM category
WHERE parent_category_id IS NULL;

Explicação: Queremos exibir os nomes das categorias, portanto, selecionamos a coluna name da tabela de categorias.

Para selecionar somente as categorias pai, definimos a condição WHERE como parent_category_id IS NULL. Isso segue a instrução de que as categorias pai são aquelas sem nenhuma categoria pai atribuída.

Uso de WHERE com várias condições de filtragem

Os exercícios desta seção foram retirados do curso Trilha de Práticas em SQL: Blog. Aqui está o diagrama do banco de dados:

Exercícios práticos de SQL WHERE para iniciantes

Exercício 17: Selecionar todos os artigos de março de 2020

Pergunta: Exiba os URLs e os títulos de todos os artigos (as colunas url e title ) cuja data de publicação seja em março de 2020.

Solução:

SELECT
  url,
  title
FROM article
WHERE publication_date >= '2020-03-01' 
AND publication_date < '2020-04-01';

Explicação: Queremos exibir os URLs e os títulos dos artigos, portanto, selecionamos as colunas apropriadas na tabela article tabela.

Como estamos interessados apenas nos artigos de março de 2020, definimos a condição da cláusula WHERE para garantir que cada artigo selecionado tenha sido publicado em ou após 1º de março de 2020 e antes de 1º de abril de 2020. Usamos o operador lógico AND para unir essas condições: publication_date >= '2020-03-01' AND publication_date < '2020-04-01'.

As datas geralmente são armazenadas em tipos de dados especiais, como DATE, DATETIME, ou TIMESTAMP. Para comparar uma coluna de data com um valor de data específico, usamos operadores de comparação padrão, como =, <, >, <=, >=, ou BETWEEN. O formato de data no SQL geralmente é YYYY-MM-DD, que significa ano, mês e dia. Os valores das partes da data são separados por hífens.

Observe que você deve colocar os literais de comparação de data entre aspas simples (publication_date >= '2020-03-01').

Exercício 18: Localizar o tráfego de junho em um determinado artigo

Pergunta: Encontre informações de tráfego para o artigo '/blog/puppy-training-techniques/' em junho de 2020. Exiba o endereço visit_date e o número de visualizações nesse dia.

Solução:

SELECT 
  visit_date,
  views
FROM article_traffic
WHERE url = '/blog/puppy-training-techniques/'
AND visit_date >= '2020-06-01' 
AND visit_date < '2020-07-01';

Explicação: Selecionamos a data da visita e o número de visualizações por dia na tabela article_traffic tabela.

Queremos exibir o tráfego para um artigo específico. Portanto, filtramos esse artigo usando seu URL: url = '/blog/puppy-training-techniques/'. Observe as aspas simples ao redor do valor de comparação.

Como estamos interessados no tráfego de junho de 2020, impomos mais duas condições WHERE na coluna visit_date. Elas retornarão somente informações de tráfego de junho: visit_date >= '2020-06-01' AND visit_date < '2020-07-01'.

Desta vez, a cláusula WHERE inclui três condições, todas combinadas usando os operadores lógicos AND.

Exercício 19: Listar artigos para um autor e uma categoria

Pergunta: Retorne o URL de todos os artigos de Lewis Goodwin (ID do autor = 16) da categoria 3 ("Dog Health") ou da categoria 6 ("Dog Gift Ideas").

Solução:

SELECT url
FROM article
WHERE author_id = 16
AND (article_category_id = 3 OR article_category_id = 6);

Explicação: Queremos exibir o URL de artigos específicos da tabela article tabela.

Primeiro, queremos listar os artigos escritos pelo autor com um ID de 16. Essa é a primeira condição da cláusula WHERE: author_id = 16.

Também queremos listar somente os artigos da categoria 3 ou da categoria 6. Precisamos criar uma condição composta com o operador lógico OR e colocá-la entre parênteses: (article_category_id = 3 OR article_category_id = 6).

Por fim, combinamos essas duas condições com o operador lógico AND.

Exercício 20: Mostrar dados de tráfego de artigos específicos

Pergunta: Retorne todos os dados de tráfego de artigos em 1º de dezembro de 2020 em que o número de visualizações esteja entre 50 e 100, inclusive (ou seja, 50 <= visualizações <= 100).

Solução:

SELECT *
FROM article_traffic
WHERE views <= 100
AND views >= 50
AND visit_date = '2020-12-01';

Explicação: Selecionamos todas as colunas da tabela article_traffic tabela.

Queremos ver os dados de tráfego de artigos com entre 50 e 100 visualizações, portanto, definimos a condição combinada da cláusula WHERE como views <= 100 AND views >= 50.

Como estamos interessados nos dados de 1º de dezembro de 2020, definimos outra condição da cláusula WHERE: visit_date = '2020-12-01'.

Prática de consulta com o SQL WHERE!

Este artigo apresentou todos os conceitos básicos da cláusula SQL WHERE. Os exercícios práticos abordaram a filtragem de valores numéricos, de texto, booleanos e NULL e a combinação de várias condições para opções de filtragem mais complexas. Você pode encontrar mais artigos com exercícios práticos de SQL aqui.

Todos esses cursos estão disponíveis em nossa trilha Trilha de Práticas em SQL , onde você encontrará ainda mais prática de SQL. Para obter a melhor opção de prática, nosso pacote Ilimitado Vitalício SQL Package oferece acesso vitalício a todos os nossos cursos atuais e futuros com uma única compra.

A prática leva à perfeição! Boa jornada SQL!