Funções MySQL: 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. É aí que entram as funções do MySQL. Funções são simplesmente pedaços de código que executam algumas operações e depois retornam um resultado. Algumas funções aceitam parâmetros enquanto outras funções não aceitam parâmetros.

Vejamos brevemente um exemplo de função MySQL. Por padrão, o MySQL salva tipos de dados de data no formato “AAAA-MM-DD”. Suponha que construímos um aplicativo e nossos usuários desejam que a data seja retornada no formato “DD-MM-AAAA”, podemos usar a função integrada DATE_FORMAT do MySQL para conseguir isso. DATE_FORMAT é uma das funções mais utilizadas no MySQL. Veremos isso com mais detalhestails à medida que desdobramos 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 preocupar-se com MySQL Functions? 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 funções MySQL como DATE_FORMAT, 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 Funções do MySQL é o fato de poder ajudar a reduzir o tráfego de rede em aplicativos 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

O MySQL vem com uma série de funções integradas. Funções integradas são simplesmente funções já implementadas no servidor MySQL. Essas funções nos permitem realizar diversos tipos de manipulações nos dados. As funções integradas podem ser basicamente categorizadas no seguintewing categorias mais utilizadas.

  • 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 – O 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`.

A execução do script acima no ambiente de trabalho MySQL no Myflixdb nos dá o seguintewing 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 no site 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 o seguintewing operadores aritmáticos que podem ser usados ​​para realizar 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á o seguintewing 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á o seguintewing 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á o seguintewing 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 no MySQL.

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

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

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

Resultado_de_piso
3

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

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

A execução do script acima nos dá o seguintewing 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 ao servidor MySQL 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.

Vejamos agora um exemplo prático que implementa uma função integrada. Suponha que queiramos saber quais filmes alugados já passaram da data de devolução. Podemos criar uma função armazenada que aceita a data de retorno como parâmetro e então compilarares com a data atual no servidor MySQL. 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`;

A execução do script acima no ambiente de trabalho MySQL no myflixdb nos dá o seguintewing 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

O MySQL também suporta funções definidas pelo usuário que estendem o 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, em seguida, adicione-os ao servidor MySQL. 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 o 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.
  • As funções armazenadas são criadas pelo usuário no servidor MySQL e podem ser usadas em instruções SQL.
  • Funções definidas pelo usuário são criadas fora do MySQL e podem ser incorporadas ao servidor MySQL.