Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso MySQL: executando Procedures

MySQL: executando Procedures

Primeiro contato com Procedures no MYSQL - Apresentação

Olá, tudo bem? Meu nome é Victorino Vila e este é mais um curso da formação de MySQL, chamado Executando Procedures.

Audiodescrição: Victorino é um homem de pele clara, com cabelos curtos e grisalhos, e um cavanhaque escuro rente ao rosto. Está vestindo uma camiseta preta. À sua frente, um microfone apoiado por um braço articulado. Ao fundo, uma parede iluminada por um degrade de tons de azul.

O que vamos aprender?

Neste curso, vamos mergulhar mais uma vez na história da Insight Places, uma empresa fictícia que enfrenta problemas bem semelhantes aos de empresas reais que intermediam o aluguel de casas, quartos de hotel ou apartamentos.

Nesse tipo de empresa, temos muitas questões complexas para resolver, por exemplo:

Vamos resolver todos esses problemas da Insight Places usando Stored Procedures (Procedimentos Armazenados) no MySQL.

Portanto, o foco deste curso é ensinar tudo sobre Procedures no MySQL, desde o básico até o mais complexo.

Sempre usaremos como exemplo os dados da Insight Places, e você vai aprender a resolver os problemas da empresa utilizando uma série de recursos e novos conceitos, como, por exemplo:

Quando você terminar este curso, terá aprendido muitos conceitos úteis, não só para resolver os problemas da Insight Places, mas também para resolver muitos problemas relacionados a outras empresas no que diz respeito a banco de dados.

Queremos que este curso prepare você para o mercado de trabalho e ajude no seu crescimento profissional!

Inclusive, não importa se você já sabe algo de MySQL ou se está começando agora a estudar esse assunto. Neste curso e nesta formação, você vai aprimorar seus conhecimentos técnicos e se preparar para encarar desafios ainda mais complexos no mundo do desenvolvimento de banco de dados. Saber resolver esses problemas de um jeito criativo e eficaz é uma habilidade muito valorizada na área de TI!

Esperamos que este curso seja um passo importante para você chegar lá! Então, vamos começar?

Um abraço e até o próximo vídeo.

Primeiro contato com Procedures no MYSQL - Problema a ser resolvido

Antes de começar, vamos entender o nosso estudo de caso e o problema que precisamos resolver neste curso.

Insight Places e base de dados inicial

Trabalharemos com a empresa Insight Places, a mesma com que trabalhamos desde o primeiro curso da formação em MySQL. Para quem não se lembra, a Insight Places é uma plataforma de aluguel de hospedagens para temporadas, semelhante ao Airnb ou Booking. Provavelmente, você deve ter conhecido uma plataforma como essa ao reservar um hotel ou apartamento para suas férias.

A Insight Places, sendo uma empresa muito inteligente, utiliza o MySQL como banco de dados para gerenciar os registros dos processos de reservas e hospedagens. Portanto, antes de começar este curso, é importante que você revise como está a sua base de dados.

Neste curso, partiremos da base inicial criada no início da formação, no primeiro curso. Se desejar, pode voltar ao primeiro curso e recuperar a base original, apagar a base que tem no seu computador e criá-la novamente.

No entanto, se não quiser fazer isso, você pode manter a base de dados que já tem no seu computador. Apenas verifique se os resultados obtidos são um pouco diferentes dos que mostraremos em aula.

Problema e dados necessários para resolvê-lo

Temos um problema para resolver na base de dados da Insight Places: precisamos registrar corretamente os aluguéis reservados na plataforma.

Para registrar um aluguel na plataforma, precisamos de uma série de dados:

Precisamos ter em mente algumas informações importantes sobre os dados que precisamos inserir na nossa base para registrar um aluguel.

Primeiro: o identificador do aluguel é único e não pode se repetir na base de dados. Além disso, o identificador do hóspede deve ser previamente cadastrado na tabela de clientes, na base de dados da Insight Places, assim como o identificador do local da hospedagem.

Caso a pessoa cliente ou o local de hospedagem não estejam cadastrados em suas tabelas específicas, o aluguel não será validado pelo banco de dados.

E, claro, precisamos inserir a data inicial e final da hospedagem e o valor calculado pelo período de aluguel.

Ao longo dos exercícios práticos do curso, vamos ajustando as possíveis restrições em relação a esses dados.

Esquema da base de dados

A seguir, temos o esquema do banco de dados de que vamos tratar neste curso, representando as relações entre as tabelas hospedagens, clientes e alugueis:

Imagem de um diagrama de banco de dados com três tabelas e suas relações. A tabela 'hospedagens' no canto superior esquerdo tem as colunas hospedagem_id, tipo, endereco_id, proprietario_id e ativo. A tabela 'clientes' no canto inferior esquerdo tem as colunas cliente_id, nome, cpf e contato. A tabela 'alugueis' à direita tem as colunas aluguel_id, cliente_id, hospedagem_id, data_inicio, data_fim e preco_total. Há linhas pontilhadas conectando a tabela 'hospedagens' com a tabela 'alugueis', e a tabela 'clientes' com a tabela 'alugueis'.

Atenção: quem já tem familiaridade com a base de dados da Insight Places sabe que há muito mais tabelas do que apenas essas três. Mencionamos apenas estas três neste esquema porque são apenas elas que farão parte do registro de um aluguel.

Na tabela de aluguéis, por exemplo, o identificador do aluguel é único porque ele é chave primária dessa tabela.

Temos uma chave estrangeira nesta tabela, a hospedagem_id ligando a tabela de aluguéis com a tabela de hospedagens.

Também temos outra chave estrangeira, cliente_id, ligando o identificador da pessoa cliente na tabela de aluguéis com, claro, o cadastro de clientes.

Por isso o identificador do aluguel deve ser único: ele é chave primária. E o identificador da pessoa cliente da hospedagem devem existir nas tabelas respectivas por causa da chave estrangeira.

Como vamos incluir um novo aluguel dentro da base de dados? Por meio do tema deste curso: as Stored Procedures.

Então, a primeira coisa que precisamos fazer é entender o que é uma Stored Procedure, além de como a criamos e armazenamos em uma base de dados do MySQL. Porém, esse assunto será abordado no próximo vídeo.

Até lá!

Primeiro contato com Procedures no MYSQL - Entendendo o conceito de Procedure

Neste vídeo, vamos entender o conceito de Stored Procedure no MySQL.

Provedores de banco de dados e linguagem estruturada

Durante esta formação, em todos os cursos até agora, tivemos contato com o SQL para incluir, alterar, excluir e consultar dados de tabelas do MySQL. No entanto, sabemos que o SQL não é o que chamamos de uma linguagem estruturada.

No SQL padrão ANSI, não é possível criar uma variável, fazer um comando de repetição, como um WHILE ou um FOR, ou tomar comandos de decisão, como um IF. Isso pode ser considerado uma "fraqueza" da linguagem SQL.

Sendo assim, a decisão dos grandes provedores de bancos de dados foi associar aos seus bancos de dados uma linguagem estruturada, como se fosse uma extensão do SQL padrão ANSI.

Com isso podemos usar variáveis dentre os comandos SQL, além de criar estruturas de looping ou de condição.

No entanto, cada provedor de banco de dados seguiu um caminho diferente para implementar essa extensão de linguagem estruturada. Isso é diferente do uso do SQL, que segue uma padronização, que chamamos de padrão ANSI, que todos os provedores adotaram nos bancos de dados.

Portanto, se estamos nos especializando em MySQL, precisamos entender como funciona a linguagem estruturada do MySQL.

O que é uma Procedure?

Para criar um programa no MySQL, precisamos criar o que chamamos de Procedure, ou, internamente, Stored Procedure.

