Pesquisar Cursos Favoritos

SQLBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como criar uma tabela "favoritos" em um banco de dados MySQL. A tabela "favoritos" armazenará os cursos com o maior tempo de estudo para cada usuário na tabela "usercourse".

👀 Visualização

MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | English     |        101 |
|  3 | user_02   | Chinese     |        102 |
|  4 | user_03   | Chemical    |        103 |
|  5 | user_04   | Physics     |        104 |
|  6 | user_05   | Biology     |        105 |
|  7 | user_06   | Painting    |        106 |
|  8 | user_07   | Music       |        107 |
|  9 | user_08   | Computer    |        108 |
| 10 | user_09   | History     |        109 |
| 11 | user_10   | Math        |        110 |
+----+-----------+-------------+------------+
10 rows in set (0.000 sec)

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como acessar o banco de dados MySQL usando o comando sudo
  • Como importar dados de um script SQL para o banco de dados MySQL
  • Como criar uma nova tabela com colunas específicas usando a instrução CREATE TABLE AS
  • Como unir múltiplas tabelas para recuperar os dados necessários para a tabela "favoritos"

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Entender como gerenciar um banco de dados MySQL usando a linha de comando
  • Implementar uma consulta SQL para criar uma nova tabela com base em dados de múltiplas tabelas existentes
  • Aplicar o conceito de encontrar o valor máximo para cada grupo em uma tabela
  • Demonstrar sua capacidade de trabalhar com instruções SQL para realizar uma tarefa específica de gerenciamento de dados

Acessar o MySQL e Importar o Banco de Dados

Nesta etapa, você aprenderá como acessar o banco de dados MySQL e importar os dados necessários.

  1. Abra o terminal e inicie o serviço MySQL usando o seguinte comando:
sudo service mysql start
  1. Acesse o cliente MySQL usando o seguinte comando:
sudo mysql
  1. Importe os dados do script labex_db_info.sql para o MySQL:
SOURCE /home/labex/project/labex_db_info.sql;

Isso importará os dados necessários para o banco de dados MySQL.

Criar a Tabela de Favoritos

Nesta etapa, você criará a tabela "favoritos", que armazenará os cursos com o maior tempo de estudo para cada usuário.

  1. Abra o arquivo searchForFavoriteCourses.sql.
  2. No arquivo searchForFavoriteCourses.sql, crie a tabela "favoritos" com as seguintes colunas:
    • id (chave primária - primary key)
    • user_name (nome de usuário)
    • course_name (nome do curso)
    • study_time (tempo de estudo)
create table favorite as
SELECT t1.id, t1.user_name, t2.course_name, t1.study_time
FROM (
         SELECT a.id, a.course_id, a.study_time, b.user_name
         FROM (
                  SELECT t0.id, t0.user_id, t0.course_id, t0.study_time
                  FROM usercourse t0
                  INNER JOIN (
                      SELECT user_id, MAX(study_time) AS max_study_time
                      FROM usercourse
                      GROUP BY user_id
                  ) t_max ON t0.user_id = t_max.user_id AND t0.study_time >= t_max.max_study_time
              ) a LEFT JOIN user b ON a.user_id = b.user_id
) t1 LEFT JOIN course t2 ON t1.course_id = t2.course_id

Esta consulta cria a tabela "favoritos" juntando as tabelas "usercourse" e "user" para obter o nome do usuário e, em seguida, juntando a tabela "course" para obter o nome do curso. A tabela armazena os cursos com o maior tempo de estudo para cada usuário.

Verificar a Tabela de Favoritos

Nesta etapa, você verificará o conteúdo da tabela "favoritos".

  1. No prompt do MySQL, execute o seguinte comando para executar o script searchForFavoriteCourses.sql:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
  1. Execute a seguinte consulta para exibir as primeiras 10 linhas da tabela "favoritos":
MariaDB [labex]> select * from favorite limit 10;
+----+-----------+-------------+------------+
| id | user_name | course_name | study_time |
+----+-----------+-------------+------------+
|  2 | user_01   | English     |        101 |
|  3 | user_02   | Chinese     |        102 |
|  4 | user_03   | Chemical    |        103 |
|  5 | user_04   | Physics     |        104 |
|  6 | user_05   | Biology     |        105 |
|  7 | user_06   | Painting    |        106 |
|  8 | user_07   | Music       |        107 |
|  9 | user_08   | Computer    |        108 |
| 10 | user_09   | History     |        109 |
| 11 | user_10   | Math        |        110 |
+----+-----------+-------------+------------+
10 rows in set (0.000 sec)

Esta consulta exibirá as primeiras 10 linhas da tabela "favoritos", mostrando o nome do usuário, o nome do curso e o tempo de estudo para cada registro.

Parabéns! Você criou com sucesso a tabela "favoritos" e verificou seu conteúdo.

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar