Funções MySQL e Lógica Personalizada

MySQLBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como criar e usar funções personalizadas no MySQL. O laboratório foca em encapsular lógica reutilizável dentro do seu banco de dados, criando uma função para calcular a área de um retângulo.

As etapas envolvem conectar-se ao servidor MySQL, criar um banco de dados (se necessário), definir a função calculate_rectangle_area com parâmetros de entrada para comprimento e largura, e especificar o tipo de dado de retorno. O corpo da função calcula a área e retorna o resultado. As etapas subsequentes cobrirão o uso desta função em uma consulta SELECT, testando sua saída com dados de exemplo e, finalmente, removendo a função.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 92%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Conectar ao MySQL e Criar um Banco de Dados

Nesta etapa, você se conectará ao servidor MySQL e criará um banco de dados onde criará e usará sua função personalizada.

Primeiro, abra seu terminal e conecte-se ao servidor MySQL como usuário root. Execute o seguinte comando uma vez no início do laboratório:

sudo mysql -u root

Este comando usa sudo para executar o cliente mysql como o usuário root. Como o usuário root neste ambiente não tem senha definida, você será conectado diretamente ao shell do MySQL. Você verá o prompt mysql>.

Permaneça no shell do MySQL para todas as etapas subsequentes. Não saia até o final do laboratório.

Agora, vamos criar um banco de dados chamado my_functions_db. Este banco de dados será usado para armazenar nossa tabela e função. Execute o seguinte comando SQL no prompt mysql>:

CREATE DATABASE IF NOT EXISTS my_functions_db;

Após criar o banco de dados, selecione-o para torná-lo o banco de dados padrão para operações subsequentes:

USE my_functions_db;

Você deverá ver uma mensagem indicando que o banco de dados foi alterado.

Agora você está conectado ao banco de dados my_functions_db e está pronto para criar sua função personalizada na próxima etapa.

Criar uma Função para Calcular a Área do Retângulo

Nesta etapa, você criará uma função personalizada no MySQL para calcular a área de um retângulo. Esta função receberá o comprimento e a largura como entrada e retornará a área calculada.

Certifique-se de que você ainda está no shell do MySQL e já selecionou o banco de dados my_functions_db, conforme descrito na etapa anterior.

Agora, vamos criar a função chamada calculate_rectangle_area. Esta função aceitará dois parâmetros inteiros, length e width, e retornará um inteiro representando a área.

Execute o seguinte comando SQL no shell do MySQL:

DELIMITER //

CREATE FUNCTION calculate_rectangle_area (length INT, width INT)
RETURNS INT
DETERMINISTIC
BEGIN
  DECLARE area INT;
  SET area = length * width;
  RETURN area;
END //

DELIMITER ;

Vamos detalhar este comando:

  • DELIMITER //: Isso altera o delimitador de instrução do ponto e vírgula (;) padrão para //. Isso é necessário porque a definição da função contém pontos e vírgulas dentro de seu corpo.
  • CREATE FUNCTION calculate_rectangle_area (length INT, width INT): Isso define o nome da função (calculate_rectangle_area) e seus parâmetros de entrada (length e width, ambos do tipo INT).
  • RETURNS INT: Isso especifica que a função retornará um valor inteiro.
  • DETERMINISTIC: Esta palavra-chave indica que a função sempre produzirá a mesma saída para os mesmos valores de entrada. Isso ajuda o MySQL a otimizar consultas que usam a função.
  • BEGIN ... END: Este bloco contém a lógica da função.
  • DECLARE area INT;: Isso declara uma variável local chamada area do tipo INT dentro da função.
  • SET area = length * width;: Isso calcula a área multiplicando os parâmetros length e width e atribui o resultado à variável area.
  • RETURN area;: Isso retorna o valor armazenado na variável area como a saída da função.
  • END //: Isso marca o fim da definição da função, usando o delimitador temporário //.
  • DELIMITER ;: Isso altera o delimitador de volta para o ponto e vírgula (;) padrão.

Após executar este comando, a função calculate_rectangle_area será criada no banco de dados my_functions_db.

Para verificar se a função foi criada com sucesso, você pode listar as funções no banco de dados atual:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Este comando exibirá informações sobre a função, confirmando sua existência.

Usar a Função em uma Consulta SELECT

Agora que você criou a função calculate_rectangle_area, pode usá-la em uma consulta SELECT para calcular a área de retângulos com base nos dados armazenados em uma tabela.

Continue trabalhando na mesma sessão do shell do MySQL e certifique-se de que ainda está usando o banco de dados my_functions_db.

Primeiro, vamos criar uma tabela chamada rectangles para armazenar as dimensões de diferentes retângulos. Execute o seguinte comando SQL:

CREATE TABLE IF NOT EXISTS rectangles (
  id INT AUTO_INCREMENT PRIMARY KEY,
  length INT,
  width INT
);

Este comando cria uma tabela com um id auto-incrementável como chave primária e colunas para length e width.

Em seguida, insira alguns dados de exemplo na tabela rectangles:

INSERT INTO rectangles (length, width) VALUES (5, 10);
INSERT INTO rectangles (length, width) VALUES (7, 8);
INSERT INTO rectangles (length, width) VALUES (12, 3);

Estes comandos adicionam três linhas à tabela rectangles com diferentes valores de comprimento e largura.

