Voltar para a lista de artigos Artigos
9 minutos de leitura

10 exercícios práticos de SQL para iniciantes com soluções

Resolva esses dez problemas práticos de SQL e teste seu conhecimento sobre SQL!

Este artigo trata da prática de SQL. Essa é a melhor maneira de aprender SQL. Mostramos dez exercícios práticos de SQL em que você precisa aplicar conceitos essenciais de SQL. Se você for um novato em SQL, não precisa se preocupar - esses exemplos são para iniciantes.

Use-os como prática ou como uma forma de aprender novos conceitos de SQL. Para obter mais informações teóricas e (ainda mais!) exercícios, há o nosso SQL para Iniciantes curso interativo. Ele ensina como selecionar dados de uma ou mais tabelas, agregar e agrupar dados, escrever subconsultas e usar operações de conjunto. O curso é composto por 129 exercícios interativos, portanto, não faltam oportunidades para praticar SQL, especialmente se você adicionar a ele algumas das 12 maneiras de aprender SQL on-line.

Por falar em prática, vamos começar com nossos exercícios!

O conjunto de dados

A questão é sempre onde encontrar dados para praticar SQL. Usaremos nosso conjunto de dados para todos os exercícios. Mas não é preciso se limitar a ele - você pode encontrar outros conjuntos de dados on-line gratuitos para praticar SQL.

Nosso conjunto de dados consiste em duas tabelas.

A tabela distribution_companies lista as empresas de distribuição de filmes com as seguintes colunas:

  • id - O ID da empresa de distribuição. Essa é a chave primária da tabela.
  • company_name - O nome da empresa de distribuição.

A tabela é mostrada abaixo.

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

A segunda tabela é movies. Estas são as colunas:

  • id - O ID do filme. Essa é a chave primária da tabela.
  • movie_title - O título do filme.
  • imdb_rating - A classificação do filme na IMDb.
  • year_released - O ano em que o filme foi lançado.
  • budget - O orçamento do filme em milhões de dólares.
  • box_office - Os ganhos do filme em milhões de dólares.
  • distribution_company_id - O ID da empresa de distribuição, fazendo referência à tabela distribution_companies (chave estrangeira).
  • language - O(s) idioma(s) falado(s) no filme.

A tabela é mostrada abaixo.

idmovie_titleimdb_ratingyear_releasedbudgetbox_officedistribution_company_idlanguage
1The Shawshank Redemption9.2199425.0073.301English
2The Godfather9.219727.20291.002English
3The Dark Knight9.02008185.001,006.003English
4The Godfather Part II9.0197413.0093.002English, Sicilian
512 Angry Men9.019570.342.004English
6Schindler's List8.9199322.00322.205English, German, Yiddish
7The Lord of the Rings: The Return of the King8.9200394.001,146.006English
8Pulp Fiction8.819948.50213.907English
9The Lord of the Rings: The Fellowship of the Ring8.8200193.00898.206English
10The Good, the Bad and the Ugly8.819661.2038.908English, Italian, Spanish

Exercício 1: Seleção de todas as colunas de uma tabela

Exercício: Selecionar todos os dados da tabela distribution_companies.

Solução:

SELECT *
FROM distribution_companies;

Explicação da solução: Selecione os dados usando a instrução SELECT. Para selecionar todas as colunas, use um asterisco (*). A tabela da qual os dados são selecionados é especificada na cláusula FROM.

Saída da solução:

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

Exercício 2: Seleção de algumas colunas em uma tabela

Exercício: Para cada filme, selecione o título do filme, a classificação IMDb e o ano em que o filme foi lançado.

Solução:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies;

Explicação da solução: Liste todas as colunas necessárias (movie_title, imdb_rating e year_released) na declaração SELECT, separadas por vírgula. Faça referência à tabela movies na cláusula FROM.

Resultado da solução:

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972
The Dark Knight9.02008
The Godfather Part II9.01974
12 Angry Men9.01957
Schindler's List8.91993
The Lord of the Rings: The Return of the King8.92003
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Good, the Bad and the Ugly8.81966

Exercício 3: Seleção de algumas colunas e filtragem de dados numéricos em WHERE

