Boas-vindas ao curso MySQL com IA: Implementando Processos Transacionais! Meu nome é Victorino Vila e é uma grande satisfação compartilhar esta jornada de aprendizado com vocês.
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 preta. Ao fundo, parede com iluminação verde e lilás.
Neste curso, abordaremos a implementação de processos transacionais no banco de dados MySQL, utilizado pela Escola BitByte. Tais processos formarão a base de um sistema RP que a escola está desenvolvendo.
O sistema contemplará funcionalidades como:
Tudo isso será realizado com o devido respeito às regras de integridade referencial do banco de dados.
Ao longo do curso, aprenderemos a criar procedures no MySQL, que serão acionadas pelas interfaces gráficas do RP, assegurando que os processos do sistema se mantenham consistentes e eficientes. Para tornar essa experiência ainda mais dinâmica e prática, contaremos com o auxílio da inteligência artificial. Utilizaremos a AI da Gemini, que atuará como nossa aliada na geração de sugestões e na otimização dos comandos que implementaremos.
Além do MySQL e da inteligência artificial, também utilizaremos o Python, criando programas que irão interagir com o banco de dados de maneira prática e automatizada. A integração entre MySQL, Python e IA configura uma combinação poderosa e essencial para a resolução de problemas do mundo real, sendo altamente valorizada no mercado de trabalho atual.
Uma pessoa profissional capaz de unir tecnologias como MySQL e inteligência artificial não é apenas um diferencial, mas uma competência imprescindível para quem busca se destacar em um mercado cada vez mais competitivo.
Ao final deste curso, estaremos capacitados para implementar sistemas transacionais robustos e inteligentes, alinhados às necessidades reais de uma empresa e, especificamente, da Escola BitByte.
Aprender a integrar MySQL com inteligência artificial é um passo crucial para o avanço na carreira profissional. Estaremos ao longo de todo esse processo, orientando-os em cada etapa, e ajudando no desenvolvimento de habilidades que abrangem diversas áreas do conhecimento, com o objetivo de atingir as metas profissionais.
Esperamos que aproveitem ao máximo essa experiência. Continuemos avançando. Obrigado e até o próximo vídeo!
Iniciaremos agora um novo desafio na implementação do banco de dados da Escola BitByte, pois a empresa está em processo de implementação de um RP. Para quem não está familiarizado, o RP é o sistema transacional utilizado pelos colaboradores da empresa no cotidiano, onde serão acessadas telas, dados e relatórios. Todos esses elementos irão consultar o banco de dados por meio de uma MySQL que projetamos e populamos com informações do sistema legado.
A implementação do RP permitirá que as pessoas usuárias façam manutenções no banco de dados que estamos projetando. Esse RP, para funcionar, precisará se comunicar com processos previamente implementados no nosso banco, garantindo que a interface de entrada de dados funcione corretamente na manutenção desses dados dentro do banco.
Embora a responsabilidade pelo desenvolvimento do RP, incluindo a criação de telas, front-ends e outros aspectos relacionados a esses sistemas, não recaia sobre nós na implementação do banco de dados, é essencial que estabeleçamos processos para garantir que todas as regras de negócio associadas à manutenção dos dados sejam rigorosamente seguidas.
Continuaremos utilizando a inteligência artificial da Gemini como uma ferramenta auxiliar, mesclando soluções com o ambiente Python e MySQL.
No Python, essa abordagem será limitada neste curso. Usaremos o Python apenas para chamar as procedures do MySQL, simulando o envio dos dados que o RP fará para nossos processos. Essa abordagem permitirá que possamos testar a funcionalidade dos nossos processos, garantindo que, quando o RP chamar esses mesmos processos, eles funcionarão conforme o esperado.
Nosso foco no curso é entender como funcionam as procedures do MySQL e depois integrá-las com o Python para criar soluções automatizadas. Aprenderemos também como a IA pode simplificar toda essa integração. Para entender melhor como isso funcionará, começaremos com um exemplo simples: a inclusão de um novo estudante na tabela de alunos
.
Durante o processo de inclusão de um novo estudante, o nosso processo interno no banco de dados começará verificando se o estudante já está registrado. Caso o estudante exista, suas propriedades serão atualizadas, sendo que, na nossa tabela, a única propriedade a ser modificada é o e-mail. Se o estudante não for encontrado, um novo registro será inserido.
A abordagem adotada consiste em enviar prompts para a IA, buscando orientações sobre como implementar esses processos. As respostas serão avaliadas e ajustadas quando necessário, e, por fim, analisaremos a melhor forma de executá-las por meio de Python.
Iniciaremos o primeiro prompt:
Estou implementando processos para a atualização de dados da escola BitByte e preciso de uma procedure para gerenciar a inclusão de novos alunos na tabela alunos.
A tabela tem a seguinte estrutura:
`id_aluno` INT,
`nome` VARCHAR(100),
`email` VARCHAR(100)
O objetivo da procedure é receber como parâmetros o nome e o email do aluno e realizar o seguinte:
Se o aluno já existir (ou seja, se já houver um registro com o mesmo nome na tabela):
Atualizar o campo de email no registro existente com o novo valor informado.
Se o aluno não existir:
Inserir um novo registro na tabela com os valores de nome e email.
Importante:
O campo id_aluno é auto-incrementado, então não preciso me preocupar com sua inclusão na operação.
Você pode me ajudar a construir essa solução?
Observe que estamos especificando o formato da tabela de alunos ao fornecer o campo e o tipo de dado.
Este será nosso primeiro prompt. Selecionaremos o texto (está em um bloco de notas), copiaremos e acessaremos a IA da Gemini. Podemos utilizar o mesmo chat do curso anterior ou criar um novo. O texto será colado e, em seguida, analisaremos a resposta da inteligência artificial.
O retorno da IA foi:
Criando uma Procedure para Incluir ou Atualizar Alunos
Entendendo o Problema:
Precisamos de uma procedure que, ao receber o nome e o email de um aluno, verifique se ele já existe na base de dados. Caso exista, atualize o e-mail; caso contrário, insere um novo registro.
Solução:
DELIMITER $$ CREATE PROCEDURE inserir_ou_atualizar_aluno( IN p_nome VARCHAR(100), IN p_email VARCHAR(100) ) BEGIN DECLARE v_id_aluno INT; -- Verifica se o aluno já existe SELECT id_aluno INTO v_id_aluno FROM Alunos WHERE nome = p_nome; IF v_id_aluno IS NULL THEN -- Se o aluno não existe, insere um novo registro INSERT INTO Alunos (nome, email) VALUES (p_nome, p_email); SET @mensagem := 'Aluno inserido com sucesso!'; ELSE -- Se o aluno existe, atualiza o email UPDATE Alunos SET email = p_email WHERE id_aluno = v_id_aluno; SET @mensagem := 'Email do aluno atualizado com sucesso!'; END IF; END $$ DELIMITER ;
…
Copiaremos o código e verificaremos se ele funcionará conforme esperado.
No MySQL Workbench, temos a base de dados da escolabb
à esquerda. Criaremos um novo script clicando no primeiro ícone na parte superior esquerda ("Create a new SQL tab for executing queries") e colaremos o código da procedure. O nome da procedure é inserir_ou_atualizar_aluno
.
Selecionaremos todo o código da procedure e executaremos clicando no ícone de raio na parte superior esquerda. Observamos que não houve erro. Agora, executaremos a procedure.
Para isso, teclamos "Enter" para pular algumas linhas e realizaremos um SELECT * FROM alunos
e verificaremos que, na tabela de alunos, existe uma lista de alunos inseridos no curso anterior após a leitura dos dados do legado.
SELECT * FROM alunos;
Tabela parcialmente transcrita:
id_aluno nome 1 Ana Maria Souza ana.souza@bitbyte.com 2 Carlos Eduardo Silva carlos.silva@bitbyte.com 3 Fernanda Lima fernanda.lima@bitbyte.com 4 Mariana Oliveira mariana.oliveira@bitbyte.com 5 Ricardo Almeida ricardo.almeida@bitbyte.com 6 Camila Pereira camila.pereira@bitbyte.com 7 Thiago Andrade thiago.andrade@bitbyte.com 8 Patricia Fernandes patricia.fernandes@bitbyte.com 9 Eduardo Costa eduardo.costa@bitbyte.com …
A seguir, incluiremos um novo estudante.
Chamaremos com CALL
a procedure inserir_ou_atualizar_aluno()
e passaremos dois parâmetros: o nome e o e-mail. Utilizaremos o nome de um aluno, por exemplo, João Alberto
, e criaremos o e-mail correspondente, jalberto@gmail.com
.
-- sql omitido
CALL inserir_ou_atualizar_aluno ('João Alberto', 'jalberto@gmail.com');
-- sql omitido
A procedure será executada com esses valores. Para isso, selecionamos o comando e clicamos no ícone de raio n a parte superior. A execução ocorre com sucesso!
Em seguida, realizaremos uma seleção na tabela de alunos para verificar se o novo aluno, João Alberto, foi corretamente incluído.
-- sql omitido
SELECT * FROM alunos;
Podemos observar que ele foi adicionado à tabela, junto com seu e-mail:
id_aluno nome 6 Camila Pereira camila.pereira@bitbyte.com 7 Thiago Andrade thiago.andrade@bitbyte.com 8 Patricia Fernandes patricia.fernandes@bitbyte.com 9 Eduardo Costa eduardo.costa@bitbyte.com 10 Juliana Ramos juliana.ramos@bitbyte.com 11 Marcelo Xavier marcelo.xavier@bitbyte.com 12 Beatriz Lima beatriz.lima@bitbyte.com 13 Renato Cardoso renato.cardoso@bitbyte.com 14 Sofia Rocha sofia.rocha@bitbyte.com 15 João Alberto jalberto@gmail.com
Executaremos novamente a procedure, mas desta vez alteraremos o e-mail para verificar se a alteração será refletida na tabela. Substituiremos o e-mail jalberto@gmail.com
por jalberto@hotmail.com
e executaremos a procedure.
-- sql omitido
CALL inserir_ou_atualizar_aluno ('João Alberto', 'jalberto@hotmail.com');
A execução ocorre sem erros! Em seguida, faremos uma seleção na tabela com SELECT * FROM alunos;
para verificar o resultado. Podemos observar que agora João Alberto possui o e-mail com o sufixo "hotmail".
Com essa procedure, é possível criar novos estudantes. No entanto, é importante notar que, ao executá-la, não recebemos um retorno indicando o que de fato foi realizado. Não sabemos se o estudante foi incluído ou se houve uma alteração no registro.
Seria interessante que a procedure retornasse uma mensagem informando qual ação foi tomada, para que possamos confirmar se a execução foi bem-sucedida. Embora não implementemos essa modificação neste momento, ela será abordada no próximo vídeo.
Nos vemos em breve!
Em SQL, procedures desempenham um papel fundamental na centralização e automação das operações no banco de dados. Ao criarmos uma procedure funcional, é imprescindível realizar um planejamento cuidadoso e testes rigorosos para assegurar que ela execute corretamente as tarefas designadas.
Durante o curso, criaremos essas procedures, as quais serão chamadas pelo RP da empresa BitByte para retornar respostas e gerenciar ações no programa em desenvolvimento. É fundamental que a procedure retorne, após sua execução, uma mensagem adicional informando se a operação foi concluída com sucesso ou não.
No exemplo anterior, que trabalhamos para a inclusão ou alteração de um estudante, é crucial sabermos se o estudante foi realmente incluído ou se houve uma alteração nos dados, ou seja, se o processo identificou um estudante com o nome fornecido e atualizou as informações correspondentes.
Precisamos compreender como criar, em SQL, uma procedure que receba parâmetros de entrada, execute a operação desejada (no nosso caso, inserir ou atualizar dados dos alunos) e, ao final, forneça uma mensagem de retorno adequada. A seguir, indagaremos à IA se ela possui a solução para esse desafio.
Como posso ajustar a procedure sugerida no prompt anterior para incluir mensagens de retorno que informem o status da operação?
As mensagens devem indicar o seguinte:
"Aluno incluído com sucesso" - quando um novo aluno for adicionado à tabela.
"Aluno atualizado com sucesso" - quando o email de um aluno existente for alterado.
"Erro na manipulação da tabela" - caso ocorra algum problema durante a execução da procedure.
Você pode adaptar a procedure para incluir essas mensagens e me orientar sobre como capturar o retorno de cada status?
Copiamos o prompt e perguntamos à IA sobre a questão. Enviamos o prompt e aguardamos o retorno do Gemini.
Ajustando a Procedure para Incluir Mensagens de Retorno
Excelente pergunta! As mensagens de retorno são cruciais para fornecer feedback ao usuário sobre o resultado da operação. Vamos adaptar a procedure para incluir as mensagens solicitadas:
DELIMITER $$ CREATE PROCEDURE inserir_ou_atualizar_aluno( IN p_nome VARCHAR(100), IN p_email VARCHAR(100), OUT p_mensagem VARCHAR(100) ) BEGIN DECLARE v_id_aluno INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET p_mensagem := 'Erro na manipulação da tabela'; END; START TRANSACTION; -- Verifica se o aluno já existe SELECT id_aluno INTO v_id_aluno FROM Alunos WHERE nome = p_nome; IF v_id_aluno IS NULL THEN -- Se o aluno não existe, insere um novo registro INSERT INTO Alunos (nome, email) VALUES (p_nome, p_email); SET p_mensagem := 'Aluno inserido com sucesso!'; ELSE -- Se o aluno existe, atualiza o email UPDATE Alunos SET email = p_email WHERE id_aluno = v_id_aluno; SET p_mensagem := 'Aluno atualizado com sucesso!'; END IF; COMMIT; END $$ DELIMITER ;
Explicação das Alterações:
Parâmetro de Saída: Adicionamos um parâmetro de saída
p_mensagem
para armazenar a mensagem de retorno.Tratamento de Erros:
Handler SQLEXCEPTION: Utilizamos um
HANDLER
para capturar qualquer exceção SQL que possa ocorrer durante a execução da procedure.Rollback: Em caso de erro, a transação é abortada usando
ROLLBACK
para garantir a consistência dos dados.Mensagem de Erro Padrão: A mensagem "Erro na manipulação da tabela" é definida como padrão para indicar um problema geral.
Transações: A procedure agora utiliza transações para garantir a atomicidade das operações. Isso significa que todas as alterações são confirmadas (COMMIT) ou descartadas (ROLLBACK) como um todo.
Chamando a Procedure e Capturando o Retorno:
CALL inserir_ou_atualizar_aluno('João da Silva', 'joao@email.com', @mensagem); SELECT @mensagem;
…
Analisando a parte do código, passamos uma variável com o parâmetro OUT
e, dependendo do que ocorrer, caso haja um erro, a mensagem será "Erro na manipulação da tabela". Iniciamos a transação e, se o estudante já existir, entramos no bloco else
, realizamos o update
e definimos a mensagem "Aluno atualizado com sucesso". Caso contrário, inserimos o novo aluno.
Para invocar essa funcionalidade, a IA orienta que devemos inserir uma variável chamada @mensagem
e, em seguida, realizar um SELECT
sobre essa variável para verificar o resultado. Copiamos a procedure, acessamos o MySQL, criamos um novo script e colamos a procedure modificada pela IA.
Como a procedure já está presente no banco de dados, antes de criá-la novamente, executamos um DROP PROCEDURE
com o nome da procedure, que é inserir_ou_atualizar_aluno
.
DROP PROCEDURE inserir_ou_atualizar_aluno;
Executamos o comando de remover selecionando-o e clicando no ícone de raio na parte superior.
Após esse procedimento, recriamos a procedure selecionando todo o comando fornecido pelo Gemini e executando-o.
Em seguida, inicializamos a variável com set @mensagem = ''
com aspas simples, chamamos a procedure com CALL inserir_ou_atualizar_aluno
e inserimos um novo estudante, Pedro Barbosa, com o e-mail pbarbosa@gmail.com
, passando o parâmetro @mensagem
. Por fim, executamos um SELECT @mensagem
.
set @mensagem = '';
CALL inserir_ou_atualizar_aluno ('Pedro Barbosa','pbarbosa@gmail.com',@mensagem);
SELECT @mensagem;
Ao executar esses três comandos, recebemos a mensagem:
Aluno inserido com sucesso!
Se executarmos novamente a mesma procedure com os mesmos dados, como o estudante Pedro Barbosa já existe na tabela, esperamos ver uma mensagem diferente. Ao executar novamente, recebemos:
Aluno atualizado com sucesso!
Nosso processo agora está retornando uma mensagem corretamente.
Para melhorar nossos testes e seguir com a criação e teste dos processos, vamos criar um programa em Python que, usando a linha de comando, permita inserir os parâmetros e visualizar a resposta. Vamos ver como fazer isso no próximo vídeo. Até mais!
O curso MySQL com IA: implementando processos transacionais possui 173 minutos de vídeos, em um total de 47 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.