22nd May 2023 9 minutos de leitura 10 exercícios práticos de SQL para iniciantes com soluções Tihomir Babic sql aprender sql prática on-line Índice O conjunto de dados Exercício 1: Seleção de todas as colunas de uma tabela Exercício 2: Seleção de algumas colunas em uma tabela Exercício 3: Seleção de algumas colunas e filtragem de dados numéricos em WHERE Exercício 4: Seleção de algumas colunas e filtragem de dados de texto em WHERE Exercício 5: Seleção de algumas colunas e filtragem de dados usando duas condições em WHERE Exercício 6: Filtragem de dados usando WHERE e classificando o resultado Exercício 7: Agrupamento de dados em uma coluna Exercício 8: Agrupamento de dados por várias colunas Exercício 9: Filtragem de dados após o agrupamento Exercício 10: Seleção de colunas de duas tabelas Isso foi divertido! Agora, é hora de fazer Trilha de Práticas em SQL por conta própria! 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. Tags: sql aprender sql prática on-line