Agora, você pode usar a função calculate_rectangle_area em uma consulta SELECT para recuperar as dimensões do retângulo e suas áreas calculadas. Execute o seguinte comando SQL:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

Nesta consulta:

  • SELECT id, length, width: Isso seleciona as colunas id, length e width da tabela rectangles.
  • calculate_rectangle_area(length, width): Isso chama a função calculate_rectangle_area, passando os valores das colunas length e width de cada linha como argumentos.
  • AS area: Isso atribui um alias area ao resultado retornado pela função, tornando a coluna de saída mais legível.
  • FROM rectangles: Isso especifica que os dados devem ser recuperados da tabela rectangles.

A saída desta consulta mostrará o id, length, width e a area calculada para cada retângulo na tabela. Você deverá ver uma saída semelhante a esta:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
+----+--------+-------+------+

Isso demonstra como usar efetivamente sua função personalizada em uma consulta SQL padrão para realizar cálculos em seus dados.

Testar Saída da Função com Dados de Amostra

Nesta etapa, você testará ainda mais a função calculate_rectangle_area inserindo mais dados de exemplo na tabela rectangles e verificando as áreas calculadas. Isso ajuda a garantir que a função funcione corretamente com diferentes valores de entrada.

Continue trabalhando na mesma sessão do shell do MySQL e certifique-se de que ainda está usando o banco de dados my_functions_db.

Agora, insira linhas adicionais na tabela rectangles com diferentes valores de comprimento e largura:

INSERT INTO rectangles (length, width) VALUES (10, 10);
INSERT INTO rectangles (length, width) VALUES (2, 5);
INSERT INTO rectangles (length, width) VALUES (15, 4);

Estes comandos adicionam mais três linhas à tabela rectangles.

Agora, execute a consulta SELECT novamente para ver as áreas calculadas para todos os retângulos, incluindo os recém-adicionados:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

A saída agora incluirá as áreas para os novos retângulos:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
|  4 |     10 |    10 |  100 |
|  5 |      2 |     5 |   10 |
|  6 |     15 |     4 |   60 |
+----+--------+-------+------+

Revise a saída e confirme se as áreas calculadas para as novas linhas estão corretas:

  • Para comprimento 10 e largura 10, a área é 100 (10 * 10).
  • Para comprimento 2 e largura 5, a área é 10 (2 * 5).
  • Para comprimento 15 e largura 4, a área é 60 (15 * 4).

Esta etapa reforça sua compreensão de como usar a função com dados variados e confirma sua precisão.

Remover a Função e a Tabela

Nesta etapa final, você limpará o banco de dados removendo a função calculate_rectangle_area e a tabela rectangles. Esta é uma boa prática para remover objetos que você não precisa mais.

Continue trabalhando na mesma sessão do shell do MySQL e certifique-se de que ainda está usando o banco de dados my_functions_db.

Primeiro, vamos remover a função calculate_rectangle_area. Execute o seguinte comando SQL:

DROP FUNCTION IF EXISTS calculate_rectangle_area;
  • DROP FUNCTION: Este comando é usado para remover uma função.
  • IF EXISTS: Esta cláusula evita um erro se a função não existir.

Em seguida, vamos remover a tabela rectangles. Execute o seguinte comando SQL:

DROP TABLE IF EXISTS rectangles;
  • DROP TABLE: Este comando é usado para remover uma tabela.
  • IF EXISTS: Esta cláusula evita um erro se a tabela não existir.

Após executar esses comandos, tanto a função quanto a tabela serão removidas do banco de dados my_functions_db.

Para verificar se a função foi removida, você pode tentar listar as funções novamente:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Este comando agora deve retornar um conjunto de resultados vazio, indicando que a função foi removida.

Para verificar se a tabela foi removida, você pode tentar selecionar a partir dela:

SELECT * FROM rectangles;

Este comando deve retornar um erro semelhante a ERROR 1146 (42S02): Table 'my_functions_db.rectangles' doesn't exist, indicando que a tabela foi removida.

Agora você pode sair do shell do MySQL digitando exit e pressionando Enter.

Você criou, usou, testou e removeu com sucesso uma função e uma tabela personalizadas no MySQL.

Resumo

Neste laboratório, você aprendeu como criar uma função no MySQL para encapsular lógica reutilizável. O processo envolveu conectar-se ao servidor MySQL, criar um banco de dados (se necessário) e, em seguida, definir uma função com parâmetros de entrada, um tipo de dado de retorno e a palavra-chave DETERMINISTIC.

Especificamente, você criou a função calculate_rectangle_area, que recebe o comprimento e a largura de um retângulo como entrada e retorna sua área. O corpo da função incluiu a declaração de uma variável local para armazenar a área calculada e o uso da instrução RETURN para retornar o resultado.

Em seguida, você aprendeu a usar essa função em uma consulta SELECT para realizar cálculos em dados armazenados em uma tabela. Você também testou a função com dados de exemplo adicionais para garantir sua precisão. Finalmente, você aprendeu como remover a função e a tabela para limpar seu ambiente de banco de dados.

Este laboratório forneceu uma introdução prática à criação e ao uso de funções personalizadas no MySQL, uma habilidade valiosa para encapsular lógica e melhorar a eficiência de suas operações de banco de dados.