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.
- Abra o terminal e inicie o serviço MySQL usando o seguinte comando:
sudo service mysql start
- Acesse o cliente MySQL usando o seguinte comando:
sudo mysql
- Importe os dados do script
labex_db_info.sqlpara 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.
- Abra o arquivo
searchForFavoriteCourses.sql. - 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".
- No prompt do MySQL, execute o seguinte comando para executar o script
searchForFavoriteCourses.sql:
SOURCE /home/labex/project/searchForFavoriteCourses.sql;
- 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.
