Funções Professor: Ricardo Luis dos Santos IFSUL 2015
Clash of Students 3I Anular uma questão na prova Grupo Xerife Pontos Brogo Squad Hedo 1 First DBAs Bruno 1 300 FPS Gregory 4??? 2
Clash of Students 3K Facilidade no trabalho Grupo Xerife Pontos Massalaiada Caroline 0 Batata Giovana 1 Equipinhão Arthur 2 Marlon e nós Bruno 0 3
Agenda O que são Funções? Manipulação de datas e horas Manipulação de strings Manipulação de números Controle de Fluxo Variáveis Funções Personalizadas Exemplos de funções personalizadas Exercícios 4
O que são funções? São recursos fornecidos pelo SGBD (MySQL) para manipulação de dados em consultas SQL Oportunamente, podem ser criadas funções personalizadas pelos usuários para determinados banco de dados Permitem a apresentação de dados de uma forma personalizada e de acordo com a necessidade requerida em uma situação Calcular a média, o maior valor, o menor valor, formatar determinado campo entre outros 5
O que são funções? Existem diversos tipos de funções Números, String, Data, Tempo, XML, JSON, Conversão, Formatação As funções mais corriqueiras podem ser divididas em 4 grandes categorias Manipulação de datas e horas Manipulação de strings Manipulação de números Controle de fluxo 6
Funções Manipulação de datas e horas Essas funções permitem recuperar datas em determinados formatos Exemplos DATE_FORMAT(NOW(), %d de %M de %Y ) Formata a data informada DAY(NOW()) Retorna o dia da data informada MONTH(NOW()) Retorna o mês da data informada YEAR(NOW()) Retorna o ano da data informada HOUR(NOW()) Retorna as horas do tempo informado MINUTE(NOW()) Retorna os minutos do tempo informado SECOND(NOW()) Retorna os segundos do tempo informado 7
Funções Manipulação de datas e horas Essas funções permitem recuperar datas em determinados formatos Exemplos DATEDIFF(NOW(), '2001-09-20') Retorna a diferença entre duas datas (em dias) FROM_DAYS(500) Converte um inteiro (número de dias) em uma data TO_DAYS(NOW()) Converte a data para dias TIMESTAMP( 2001-09-20 ) Converte uma data para o formato time stamp TIMEDIFF(NOW(), TIMESTAMP('2001-09-20')) Retorna a diferença entre dois tempos 8
Funções Manipulação de datas e horas Exemplos CURDATE() Retorna a data atual CURTIME() Retorna a hora atual STR_TO_DATE('May 1, 2013','%M %d,%y') DAYNAME(NOW()) - Retorna o nome do dia da semana (inglês) MONTHNAME(NOW()) Retorna o nome do mês (inglês) WEEKDAY(NOW()) Retorna um inteiro para o dia da semana (0 para segunda... 6 para domingo) Operações em datas NOW() + INTERVAL '10 2' DAY_HOUR NOW() - INTERVAL '10' DAY 9
Funções Manipulação de datas e horas Operações em datas 10
Funções Manipulação de strings Permitem a modificação ou exibição de strings Exemplos CONCAT( Aqui é, o aluno X! ) Concatena duas ou mais strings LENGTH( teste ) Retorna o tamanho de uma string REPLACE( Adidas, Ad, Ard ) Altera uma string por um determinado valor REVERSE( Adidas ) Inverte uma string UPPER( Adidas ) Converte uma string pra maiúscula LOWER( ADiDaS ) Converte uma string para minúscula REPEAT('Adidas ', 10) Repete uma string um determinado número de vezes 11
Funções Manipulação de strings Exemplos CONCAT_WS(' ', 'Adidas','ORIGINALS') Concatena strings com um determinado separador STRCMP('text2', 'text') Compara duas strings retornando 0 se as strings são iguais FIND_IN_SET('b','a,b,c,d') Procura um caractere em uma string retornando o índice na qual é encontrada SUBSTRING( 922786588,1,7) Retorna uma substring iniciando no parâmetro 2 e com a quantidade informada no parâmetro 3 SUBSTRING_INDEX('www.mysql.com', '.', 2) Retorna uma substring de uma string, antes da ocorrência de um delimitador, o último parâmetro determinada a quantidade de repetições do delimitador 12
Funções Manipulação de números Modificar e realizar operações matemáticas Exemplos POW(2,3) Retorna o valor de 2 elevado a potência 3 SQRT(9) Retorna a raiz quadrada de um número TRUNCATE(1902.290, 1) Retorna um valor com um determinado número de casas decimais RAND() Randomiza um valor entre 0 e 1 CONV('10',10,2) Converte um determinado número de uma base informada para a última base informada FORMAT(12332.232412342341234, 2, 'de_de') Formata um determinado número, com a quantidade de casas decimais e o formato padrão para um determinado país 13
Funções Manipulação de números Modificar e realizar operações matemáticas Exemplos ROUND(1.6, 2) Arredonda corretamente valores (para cima ou para baixo), se passado o segundo parâmetro utiliza essa informação para a quantidade de casas decimais CEIL(1.2) Arredonda sempre para cima FLOOR(1.999) Arredonda sempre para baixo CAST(12333.777 as DECIMAL(10,2)) Permite realizar formatações e conversões em dados 14
Funções Controle de Fluxo São funções que permitem controlar o fluxo de uma determinada operação Normalmente utilizadas quando existe a necessidade de verificar uma condição para então retornar o valor de uma determinada consulta IF(1>2,'verdadeiro','falso') Retorna um determinado valor após analisar uma expressão relacional (e.g., > ) e/ou lógica (e.g., ) CASE 1 WHEN 0 THEN 'zero' WHEN 1 THEN 'um' END Retorna um valor conforme os diversos casos descritos 15
Variáveis Varáveis definidas pelo Usuário Utilizam a cláusula DECLARE Variáveis default do MySQL Utilizam a cláusula @@ 16
Funções Personalizadas Uma função é usada para gerar um valor que pode ser usado em uma expressão O valor é geralmente baseado em um ou mais parâmetros fornecidos à função É executada como parte de uma expressão 17
Funções Personalizadas SINTAXE CREATE FUNCTION nome_função (parâmetros) RETURNS tipo_dados código_da_função Invocando uma função SELECT nome_função(parâmetros) 18
Funções Personalizadas Podemos também criar funções personalizadas! 19
Funções Personalizadas Podemos também criar funções personalizadas! Substitui temporariamente o ; enquanto símbolo finalizador de comandos SQL Cria a função digitei com um parâmetro de entrada. 20
Funções Personalizadas Podemos também criar funções personalizadas! Informa o tipo de retorno e a codificação do mesmo (opcional, somente utilizado quando o retorno será um texto Retorno da função. Observe os slides anteriores para determinar o que a função CONCAT faz. 21
Funções Personalizadas Podemos também criar funções personalizadas! Encerra o comando CREATE FUNCTION com o símbolo delimitador temporário. Altera novamente o símbolo delimitador para o símbolo default. 22
Funções Personalizadas Podemos também criar funções personalizadas! O que essa função faz? 23
Funções Personalizadas Podemos também criar funções personalizadas! O que essa função faz? 24
Funções Personalizadas Podemos também criar funções personalizadas! O que essa função faz? Observe as diferenças com as funções anteriores... 25
Funções Personalizadas Lista de exercícios 26 Utilize a base de dados da loja, fornecida na aula anterior e disponível no site Crie e utilize as seguintes funções em diferentes consultas 1. Retorne o número mais o nome do mês em português (1 - Janeiro) de acordo com o parâmetro informado (cliente e mês de venda) 2. Retorne o número mais o nome do dia da semana (0 - Segunda) em português (Exiba o número do pedido, nome do cliente e dia da semana para entrega) 3. Retorne o gentílico dos clientes de acordo com o estado onde moram (gaúcho, catarinense ou paranaense) (cliente e gentílico) 4. Retorne a Inscrição Estadual no formato #######-## (Exiba os dados do cliente com a IE formatada corretamente utilizando a função criada) 5. Retorne o valor total do salário de um vendedor (salário fixo + comissão calculada) (vendedor + salário total)
Funções Professor: Ricardo Luis dos Santos IFSUL 2015