O comando para criar uma Procedure é o CREATE PROCEDURE seguido do nome desejado para essa Procedure. Depois, entre parênteses, podemos passar parâmetros para essa Procedure, embora isso não seja obrigatório.

Depois, começamos o corpo dessa Procedure com a palavra BEGIN e declaramos uma lista de variáveis que serão utilizadas dentro do programa. Em seguida, entramos nos comandos propriamente ditos da Procedure, inserindo a lógica de execução. Então finalizamos esse corpo com a palavra END. Essa é a estrutura básica para criar uma Stored Procedure.

Criando uma Procedure

Vamos ao MySQL Workbench, na base de dados Insightplaces, para criar uma primeira Procedure de exemplo.

Na estrutura de tabelas dessa base de dados (na aba "Schemas" à esquerda da interface), podemos conferir o nó chamado "Stored Procedures". É aqui que vamos criar nossos programas, usando a linguagem de programação estendida ao SQL.

Primeiramente, vamos dar um duplo clique na base Insightplaces, deixando-a em negrito, para indicar que ela é a base default da nossa conexão.

Depois, vamos clicar sobre Stored Procedures com o botão direito do mouse e selecionar a opção "Create Stored Procedure". Isso abrirá uma caixa de diálogo para criação de uma nova Stored Procedure.

Nessa caixa, teremos a estrutura básica para criação dessa Procedure, com os comandos CREATE PROCEDURE, BEGIN e END. Chamaremos essa Procedure de 'nao_faz_nada', a título de exemplo.

Conforme seu nome, não teremos comando nenhum dentro dessa Procedure, pois ela não fará nada. Então, ela ficará assim:

Nova Procedure

CREATE PROCEDURE 'nao_faz_nada' ()
BEGIN
END

Vamos salvá-la clicando no botão "Apply" no canto inferior direito da caixa de diálogo.

Com isso, visualizaremos os comandos que serão executados no script:

USE `insightplaces`;
DROP PROCEDURE IF EXISTS `nao_faz_nada`;

DELIMITER $$
USE `insightplaces`$$
CREATE PROCEDURE `nao_faz_nada` ()
BEGIN
END$$

DELIMITER ;

Note o comando DELIMITER $$ ao início e o DELIMITER ; ao fim. Na Stored Procedure, o ponto e vírgula funciona como separador de linha que usamos ao criar um programa. No entanto, nativamente, o ponto e vírgula é o separador de linhas de comando em SQL.

Com o primeiro comando, estamos nos conectando à base Insightplaces. Depois, com o segundo comando, estamos apagando a Stored Procedure chamada nao_faz_nada, caso ela já exista. Utilizamos o ponto e vírgula ao final de cada comando.

No entanto, ao escrever a Stored Procedure, mudamos o delimitador para $$, porque o $$ usado aqui serve apenas para delimitar o comando da criação da Stored Procedure. Assim, os pontos e vírgulas que usarmos dentro da criação da Stored Procedure não serão confundidos com os pontos e vírgulas utilizados para separar comandos SQL no script.

Talvez isso fique um pouco confuso no momento, mas quando realmente escrevermos comandos dentro da Stored Procedure, voltaremos a este tema para entendermos melhor a questão dos delimitadores.

Se clicarmos em "Apply" novamente, todos esses comandos serão executados no MySQL. Vamos fazer isso. Não devemos ter nenhum problema até aqui.

Agora podemos fechar esta caixa de diálogo e, na aba à esquerda da tela, poderemos conferir na aba de "Stored Procedures" a nova Stored Procedure que criamos, chamada nao_faz_nada. É assim que criamos Stored Procedures dentro do MySQL!

Mas, claro, criamos uma Stored Procedure que não faz nada ainda. Então, no próximo vídeo, vamos criar a nossa primeira Stored Procedure real, com funções a executar.

Até lá!

Sobre o curso MySQL: executando Procedures

O curso MySQL: executando Procedures possui 185 minutos de vídeos, em um total de 60 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas