Alura > Cursos de Inteligência Artificial > Cursos de IA para Dados > Conteúdos de IA para Dados > Primeiras aulas do curso MySQL com IA: implementando processos transacionais

MySQL com IA: implementando processos transacionais

Python e MySQL - Integrando Procedures com IA - Apresentação

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.

O que vamos aprender?

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.

Conclusão

Esperamos que aproveitem ao máximo essa experiência. Continuemos avançando. Obrigado e até o próximo vídeo!

Python e MySQL - Integrando Procedures com IA - Revisando o projeto da escola BitByte

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.

Usando IA como ferramenta auxiliar no desenvolvimento

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_alunonomeemail
1Ana Maria Souzaana.souza@bitbyte.com
2Carlos Eduardo Silvacarlos.silva@bitbyte.com
3Fernanda Limafernanda.lima@bitbyte.com
4Mariana Oliveiramariana.oliveira@bitbyte.com
5Ricardo Almeidaricardo.almeida@bitbyte.com
6Camila Pereiracamila.pereira@bitbyte.com
7Thiago Andradethiago.andrade@bitbyte.com
8Patricia Fernandespatricia.fernandes@bitbyte.com
9Eduardo Costaeduardo.costa@bitbyte.com

A seguir, incluiremos um novo estudante.

Incluindo uma pessoa estudante na tabela de alunos

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!

Verificando a inclusão

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_alunonomeemail
6Camila Pereiracamila.pereira@bitbyte.com
7Thiago Andradethiago.andrade@bitbyte.com
8Patricia Fernandespatricia.fernandes@bitbyte.com
9Eduardo Costaeduardo.costa@bitbyte.com
10Juliana Ramosjuliana.ramos@bitbyte.com
11Marcelo Xaviermarcelo.xavier@bitbyte.com
12Beatriz Limabeatriz.lima@bitbyte.com
13Renato Cardosorenato.cardoso@bitbyte.com
14Sofia Rochasofia.rocha@bitbyte.com
15João Albertojalberto@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".

Próximos passos

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!

Python e MySQL - Integrando Procedures com IA - Criando e testando a primeira procedure no MySQL

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.

Criando e chamando procedures

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.

Ajustando a procedure para incluir mensagens de retorno

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:

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.

Inicializando a variável e testando a procedure

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.

Próximos passos

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!

Sobre o curso MySQL com IA: implementando processos transacionais

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:

Aprenda IA para Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas