Olá, tudo bem? Meu nome é Victorino Vila e boas-vindas a mais um curso na formação de MySQL com IA!
Audiodescrição: Victorino Vila é uma pessoa de pele clara e olhos escuros. Seus cabelos são curtos, lisos e grisalhos. Usa barba e bigode e está com uma camiseta azul marinho. Ao fundo, parede com iluminação verde e lilás. À direita, uma mesa com mini vasos.
Este curso dá continuidade à nossa jornada, agora com um enfoque em um aspecto essencial para qualquer sistema de informação: consultas e relatórios.
Utilizaremos, como sempre, a Escola BitByte como estudo de caso prático. A partir dela, serão implementados os relatórios que auxiliarão a equipe administrativa da escola no monitoramento do desempenho e na gestão acadêmica. Além disso, os estudantes poderão consultar relatórios que apresentarão seu desempenho individual dentro da instituição.
No curso anterior desta formação, mencionamos que uma outra equipe está desenvolvendo o sistema responsável pela interface entre a pessoa usuária e o banco de dados. Essa equipe tem a responsabilidade de disponibilizar no sistema relatórios claros e precisos, gerados por meio de consultas SQL no banco de dados da escola. É nesse ponto que nossa atuação se torna fundamental.
A nossa missão, neste curso, será implementar essas consultas, viabilizando a geração automática de relatórios para o sistema.
Nos relatórios, serão abrangidas informações como:
Todas essas informações serão consolidadas em relatórios de desempenho e indicadores estratégicos no RP. Nossa função é exclusivamente construir as consultas e fornecer os dados extraídos do banco de dados.
Um ponto crucial que deve ser destacado: assim como em cursos anteriores, continuaremos neste curso integrando MySQL à inteligência artificial. O objetivo dessa abordagem é claro: acelerar a entrega de nosso trabalho, facilitar a criação de consultas SQL complexas e, naturalmente, reduzir erros, aumentando assim nossa produtividade. A combinação de MySQL com IA se consolidou como uma ferramenta indispensável para pessoas profissionais que atuam com banco de dados.
Se esse conhecimento for aliado à expertise em linguagens de automação, como Python, que já foi abordado em outros cursos desta formação, estará um passo à frente no mercado de trabalho. O profissional que atualmente consegue dominar banco de dados, inteligência artificial e automação por meio de programação está preparado para enfrentar as demandas reais do mercado, oferecendo soluções ágeis, precisas e de alto valor tanto para clientes quanto para empresas.
É com grande satisfação que temos você aqui conosco nesta jornada! Continuaremos juntos e tenho plena confiança de que, ao final deste curso, a pessoa se sentirá mais preparada para enfrentar os desafios relacionados aos sistemas de informação e à análise de dados. Sem mais delongas, iniciaremos o curso! Agradecemos imensamente por sua presença e dedicação. Seguiremos em frente, superando mais esta etapa da formação.
Até o próximo vídeo!
Estamos acompanhando o desenvolvimento do banco de dados da Escola BitByte, utilizando a IA da Gemini para agilizar e aprimorar nossas implementações.
Até o momento, realizamos diversas etapas essenciais. Inicialmente, analisamos as necessidades da escola e, com base nessas informações, projetamos o banco de dados, criando as tabelas com o auxílio da IA. Em seguida, importamos dados externos dos sistemas legados da instituição para o banco de dados.
Por fim, implementamos os processos transacionais, que serão acionados pelo ERP adotado pela empresa. Esses processos foram estabelecidos por meio de procedures, como a inclusão de estudantes, a matrícula de estudantes, a criação de cursos e o registro das respostas dos estudantes, entre outros. À medida que o sistema começou a ser utilizado, a base de dados foi crescendo em volume.
Chegou o momento de concentrarmos nossos esforços nas consultas e relatórios! Essas consultas serão acessadas pelo RP da empresa para gerar relatórios visuais, com gráficos e cores, que possibilitem o acompanhamento do desempenho da escola ao longo do tempo por suas pessoas gestoras. Iniciaremos a implementação de algumas consultas, com base nas solicitações que recebemos, sempre utilizando a IA da Gemini para otimizar o processo.
Começaremos com consultas relacionadas aos cursos e suas seções.
A organização desses dados em cursos e seções é essencial para uma gestão acadêmica eficaz. Precisamos desenvolver relatórios que apresentem os cursos e suas respectivas seções, a fim de compreendermos claramente o que está sendo oferecido aos estudantes da escola.
Nossa tarefa será criar uma consulta SQL que liste todos os cursos disponíveis, juntamente com suas seções, de maneira bem estruturada. Como sempre, a IA da Gemini estará ao nosso lado nesse processo.
Temos um prompt, como é comum em nossos cursos.
Preciso de ajuda para criar uma consulta SQL no banco de dados da escola BitByte. A consulta deve listar todos os cursos disponíveis e suas respectivas seções. A exibição deve incluir:
- Nome do curso
- Título das seções
Os resultados devem ser organizados por curso, e as seções devem estar ordenadas pelo número.
Segue a estrutura das tabelas:
Tabela `cursos`:
- `id_curso` INT
- `nome_curso` VARCHAR(100)
- `tipo_curso` VARCHAR(100)
Tabela `secoes`:
- `id_secao` INT
- `titulo` VARCHAR(100)
- `descricao` TEXT
- `numero_secao` INT
- `id_curso` INT
Por favor, me forneça o SQL para isso.
Analisaremos o prompt e entender como ele está estruturado.
Neste momento do vídeo, o instrutor lê o prompt.
Selecionamos o prompt, copiamos com "Ctrl + C" e colamos na conversa da IA com "Ctrl + V". Podemos colar na mesma conversa do curso anterior.
Como retorno, obtemos:
O retorno abaixo foi parcialmente transcrito:
Consulta SQL para listar cursos e suas seções na BitByte
Entendendo o problema:
Queremos relacionar as tabelas
cursos
eseções
para obter uma lista completa de cursos e suas respectivas seções, ordenadas pelo número da seção.Solução SQL:
SELECT c.nome_curso, s.titulo AS nome_secao FROM cursos c INNER JOIN secoes s ON c.id_curso = s.id_curso ORDER BY c.nome_curso, s.numero_secao;
Explicação:
INNER JOIN
: Essa cláusula combina as linhas das tabelascursos
esecoes
com base no campo comumid_curso
. Isso significa que apenas as seções que pertencem a um curso serão incluídas no resultado.
SELECT
: Seleciona as colunasnome_curso
da tabelacursos
etitulo
da tabelasecoes
(renomeada comonome_secao
para melhor legibilidade).
ORDER BY
: Ordena o resultado primeiro pornome_curso
(em ordem alfabética) e depois pornumero_secao
(em ordem numérica), garantindo que as seções de cada curso sejam listadas na ordem correta.
O objetivo é relacionar as tabelas cursos e seções para obter a lista completa de cursos e suas respectivas seções. A IA nos fornece a consulta SQL e explica que ela combina todas as linhas das tabelas cursos e seções com base no campo id_curso
, garantindo que apenas as seções que pertencem a um curso sejam incluídas no resultado. O comando SELECT
seleciona as colunas a serem exibidas, e o ORDER BY
ordena os dados primeiro pelo nome do curso e depois pelo número da seção.
Vamos copiar essa consulta clicando no ícone na parte superior direita do código e colá-la no banco de dados da escola BitByte (escolabb). Criamos um novo script selecionando o primeiro ícone na parte superior esquerda ("Create a new SQL tab for executing queries", em português, "Crie uma nova aba SQL para executar consultas") e colamos a consulta para verificar se ela funcionará sem erros:
SELECT
c.nome_curso,
s.titulo AS nome_secao
FROM
cursos c
INNER JOIN secoes s ON c.id_curso = s.id_curso
ORDER BY c.nome_curso, s.numero_secao;
Selecionamos a consulta completa e clicamos no ícone de raio (ao colocarmos o cursor sobre esse ícone, temos a mensagem: "Execute the selected portion of the script or everything, if there is no selection", em português, "Execute a parte selecionada do script ou tudo, caso não haja nenhuma seleção.") na parte superior para executar.
É possível que a IA sugira um comando SQL que não funcione, e é por isso que discutimos a importância de ter um conhecimento prévio de MySQL para criticar o resultado da IA.
Este comando permite acessar todos os cursos e as seções correspondentes. Abaixo estão os cursos e as seções fornecidas pela escola:
A tabela abaixo foi parcialmente transcrita:
nome_curso nome_secao Banco de Dados com MySQL Introdução ao MySQL Banco de Dados com MySQL Modelagem de Dados Banco de Dados com MySQL Consultas SQL Desenvolvimento Web com HTML e CSS Estrutura HTML Desenvolvimento Web com HTML e CSS Estilos com CSS Desenvolvimento Web com HTML e CSS Layouts Responsivos Estatísticas para Machine Learn Fundamentos do R Estatísticas para Machine Learn Matemática avançada Front End para iniciantes Tipos de frameworks para Javascript
No próximo vídeo, abordaremos outra consulta relevante: a quantidade de estudantes matriculados por curso. Até lá!
Na aula anterior, criamos uma consulta que listou os cursos disponíveis e suas respectivas seções. Essa consulta estabeleceu uma base sólida para mostrar às pessoas gestoras da escola BitByte quais cursos e seções estão disponíveis.
Agora, avançaremos para um tópico essencial: a quantidade de estudantes matriculados em cada curso. Conhecer o número de matrículas é fundamental para tomar diversas decisões estratégicas e operacionais dentro da escola. Por exemplo, é possível estimar os recursos necessários para atender à demanda de cada estudante e identificar cursos com maior ou menor adesão. Além disso, saber o número de estudantes matriculados permite planejar ações de marketing direcionadas para atrair mais pessoas interessadas.
Entretanto, a consulta anterior que foi realizada não oferece essas informações. O desafio atual, então, é adaptar a consulta SQL para incluir a contagem de estudantes matriculados em cada curso. Também será necessário filtrar essas matrículas por uma data específica, o que proporcionará uma análise mais detalhada dos dados.
Agora, voltamos à inteligência artificial para aplicar outro prompt que já temos preparado:
Adapte a consulta SQL para incluir a contagem de alunos matriculados em cada curso, considerando uma data de matrícula específica, como '2023-08-01'.
Eu quero ver:
- O nome do curso.
- O título das seções.
- A quantidade de matrículas.
Os resultados devem ser organizados por curso e suas seções.
Segue a estrutura das tabelas:
Tabela `curso`:
- `id_curso` INT
- `nome_curso` VARCHAR(100)
- `tipo_curso` VARCHAR(100)
Tabela `secoes`:
- `id_secao` INT
- `titulo` VARCHAR(100)
- `descricao` TEXT
- `numero_secao` INT
- `id_curso` INT
Tabela `matriculas`:
- `id_matricula` INT
- `id_aluno` INT
- `id_curso` INT
- `data_matricula` DATE
- `tipo_matricula` VARCHAR(20)"
O texto desse prompt é: "Adapte a consulta SQL para incluir a contagem de alunos matriculados em cada curso, considerando uma data de matrícula." Para este exemplo, estamos especificando a matrícula realizada no dia 1º de agosto de 2023. O objetivo é que, no resultado, apareça o nome do curso, o título das seções (ou seja, a mesma saída obtida na consulta anterior), mas com a quantidade de matrículas adicionada. Os resultados devem ser organizados por cursos e suas seções.
Além das tabelas curso
e secoes
, que já foram utilizadas no prompt anterior, estamos agora incluindo a tabela de matriculas
. Nela, registramos cada matrícula realizada, associando-a a cada estudante e a cada curso.
Copiamos esse prompt e questionamos a IA se ela pode fornecer o resultado dessa consulta. Ao colarmos na mesma conversa, teclamos "Enter" para aguardar a resposta. Como retorno, obtemos:
Para adicionar a contagem de estudantes matriculados em cada seção, é necessário relacionar as tabelas
matriculas
com outras duas tabelas, aplicando o agrupamento e a contagem.Consulta SQL:
SELECT c.nome_curso, s.titulo AS nome_secao, COUNT(m.id_aluno) AS quantidade_matriculas FROM cursos c INNER JOIN secoes s ON c.id_curso = s.id_curso INNER JOIN matriculas m ON s.id_curso = m.id_curso WHERE m.data_matricula = '2023-08-01' -- Substitua pela data desejada GROUP BY c.nome_curso, s.titulo ORDER BY c.nome_curso, s.numero_secao;
Explicação:
Join triplo: Relacionamos as três tabelas:
cursos
,secoes
ematriculas
, para obter informações sobre cursos, seções e o número de alunos matriculados.Filtro por data: A cláusula
WHERE m.data_matricula = '2023-08-01'
filtra as matrículas realizadas em 01 de agosto de 2023. Você pode ajustar essa data conforme necessário.Contagem de alunos: A função
COUNT(m.id_aluno)
conta o número de alunos matriculados em cada seção.
Realizamos um join
triplo entre as tabelas secoes
, matriculas
e cursos
. O filtro será feito pela data de matrícula, uma vez que desejamos visualizar apenas as matrículas realizadas no dia 1 de agosto de 2023. Aplicaremos o GROUP BY
, pois no SELECT
estaremos contando o número de estudantes matriculados e apresentando-os, ordenados por curso e por seção.
Agora, copiaremos essa consulta, retornaremos ao MySQL, criaremos um novo script e colaremos a consulta. Ao executar, o erro foi apresentado (o erro apresentado foi parcialmente transcrito):
Error Code: 1055. Expression #2 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'escolabb.s.numerosecao' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sqlmode=onlyfullgroupby
Primeiramente, verificaremos os nomes das tabelas, especialmente a tabela cursos
. O erro indicou que as expressões ORDER BY
e GROUP BY
estavam configuradas de forma incorreta. Talvez seja necessário remover a expressão ORDER BY
. Organizaremos a consulta, removeremos a expressão ORDER BY
e verificaremos se o resultado será exibido corretamente.
SELECT
c.nome_curso,
s.titulo AS nome_secao,
COUNT(m.id_aluno) AS quantidade_matriculas
FROM
cursos c
INNER JOIN
secoes s ON c.id_curso = s.id_curso
INNER JOIN
matriculas m ON s.id_curso = m.id_curso
WHERE
m.data_matricula = '2023-08-01' -- Substitua pela data desejada
GROUP BY
c.nome_curso, s.titulo, s.numero_secao
Tabela parcialmente transcrita:
nome_curso nome_secao quantidade_matriculas Banco de Dados com MySQL Introdução ao MySQL 20 Banco de Dados com MySQL Modelagem de Dados 20 Banco de Dados com MySQL Consultas SQL 20 Desenvolvimento Web com HTML e CSS Estrutura HTML 13 Desenvolvimento Web com HTML e CSS Estilos com CSS 13 Desenvolvimento Web com HTML e CSS Layouts Responsivos 13
Agora, conseguimos obter a informação sobre o curso "Banco de Dados com MySQL", o nome da seção e a quantidade de matrículas. É importante notar que esses dados se repetem, pois a matrícula é realizada por curso. Como o curso possui diversas seções, o número de matrículas se repete, o que não constitui um problema. Isso indica que temos 20 estudantes matriculados no curso "Banco de Dados com MySQL" para as matrículas do dia 1º de agosto de 2023. Além disso, temos 13 estudantes no curso "Desenvolvimento Web", 9 no curso "Introdução à Programação" e assim por diante.
Com essa consulta, obtemos uma visão consolidada dos cursos, suas seções e o número de estudantes matriculados em uma data específica.
A partir daqui, ampliaremos ainda mais a análise. Compararemos as matrículas de duas datas distintas para avaliar se houve crescimento ou queda no número de estudantes matriculados ao longo do tempo. Isso será feito com o auxílio da inteligência artificial. Esse passo será abordado no próximo vídeo. Até mais!
O curso MySQL com IA: trabalhando com consultas e relatórios possui 153 minutos de vídeos, em um total de 51 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.