Exercício: Selecione as colunas movie_title e box_office na tabela movies. Mostre somente os filmes com ganhos acima de US$ 300 milhões.

Solução:

SELECT
  movie_title,
  box_office
FROM movies
WHERE box_office > 300;

Explicação da solução: Liste as colunas em SELECT e faça referência à tabela em FROM. Use uma cláusula WHERE para filtrar os dados - escreva a coluna box_office e use o operador "maior que" (>) para mostrar somente os valores acima de US$ 300 milhões.

Saída da solução:

movie_titlebox_office
The Dark Knight1,006.00
Schindler's List322.20
The Lord of the Rings: The Return of the King1,146.00
The Lord of the Rings: The Fellowship of the Ring898.20

Exercício 4: Seleção de algumas colunas e filtragem de dados de texto em WHERE

Exercício: Selecione as colunas movie_title, imdb_rating e year_released da tabela movies. Mostre os filmes que têm a palavra "Godfather" no título.

Solução:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE movie_title LIKE '%Godfather%';

Explicação da solução: Liste as colunas em SELECT e faça referência à tabela na cláusula FROM. Use uma cláusula WHERE para filtrar os dados. Depois de escrever o nome da coluna, use o operador lógico LIKE para procurar "Godfather" no título do filme, escrito entre aspas simples. Para localizar a palavra em qualquer lugar do título do filme, coloque o caractere curinga (%) antes e depois da palavra.

Saída da solução:

movie_titleimdb_ratingyear_released
The Godfather9.21972
The Godfather Part II9.01974

Exercício 5: Seleção de algumas colunas e filtragem de dados usando duas condições em WHERE

Exercício: Selecione as colunas movie_title, imdb_rating e year_released da tabela movies. Mostre os filmes que foram lançados antes de 2001 e que tiveram uma classificação acima de 9.

Solução:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released < 2001 AND imdb_rating > 9;

Explicação da solução: Liste as colunas em SELECT e faça referência à tabela em FROM. Defina a primeira condição de que o ano de lançamento seja anterior a 2001 usando o operador "less than" (<). Para adicionar outra condição, use o operador lógico AND. Use a mesma lógica da primeira condição, desta vez usando o operador "maior que" com a coluna imdb_rating.

Saída da solução:

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972

Exercício 6: Filtragem de dados usando WHERE e classificando o resultado

Exercício: Selecione as colunas movie_title, imdb_rating e year_released da tabela movies. Mostre os filmes lançados depois de 1991. Classifique a saída pelo ano de lançamento em ordem crescente.

Solução:

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released > 1991
ORDER BY year_released ASC;

Explicação da solução: Liste as colunas em SELECT e faça referência à tabela em FROM. Filtre os dados com WHERE aplicando o operador "maior que" à coluna year_released. Para classificar os dados, use uma cláusula ORDER BY e escreva o nome da coluna pela qual você deseja classificar. O tipo de classificação é especificado escrevendo ASC (ascendente) ou DESC (descendente). Se o tipo for omitido, a saída será classificada em ordem crescente por padrão.

Saída da solução:

movie_titleimdb_ratingyear_released
Schindler's List8.91993
The Shawshank Redemption9.21994
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Lord of the Rings: The Return of the King8.92003
The Dark Knight9.02008

Exercício 7: Agrupamento de dados em uma coluna

Exercício: Mostre a contagem de filmes por cada categoria de idioma.

Solução:

SELECT
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY language;

Explicação da solução: Selecione a coluna language na tabela movies. Para contar o número de filmes, use a função de agregação COUNT(). Use o asterisco (*) para contar as linhas, o que equivale à contagem de filmes. Para dar um nome a essa coluna, use a palavra-chave AS seguida do nome desejado. Para mostrar a contagem por idioma, você precisa agrupar os dados por ele, portanto, escreva a coluna language na cláusula GROUP BY.

Saída da solução:

languagenumber_of_movies
English7
English, German, Yiddish1
English, Sicilian1
English, Italian, Spanish1

Exercício 8: Agrupamento de dados por várias colunas

Exercício: Mostrar a contagem de filmes por ano de lançamento e idioma. Classifique os resultados pela data de lançamento em ordem crescente.

Solução:

SELECT
  year_released,
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY year_released, language
ORDER BY year_released ASC;

Explicação da solução: Liste as colunas year_released e language da tabela movies em SELECT. Use COUNT(*) para contar o número de filmes e dê um nome a essa coluna usando a palavra-chave AS. Especifique as colunas pelas quais você deseja agrupar na cláusula GROUP BY. Separe cada nome de coluna com uma vírgula. Classifique a saída usando ORDER BY com a coluna year_released e a palavra-chave ASC.

Saída da solução:

year_releasedlanguagenumber_of_movies
1957English1
1966English, Italian, Spanish1
1972English1
1974English, Sicilian1
1993English, German, Yiddish1
1994English2
2001English1
2003English1
2008English1

Exercício 9: Filtragem de dados após o agrupamento

Exercício: Mostre os idiomas falados e o orçamento médio dos filmes por categoria de idioma. Mostre somente os idiomas com um orçamento médio acima de US$ 50 milhões.

Solução:

SELECT
  language,
  AVG(budget) AS movie_budget
FROM movies
GROUP BY language
HAVING AVG(budget) > 50;

Explicação da solução: Selecione a coluna language na tabela movies. Para calcular o orçamento médio, use a função de agregação AVG() com a coluna budget entre parênteses. Nomeie a coluna na saída usando a palavra-chave AS. Agrupe os dados por classificação usando GROUP BY. Para filtrar os dados após o agrupamento, use uma cláusula HAVING. Nela, use a mesma construção AVG() que em SELECT e defina os valores como sendo acima de 50 usando o operador "greater than".

Saída da solução:

languagemovie_budget
English59.01

Exercício 10: Seleção de colunas de duas tabelas

Exercício: Mostrar títulos de filmes da tabela moviescada um com o nome de sua empresa de distribuição.

Solução:

SELECT
  movie_title,
  company_name
FROM distribution_companies dc
JOIN movies m
ON dc.id = m.distribution_company_id;

Explicação da solução: Liste as colunas movie_title e company_name em SELECT. Na cláusula FROM, faça referência à tabela distribution_companies. Dê a ela um alias dc para encurtar seu nome e usá-lo posteriormente. A palavra-chave AS é omitida aqui; você pode usá-la se desejar. Para acessar os dados da outra tabela, use JOIN (também pode ser escrita como INNER JOIN) e escreva o nome da tabela depois dela. Dê também um alias a essa tabela. A união usada aqui é um tipo de união interna; ela retorna somente as linhas que correspondem à condição de união especificada na cláusula ON. As tabelas são unidas quando a coluna id da tabela distribution_companies é igual à coluna distribution_company_id da tabela movies. Para especificar qual coluna é de qual tabela, use o alias correspondente de cada tabela.

Saída da solução:

movie_titlecompany_name
The Shawshank RedemptionColumbia Pictures
The Godfather Part IIParamount Pictures
The GodfatherParamount Pictures
The Dark KnightWarner Bros. Pictures
12 Angry MenUnited Artists
Schindler's ListUniversal Pictures
The Lord of the Rings: The Fellowship of the RingNew Line Cinema
The Lord of the Rings: The Return of the KingNew Line Cinema
Pulp FictionMiramax Films
The Good, the Bad and the UglyProduzioni Europee Associate

Isso foi divertido! Agora, é hora de fazer Trilha de Práticas em SQL por conta própria!

Estes dez exercícios práticos de SQL lhe dão uma ideia de como é praticar SQL. Não importa se você está no nível iniciante, intermediário ou avançado, é a mesma coisa. O que muda é a complexidade dos problemas que você resolve e do código que escreve.

Procure mais desafios no SQL para Iniciantes curso e na trilha Monthly Trilha de Práticas em SQL. Ambos são excelentes para sua prática de SQL on-line. Isso é verdade, especialmente se você não tiver a oportunidade de usar o SQL diariamente em seu trabalho.

Portanto, não tente testar quanto tempo leva para esquecer o que você já sabia sobre SQL! Use todas as oportunidades para resolver o maior número possível de problemas práticos de SQL.