MySQL Funções: String, Numérica, Definida pelo Usuário, Armazenada

O que são funções?

MySQL pode fazer muito mais do que apenas armazenar e recuperar dados. Nós também podemos realizar manipulações nos dados antes de recuperá-lo ou salvá-lo. Isso e onde MySQL Funções entram. Funções são simplesmente pedaços de código que realizam algumas operações e então retornam um resultado. Algumas funções aceitam parâmetros enquanto outras funções não aceitam parâmetros.

Vejamos brevemente um exemplo de MySQL função. Por padrão, MySQL salva tipos de dados de data no formato “AAAA-MM-DD”. Suponha que construímos uma aplicação e nossos usuários desejam que a data seja retornada no formato “DD-MM-AAAA”, podemos usar MySQL função incorporada DATE_FORMAT para conseguir isso. DATE_FORMAT é uma das funções mais utilizadas em MySQL. Analisaremos isso com mais detalhes à medida que desenvolvermos a lição.

Por que usar funções?

Por que usar funções

Com base no exemplo dado na introdução, pessoas com experiência em programação de computadores podem estar pensando “Por que se preocupar MySQL Funções? O mesmo efeito pode ser alcançado com linguagem de script/programação?” É verdade que podemos conseguir isso escrevendo alguns procedimentos/funções no programa aplicativo.

Voltando ao nosso exemplo DATE na introdução, para que nossos usuários obtenham os dados no formato desejado, a camada de negócios terá que fazer o processamento necessário.

Isso se torna um problema quando a aplicação precisa ser integrada a outros sistemas. Quando usamos MySQL funções como DATE_FORMAT, então podemos ter essa funcionalidade incorporada ao banco de dados e qualquer aplicativo que precise dos dados os obtém no formato necessário. Esse reduz o retrabalho na lógica de negócios e reduz inconsistências de dados.

Outra razão pela qual devemos considerar o uso MySQL funções é o fato de que pode ajudar a reduzir o tráfego de rede em aplicações cliente/servidor. A camada de negócios precisará apenas fazer chamadas para as funções armazenadas sem a necessidade de manipular os dados. Em média, o uso de funções pode ajudar a melhorar muito o desempenho geral do sistema.

Tipos de funções

Funções integradas

MySQL vem com uma série de funções integradas. Funções integradas são simplesmente funções já implementadas no MySQL servidor. Essas funções nos permitem executar diferentes tipos de manipulações nos dados. As funções internas podem ser basicamente categorizadas nas seguintes categorias mais usadas.

  • Funções de strings – operar em tipos de dados string
  • Funções numéricas – operar em tipos de dados numéricos
  • Funções de data – operar em tipos de dados de data
  • Funções agregadas – operar em todos os tipos de dados acima e produzir conjuntos de resultados resumidos.
  • Outras funções - MySQL também suporta outros tipos de funções integradas, mas limitaremos nossa lição apenas às funções mencionadas acima.

Vejamos agora em detalhes cada uma das funções mencionadas acima. Estaremos explicando as funções mais utilizadas usando nosso “Myflixdb”.

Funções de string

Já vimos o que as funções de string fazem. Veremos um exemplo prático que os utiliza. Em nossa tabela de filmes, os títulos dos filmes são armazenados usando combinações de letras maiúsculas e minúsculas. Suponha que queiramos obter uma lista de consulta que retorne os títulos dos filmes em letras maiúsculas. Podemos usar a função “UCASE” para fazer isso. Ele pega uma string como parâmetro e converte todas as letras em maiúsculas. O script mostrado abaixo demonstra o uso da função “UCASE”.

SELECT `movie_id`,`title`, UCASE(`title`)  FROM `movies`;

AQUI

  • UCASE(`title`) é a função integrada que recebe o título como parâmetro e o retorna em letras maiúsculas com o nome alternativo `upper_case_title`.

Executando o script acima em MySQL workbench contra o Myflixdb nos dá os seguintes resultados mostrados abaixo.

movie_id title UCASE('title')
16 67% Guilty 67% GUILTY
6 Angels and Demons ANGELS AND DEMONS
4 Code Name Black CODE NAME BLACK
5 Daddy's Little Girls DADDY'S LITTLE GIRLS
7 Davinci Code DAVINCI CODE
2 Forgetting Sarah Marshal FORGETTING SARAH MARSHAL
9 Honey mooners HONEY MOONERS
19 movie 3 MOVIE 3
1 Pirates of the Caribean 4 PIRATES OF THE CARIBEAN 4
18 sample movie SAMPLE MOVIE
17 The Great Dictator THE GREAT DICTATOR
3 X-Men X-MEN

MySQL suporta uma série de funções de string. Para obter uma lista completa de todas as funções de string integradas, consulte este link http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL .

Funções numéricas

Conforme mencionado anteriormente, essas funções operam em tipos de dados numéricos. Podemos realizar cálculos matemáticos em dados numéricos nas instruções SQL.

Operadores aritméticos

MySQL suporta os seguintes operadores aritmáticos que podem ser usados ​​para executar cálculos nas instruções SQL.

Nome Descrição
DIV Divisão inteira
/ Divisão
- Subtração
+ Adição
* Multiplicação
% ou MOD Módulo

Vejamos agora exemplos de cada um dos operadores acima

Divisão Inteira (DIV)

SELECT 23 DIV 6 ;

A execução do script acima nos dá os seguintes resultados.

3

Operador de divisão (/)

Vejamos agora o exemplo do operador de divisão. Modificaremos o exemplo DIV.

SELECT 23 / 6 ;

A execução do script acima nos dá os seguintes resultados.

3.8333

Operador de subtração (-)

Vejamos agora o exemplo do operador de subtração. Usaremos os mesmos valores dos dois exemplos anteriores

SELECT 23 - 6 ;

A execução do script acima nos dá 17

Operador de adição (+)

Vejamos agora o exemplo do operador de adição. Modificaremos o exemplo anterior.

SELECT 23 + 6 ;

A execução do script acima nos dá 29

Operador de multiplicação (*)

Vejamos agora o exemplo do operador de multiplicação. Usaremos os mesmos valores dos exemplos anteriores.

SELECT 23 * 6 AS `multiplication_result`;

A execução do script acima nos dá os seguintes resultados.

multiplicação_resultado
138

Operador de módulo (-)

O operador módulo divide N por M e nos dá o resto. Vejamos agora o exemplo do operador módulo. Usaremos os mesmos valores dos exemplos anteriores.

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

A execução do script acima nos dá 5

Vejamos agora algumas das funções numéricas comuns em MySQL.

Andar – esta função remove casas decimais de um número e o arredonda para o número mais baixo mais próximo. O script mostrado abaixo demonstra seu uso.

SELECT FLOOR(23 / 6) AS `floor_result`;

A execução do script acima nos dá os seguintes resultados.

Resultado_de_piso
3

redondo – esta função arredonda um número com casas decimais para o número inteiro mais próximo. O script mostrado abaixo demonstra seu uso.

SELECT ROUND(23 / 6) AS `round_result`;

A execução do script acima nos dá os seguintes resultados.

Resultado_rodada
4

Fronteira – esta função é usada para gerar um número aleatório, seu valor muda toda vez que a função é chamada. O script mostrado abaixo demonstra seu uso.

SELECT RAND() AS `random_result`;

Funções armazenadas

As funções armazenadas são como funções integradas, exceto que você mesmo precisa definir a função armazenada. Depois que uma função armazenada for criada, ela poderá ser usada em instruções SQL como qualquer outra função. A sintaxe básica para criar uma função armazenada é mostrada abaixo

CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

AQUI

  • “CRIAR FUNÇÃO sf_name ([parâmetro(s)])“ é obrigatório e diz MySQL server para criar uma função chamada `sf_name' com parâmetros opcionais definidos entre parênteses.
  • “Tipo de dados RETORNOS” é obrigatório e especifica o tipo de dados que a função deve retornar.
  • “DETERMINISTA” significa que a função retornará os mesmos valores se os mesmos argumentos forem fornecidos a ela.
  • "DECLARAÇÕES" é o código processual que a função executa.

Vamos agora dar uma olhada em um exemplo prático que implementa uma função interna. Suponha que queremos saber quais filmes alugados já passaram da data de retorno. Podemos criar uma função armazenada que aceita a data de retorno como parâmetro e então a compara com a data atual em MySQL servidor. Se a data atual for menor que a data de retorno do filme, retornamos “Não”, caso contrário, retornamos “Sim”. O script mostrado abaixo nos ajuda a conseguir isso.

DELIMITER |
CREATE FUNCTION sf_past_movie_return_date (return_date DATE)
  RETURNS VARCHAR(3)
   DETERMINISTIC
    BEGIN
     DECLARE sf_value VARCHAR(3);
        IF curdate() > return_date
            THEN SET sf_value = 'Yes';
        ELSEIF  curdate() <= return_date
            THEN SET sf_value = 'No';
        END IF;
     RETURN sf_value;
    END|

A execução do script acima criou a função armazenada `sf_past_movie_return_date`.

Vamos agora testar nossa função armazenada.

SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`)  FROM `movierentals`;

Executando o script acima em MySQL workbench contra o myflixdb nos dá os seguintes resultados.

movie_id membership_number return_date CURDATE() sf_past_movie_return_date('return_date')
1 1 NULL 04-08-2012 NULL
2 1 25-06-2012 04-08-2012 yes
2 3 25-06-2012 04-08-2012 yes
2 2 25-06-2012 04-08-2012 yes
3 3 NULL 04-08-2012 NULL

Funções definidas pelo usuário

MySQL também suporta funções definidas pelo usuário que estendem MySQL. Funções definidas pelo usuário são funções que você pode criar usando uma linguagem de programação como C, C++ etc. e depois adicione-os a MySQL servidor. Uma vez adicionados, eles podem ser usados ​​como qualquer outra função.

Resumo

  • As funções nos permitem aprimorar as capacidades de MySQL.
  • As funções sempre retornam um valor e podem opcionalmente aceitar parâmetros.
  • Funções integradas são funções fornecidas com MySQL. Eles podem ser categorizados de acordo com os tipos de dados em que operam, ou seja, strings, data e funções numéricas integradas.
  • Funções armazenadas são criadas pelo usuário dentro MySQL servidor e pode ser usado em instruções SQL.
  • Funções definidas pelo usuário são criadas fora MySQL e pode ser incorporado em MySQL servidor.