Funções MySQL: String, Numérico, Definido pelo Usuário, Armazenado

O que são funções?

O 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 realizam algumas operações e, em seguida, 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 fazer isso. DATE_FORMAT é uma das funções mais usadas no MySQL. Vamos examiná-lo com mais detalhes à medida que desenvolvermos a lição.

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 incomodar as funções do MySQL? O mesmo efeito pode ser alcançado com a linguagem de script / programação? ' É verdade que podemos conseguir isso escrevendo alguns procedimentos / funções no programa de aplicação.

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 o aplicativo precisa se integrar a outros sistemas. Quando usamos funções MySQL, como DATE_FORMAT, podemos ter essa funcionalidade embutida no 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 as inconsistências de dados.

Outra razão pela qual devemos considerar o uso As funções do MySQL são o fato de que podem 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 várias funções integradas. Funções embutidas são simplesmente funções já implementadas no servidor MySQL. Essas funções nos permitem realizar diferentes tipos de manipulações nos dados. As funções integradas podem ser basicamente categorizadas nas seguintes categorias mais utilizadas.

  • Funções de strings - operar em tipos de dados de 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 oferece suporte a outros tipos de funções integradas, mas limitaremos nossa lição apenas às funções nomeadas acima.

Vamos agora examinar cada uma das funções mencionadas acima em detalhes. 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 usa. 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 desejamos obter uma lista de consulta que retorna os títulos dos filmes em letras maiúsculas. Podemos usar a função 'UCASE' para fazer isso. Ele recebe 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 incorporada que recebe o título como um parâmetro e o retorna em letras maiúsculas com o nome alternativo` upper_case_title`.

Executar o script acima no ambiente de trabalho MySQL no Myflixdb nos dá os seguintes resultados mostrados abaixo.

movie_idtitleUCASE('title')
1667% Guilty67% GUILTY
6Angels and DemonsANGELS AND DEMONS
4Code Name BlackCODE NAME BLACK
5Daddy's Little GirlsDADDY'S LITTLE GIRLS
7Davinci CodeDAVINCI CODE
2Forgetting Sarah MarshalFORGETTING SARAH MARSHAL
9Honey moonersHONEY MOONERS
19movie 3MOVIE 3
1Pirates of the Caribean 4PIRATES OF THE CARIBEAN 4
18sample movieSAMPLE MOVIE
17The Great DictatorTHE GREAT DICTATOR
3X-MenX-MEN

O MySQL oferece suporte a várias funções de string. Para uma lista completa de todas as funções de string incorporadas, 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 aritemáticos

O MySQL suporta os seguintes 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 ;

Executar o script acima nos dá os seguintes resultados.

3

Operador de divisão (/)

Vejamos agora o exemplo do operador de divisão. Vamos modificar o exemplo DIV.

SELECT 23 / 6 ;

Executar o 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 ;

Executar o script acima nos dá 17

Operador de adição (+)

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

SELECT 23 + 6 ;

Executar o 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`;

Executar o script acima nos dá os seguintes resultados.

multiplication_result

138

Módulo do operador (-)

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

SELECT 23 % 6 ;

OU

SELECT 23 MOD 6 ; 

Executar o script acima nos dá 5

Vamos agora dar uma olhada em algumas das funções numéricas comuns no MySQL.

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

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

Executar o script acima nos dá os seguintes resultados.

Floor_result

3

Volta - 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`;

Executar o script acima nos dá os seguintes resultados.

Round_result

4

Linha - 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 iguais às funções integradas, exceto que você mesmo precisa definir a função armazenada. Depois que uma função armazenada é criada, ela pode 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 RETURNS' é obrigatório e especifica o tipo de dados que a função deve retornar.
  • 'DETERMINISTIC' significa que a função retornará os mesmos valores se os mesmos argumentos forem fornecidos a ela.
  • 'AFIRMAÇÕES' é o código procedural que a função executa.

Vejamos agora um exemplo prático que implementa uma função incorporada. Suponha que queremos saber quais filmes alugados passaram da data de devolução. Podemos criar uma função armazenada que aceita a data de retorno como parâmetro e depois a compara com a data atual no servidor MySQL. Se a data atual for inferior à 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`;

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os seguintes resultados.

movie_idmembership_numberreturn_dateCURDATE()sf_past_movie_return_date('return_date')
11NULL04-08-2012NULL
2125-06-201204-08-2012yes
2325-06-201204-08-2012yes
2225-06-201204-08-2012yes
33NULL04-08-2012NULL

Funções definidas pelo usuário

O MySQL também oferece suporte a 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, adicioná-las ao servidor MySQL. Depois de adicionados, eles podem ser usados ​​como qualquer outra função.

Resumo

  • As funções nos permitem aprimorar os recursos do 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 nos quais operam, ou seja, strings, data e funções numéricas incorporadas.
  • As funções armazenadas são criadas pelo usuário no servidor MySQL e podem ser usadas em instruções SQL.
  • As funções definidas pelo usuário são criadas fora do MySQL e podem ser incorporadas ao servidor MySQL.